Udostępnij za pośrednictwem


Pobieranie obiektu blob za pomocą języka Go

W tym artykule pokazano, jak pobrać obiekt blob przy użyciu modułu klienta usługi Azure Storage dla języka Go. Dane obiektu blob można pobrać do różnych miejsc docelowych, w tym lokalną ścieżkę pliku, strumień lub ciąg tekstowy.

Wymagania wstępne

Konfigurowanie środowiska

Jeśli nie masz istniejącego projektu, w tej sekcji pokazano, jak skonfigurować projekt do pracy z modułem klienta usługi Azure Blob Storage dla języka Go. Kroki obejmują instalację modułu, dodawanie import ścieżek i tworzenie autoryzowanego obiektu klienta. Aby uzyskać szczegółowe informacje, zobacz Wprowadzenie do usługi Azure Blob Storage i Go.

Instalowanie modułów

Zainstaluj moduł azblob przy użyciu następującego polecenia:

go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob

Aby uwierzytelnić się przy użyciu identyfikatora Entra firmy Microsoft (zalecane), zainstaluj azidentity moduł przy użyciu następującego polecenia:

go get github.com/Azure/azure-sdk-for-go/sdk/azidentity

Dodawanie ścieżek importu

W pliku kodu dodaj następujące ścieżki importu:

import (
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

Te ścieżki importu reprezentują minimum wymagane do rozpoczęcia pracy. Niektóre przykłady kodu w tym artykule mogą wymagać dodatkowych ścieżek importu. Aby uzyskać szczegółowe informacje i przykładowe użycie, zobacz Przykłady kodu.

Tworzenie obiektu klienta

Aby połączyć aplikację z usługą Blob Storage, utwórz obiekt klienta przy użyciu polecenia azblob. NewClient. W poniższym przykładzie pokazano, jak utworzyć obiekt klienta przy użyciu DefaultAzureCredential autoryzacji:

func getServiceClientTokenCredential(accountURL string) *azblob.Client {
    // Create a new service client with token credential
    credential, err := azidentity.NewDefaultAzureCredential(nil)
    handleError(err)

    client, err := azblob.NewClient(accountURL, credential, nil)
    handleError(err)

    return client
}

Autoryzacja

Mechanizm autoryzacji musi mieć niezbędne uprawnienia do wykonania operacji pobierania. Aby uzyskać autoryzację przy użyciu identyfikatora Entra firmy Microsoft (zalecane), potrzebujesz wbudowanej kontroli dostępu opartej na rolach platformy Azure czytnika danych obiektów blob usługi Storage lub nowszego. Aby dowiedzieć się więcej, zobacz wskazówki dotyczące autoryzacji dotyczące pobierania obiektu blob (interfejsu API REST).

Pobieranie obiektu blob

Aby pobrać obiekt blob, możesz użyć dowolnej z następujących metod:

Pobieranie do ścieżki pliku

Poniższy przykład pobiera obiekt blob do ścieżki pliku:

func downloadBlobToFile(client *azblob.Client, containerName string, blobName string) {
    // Create or open a local file where we can download the blob
    file, err := os.Create("path/to/sample/file")
    handleError(err)

    // Download the blob to the local file
    _, err = client.DownloadFile(context.TODO(), containerName, blobName, file, nil)
    handleError(err)
}

Pobieranie do strumienia

Poniższy przykład pobiera obiekt blob do strumienia i odczytuje go ze strumienia, wywołując metodę NewRetryReader .

func downloadBlobToStream(client *azblob.Client, containerName string, blobName string) {
    // Download the blob
    get, err := client.DownloadStream(context.TODO(), containerName, blobName, nil)
    handleError(err)

    downloadedData := bytes.Buffer{}
    retryReader := get.NewRetryReader(context.TODO(), &azblob.RetryReaderOptions{})
    _, err = downloadedData.ReadFrom(retryReader)
    handleError(err)

    err = retryReader.Close()
    handleError(err)

    // Print the contents of the blob we created
    fmt.Println("Blob contents:")
    fmt.Println(downloadedData.String())
}

Określanie opcji transferu danych do pobrania

Opcje konfiguracji można ustawić podczas pobierania obiektu blob w celu zoptymalizowania wydajności. Dostępne są następujące opcje konfiguracji dla operacji pobierania:

  • BlockSize: rozmiar każdego bloku podczas pobierania blokowego obiektu blob. Wartość domyślna to 4 MB.
  • Concurrency: maksymalna liczba połączeń równoległych do użycia podczas pobierania. Domyślna wartość wynosi 5.

Te opcje są dostępne podczas pobierania przy użyciu następujących metod:

Metoda DownloadStream nie obsługuje tych opcji i pobiera dane w jednym żądaniu.

Aby uzyskać więcej informacji na temat limitów rozmiaru transferu dla usługi Blob Storage, zobacz Skalowanie obiektów docelowych dla usługi Blob Storage.

W poniższym przykładzie kodu pokazano, jak określić opcje transferu danych przy użyciu opcji DownloadFileOptions. Wartości podane w tym przykładzie nie są przeznaczone do zalecenia. Aby prawidłowo dostosować te wartości, należy wziąć pod uwagę konkretne potrzeby aplikacji.

func downloadBlobTransferOptions(client *azblob.Client, containerName string, blobName string) {
    // Create or open a local file where we can download the blob
    file, err := os.Create("path/to/sample/file")
    handleError(err)

    // Download the blob to the local file
    _, err = client.DownloadFile(context.TODO(), containerName, blobName, file,
        &azblob.DownloadFileOptions{
            BlockSize:   int64(4 * 1024 * 1024), // 4 MiB
            Concurrency: uint16(2),
        })
    handleError(err)
}

Aby dowiedzieć się więcej na temat dostrajania opcji transferu danych, zobacz Dostosowywanie wydajności przekazywania i pobierania za pomocą języka Go.

Uwaga

Przykłady kodu w tym przewodniku ułatwiają rozpoczęcie pracy z usługami Azure Blob Storage i Go. Należy zmodyfikować obsługę błędów i Context wartości, aby spełniały potrzeby aplikacji.

Zasoby

Aby dowiedzieć się więcej na temat pobierania obiektów blob przy użyciu modułu klienta usługi Azure Blob Storage dla języka Go, zobacz następujące zasoby.

Przykłady kodu

Operacje interfejsu API REST

Zestaw Azure SDK dla języka Go zawiera biblioteki oparte na interfejsie API REST platformy Azure, które umożliwiają interakcję z operacjami interfejsu API REST za pomocą znanych paradygmatów języka Go. Metody biblioteki klienta do pobierania obiektów blob używają następującej operacji interfejsu API REST:

Zasoby modułu klienta

  • Ten artykuł jest częścią przewodnika dla deweloperów usługi Blob Storage dla języka Go. Aby dowiedzieć się więcej, zobacz pełną listę artykułów z przewodnika dla deweloperów na stronie Tworzenie aplikacji języka Go.