Stažení objektu blob pomocí Go
Tento článek ukazuje, jak stáhnout objekt blob pomocí klientského modulu Azure Storage pro Go. Data objektů blob si můžete stáhnout do různých cílů, včetně místní cesty k souboru, datového proudu nebo textového řetězce.
Požadavky
- Předplatné Azure – vytvoření bezplatného předplatného
- Účet úložiště Azure – Vytvoření účtu úložiště
- Go 1.18+
Nastavení prostředí
Pokud nemáte existující projekt, v této části se dozvíte, jak nastavit projekt pro práci s modulem klienta Azure Blob Storage pro Go. Kroky zahrnují instalaci modulu, přidání import
cest a vytvoření autorizovaného klientského objektu. Podrobnosti najdete v tématu Začínáme se službou Azure Blob Storage a Go.
Instalace modulů
Pomocí následujícího příkazu nainstalujte modul azblob:
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Pokud se chcete ověřit pomocí Microsoft Entra ID (doporučeno), nainstalujte azidentity
modul pomocí následujícího příkazu:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Přidání cest importu
Do souboru kódu přidejte následující cesty importu:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
Tyto cesty importu představují minimum potřebné k zahájení práce. Některé příklady kódu v tomto článku můžou vyžadovat další cesty importu. Konkrétní podrobnosti a ukázkové použití najdete v ukázkách kódu.
Vytvoření objektu klienta
Pokud chcete připojit aplikaci ke službě Blob Storage, vytvořte objekt klienta pomocí příkazu azblob. NewClient. Následující příklad ukazuje, jak vytvořit objekt klienta pro DefaultAzureCredential
autorizaci:
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
}
Autorizace
Autorizační mechanismus musí mít potřebná oprávnění k provedení operace stahování. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete integrovanou roli Storage Blob Data Reader služby Azure RBAC nebo vyšší. Další informace najdete v pokynech pro autorizaci k získání objektu blob (REST API).
Stažení objektu blob
Ke stažení objektu blob můžete použít některou z následujících metod:
Stažení do cesty k souboru
Následující příklad stáhne objekt blob do cesty k souboru:
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)
}
Stažení do streamu
Následující příklad stáhne objekt blob do datového proudu a načte z datového proudu voláním NewRetryReader metoda.
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())
}
Určení možností přenosu dat ke stažení
Možnosti konfigurace můžete nastavit při stahování objektu blob za účelem optimalizace výkonu. Pro operace stahování jsou k dispozici následující možnosti konfigurace:
BlockSize
: Velikost každého bloku při stahování objektu blob bloku. Výchozí hodnota je 4 MB.Concurrency
: Maximální počet paralelních připojení, která se mají použít během stahování. Výchozí hodnota je 5.
Tyto možnosti jsou k dispozici při stahování pomocí následujících metod:
Metoda DownloadStream tyto možnosti nepodporuje a stahuje data v rámci jednoho požadavku.
Další informace o omezení velikosti přenosu pro Blob Storage najdete v tématu Cíle škálování pro úložiště objektů blob.
Následující příklad kódu ukazuje, jak určit možnosti přenosu dat pomocí DownloadFileOptions. Hodnoty uvedené v této ukázce nejsou určené jako doporučení. Pokud chcete tyto hodnoty správně vyladit, musíte zvážit konkrétní potřeby vaší aplikace.
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)
}
Další informace o ladění možností přenosu dat najdete v tématu Ladění výkonu pro nahrávání a stahování pomocí Go.
Poznámka:
Ukázky kódu v této příručce vám pomůžou začít se službou Azure Blob Storage a Go. Měli byste upravit zpracování chyb a Context
hodnoty tak, aby vyhovovaly potřebám vaší aplikace.
Zdroje informací
Další informace o tom, jak stáhnout objekty blob pomocí klientského modulu služby Azure Blob Storage pro Go, najdete v následujících zdrojích informací.
Ukázky kódu
- Zobrazení ukázek kódu z tohoto článku (GitHub)
Operace rozhraní REST API
Sada Azure SDK for Go obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat Go. Metody klientské knihovny pro stahování objektů blob používají následující operaci rozhraní REST API:
- Získání objektu blob (REST API)
Prostředky klientského modulu
Související obsah
- Tento článek je součástí příručky pro vývojáře služby Blob Storage pro Go. Další informace najdete v úplném seznamu článků příručky pro vývojáře na webu Sestavení aplikace Go.