Megosztás a következőn keresztül:


Blokkblob feltöltése a Go használatával

Ez a cikk bemutatja, hogyan tölthet fel blobot a Go-hoz készült Azure Storage-ügyfélmodullal. Adatokat feltölthet egy blokkblobba egy fájl elérési útjáról, egy streamből, egy bináris objektumból vagy egy szöveges sztringből. Indexcímkéket tartalmazó blobokat is feltölthet.

Előfeltételek

Saját környezet beállítása

Ha nem rendelkezik meglévő projekttel, ez a szakasz bemutatja, hogyan állíthat be egy projektet a Go Azure Blob Storage-ügyfélmoduljának használatára. A lépések közé tartozik a modul telepítése, az elérési utak hozzáadása import és egy engedélyezett ügyfélobjektum létrehozása. További részletekért tekintse meg az Azure Blob Storage és a Go használatának első lépéseit.

Modulok telepítése

Telepítse az azblob modult a következő paranccsal:

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

A Microsoft Entra-azonosítóval való hitelesítéshez (ajánlott) telepítse a azidentity modult a következő paranccsal:

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

Importálási útvonalak hozzáadása

A kódfájlban adja hozzá a következő importálási útvonalakat:

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

A cikkben szereplő néhány példakód további importálási útvonalakat igényelhet. További részletekért és példahasználatért tekintse meg a kódmintákat.

Ügyfélobjektum létrehozása

Ha egy alkalmazást a Blob Storage-hoz szeretne csatlakoztatni, hozzon létre egy ügyfélobjektumot az azblob használatával . NewClient. Az alábbi példa bemutatja, hogyan hozhat létre ügyfélobjektumot DefaultAzureCredential engedélyezés céljából:

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
}

Engedélyezés

Az engedélyezési mechanizmusnak rendelkeznie kell a blob feltöltéséhez szükséges engedélyekkel. A Microsoft Entra-azonosítóval való engedélyezéshez (ajánlott) az Azure RBAC beépített szerepkörű Storage Blob Data Közreműködő vagy újabb szerepkörre van szüksége. További információkért tekintse meg a Put Blob (REST API) és a Put Block (REST API) engedélyezési útmutatóját.

Adatok feltöltése blokkblobba

Blob feltöltéséhez hívja meg az alábbi metódusok egyikét az ügyfélobjektumból:

A feltöltés végrehajtásához az ügyfélkódtár használhatja a Put Blob vagy a Put Block hívások sorozatát, majd a következőtPut Block List: . Ez a viselkedés az objektum teljes méretétől és az adatátviteli beállítások beállításától függ.

Blokkblob feltöltése helyi fájl elérési útjáról

Az alábbi példa feltölt egy helyi fájlt egy blokkblobba:

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)
}

Blokkblob feltöltése streamből

Az alábbi példa létrehoz egy példányt Reader , és úgy olvas egy sztringből, mintha bájtos adatfolyam lenne. A stream ezután fel lesz töltve egy blokkblobba:

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)
}

Bináris adatok feltöltése blokkblobba

Az alábbi példa bináris adatokat tölt fel egy blokkblobba:

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)
}

Blokkblob feltöltése indexcímkékkel

Az alábbi példa egy indexcímkéket tartalmazó blokkblobot tölt fel:

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)
}

Blokkblob feltöltése konfigurációs beállításokkal

Blob feltöltésekor megadhatja az ügyfélkódtár konfigurációs beállításait. Ezek a lehetőségek a teljesítmény javítása, a megbízhatóság növelése és a költségek optimalizálása érdekében hangolhatók. Az alábbi példakód bemutatja, hogyan definiálhat konfigurációs beállításokat egy feltöltési művelethez.

A feltöltés adatátviteli beállításainak megadása

A blobok feltöltésekor a konfigurációs beállításokat a teljesítmény optimalizálása érdekében állíthatja be. A feltöltési műveletekhez a következő konfigurációs beállítások érhetők el:

  • BlockSize: Az egyes blokkok mérete blokkblob feltöltésekor. Az alapértelmezett érték 1 MiB.
  • Concurrency: A feltöltés során használandó párhuzamos kapcsolatok maximális száma. Az alapértelmezett érték 1.

A Blob Storage átviteli méretkorlátjairól további információt a Blob Storage céljainak méretezése című témakörben talál.

Az alábbi példakód bemutatja, hogyan adhatja meg az adatátviteli beállításokat az UploadFileOptions használatával. Az ebben a mintában megadott értékek nem javaslatok. Ezeknek az értékeknek a megfelelő finomhangolásához figyelembe kell vennie az alkalmazás adott igényeit.

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)
}

Feljegyzés

Az útmutatóban szereplő kódminták az Azure Blob Storage és a Go használatának megkezdéséhez nyújtanak segítséget. Az alkalmazás igényeinek megfelelően módosítania kell a hibakezelést és Context az értékeket.

Források

Ha többet szeretne megtudni a blobok Go-hoz készült Azure Blob Storage-ügyfélmodullal való feltöltéséről, tekintse meg az alábbi erőforrásokat.

Kódminták

REST API-műveletek

Az Azure SDK for Go olyan kódtárakat tartalmaz, amelyek az Azure REST API-ra épülnek, lehetővé téve a REST API-műveletek használatát ismert Go-paradigmákon keresztül. A blobok feltöltéséhez használt ügyfélkódtár-metódusok a következő REST API-műveleteket használják:

  • Blob elhelyezése (REST API)
  • Blokk elhelyezése (REST API)

Ügyfélmodul erőforrásai

Lásd még