Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek ukazuje, jak nahrát objekt blob pomocí klientského modulu Azure Storage pro Go. Data můžete nahrát do blokového blobu z cesty k souboru, datového proudu, binárního objektu nebo textového řetězce. Můžete také nahrát objekty blob s indexovými značkami.
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 pomocí DefaultAzureCredential k 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 nahrání objektu blob. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete integrovanou roli Azure RBAC Storage Blob Data Contributor nebo vyšší. Další informace najdete v pokynech k autorizaci pro Put Blob (REST API) a Put Block (REST API).
Nahrání dat do objektu blob bloku
Pokud chcete nahrát objekt blob, zavolejte některou z následujících metod z objektu klienta:
K nahrání může klientská knihovna použít buď Put Blob, nebo řadu volání Put Block následovaných Put Block List. Toto chování závisí na celkové velikosti objektu a způsobu nastavení možností přenosu dat.
Poznámka:
Klientské knihovny Azure Storage nepodporují souběžné zápisy do stejného objektu blob. Pokud vaše aplikace vyžaduje více procesů zápisů do stejného objektu blob, měli byste implementovat strategii řízení souběžnosti, která poskytuje předvídatelné prostředí. Další informace o strategiích souběžnosti najdete v tématu Správa souběžnosti ve službě Blob Storage.
Nahrání blokového blobu z místní souborové cesty
Následující příklad nahraje místní soubor do blokového blobu:
func uploadBlobFile(client *azblob.Client, containerName string, blobName string) {
// Open the file for reading
file, err := os.OpenFile("path/to/sample/file", os.O_RDONLY, 0)
handleError(err)
defer file.Close()
// Upload the file to the specified container with the specified blob name
_, err = client.UploadFile(context.TODO(), containerName, blobName, file, nil)
handleError(err)
}
Nahrání bloku blobu ze streamu
Následující příklad vytvoří Reader instanci a načte z řetězce, jako by šlo o datový proud bajtů. Stream se pak nahraje do blokového blobu:
func uploadBlobStream(client *azblob.Client, containerName string, blobName string) {
data := "Hello, world!"
blobContentReader := strings.NewReader(data)
// Upload the file to the specified container with the specified blob name
_, err := client.UploadStream(context.TODO(), containerName, blobName, blobContentReader, nil)
handleError(err)
}
Nahrání binárních dat do blokového blobu
Následující příklad nahrává binární data do blokového blobu:
func uploadBlobBuffer(client *azblob.Client, containerName string, blobName string) {
// Create a buffer with the content of the file to upload
data := []byte("Hello, world!")
// Upload the data to a block blob
_, err := client.UploadBuffer(context.TODO(), containerName, blobName, data, nil)
handleError(err)
}
** Nahrajte blockový blob s indexovými značkami
Následující příklad nahraje blokový blob a přiřadí mu značky indexu:
func uploadBlobWithIndexTags(client *azblob.Client, containerName string, blobName string) {
// Create a buffer with the content of the file to upload
data := []byte("Hello, world!")
// Upload the data to a block blob with index tags
_, err := client.UploadBuffer(context.TODO(), containerName, blobName, data, &azblob.UploadBufferOptions{
Tags: map[string]string{
"key1": "value1",
"key2": "value2",
},
})
handleError(err)
}
Nahrajte blokový blob s konfiguračními možnostmi
Při nahrávání objektu blob můžete definovat možnosti konfigurace klientské knihovny. Tyto možnosti je možné ladit, aby se zlepšil výkon, zlepšila spolehlivost a optimalizovala náklady. Následující příklady kódu ukazují, jak definovat možnosti konfigurace pro operaci nahrávání.
Určení možností přenosu dat pro nahrání
Možnosti konfigurace můžete nastavit při nahrávání objektu blob za účelem optimalizace výkonu. Pro operace nahrávání jsou k dispozici následující možnosti konfigurace:
-
BlockSize: Velikost každého bloku při nahrávání blokového objektu blob. Výchozí hodnota je 4 MB. -
Concurrency: Maximální počet paralelních připojení, která se mají použít při nahrávání. Výchozí hodnota je 5.
Tyto možnosti konfigurace jsou k dispozici při nahrávání pomocí následujících metod:
Metoda Upload tyto možnosti nepodporuje a nahraje data do jednoho požadavku.
Další informace o omezeních velikosti přenosu pro Blob Storage najdete v tématu Cíle škálování pro Blob Storage.
Následující příklad kódu ukazuje, jak určit možnosti přenosu dat pomocí UploadFileOptions. 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 uploadBlobWithTransferOptions(client *azblob.Client, containerName string, blobName string) {
// Open the file for reading
file, err := os.OpenFile("path/to/sample/file", os.O_RDONLY, 0)
handleError(err)
defer file.Close()
// Upload the data to a block blob with transfer options
_, err = client.UploadFile(context.TODO(), containerName, blobName, file,
&azblob.UploadFileOptions{
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 nahrávání objektů blob pomocí klientského modulu 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 nahrávání objektů blob používají následující operace rozhraní REST API:
- Vložení objektu blob (REST API)
- Put Block (REST API)
Prostředky klientského modulu
Viz také
- Správa a vyhledání dat objektů blob v Azure pomocí indexových značek
- Použití značek indexu objektů blob ke správě a hledání dat ve službě Azure Blob Storage
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.