Sdílet prostřednictvím


Správa vlastností a metadat objektů blob pomocí Go

Kromě dat, která obsahují, podporují objekty blob systémové vlastnosti a uživatelsky definovaná metadata. Tento článek ukazuje, jak spravovat vlastnosti systému a uživatelsky definovaná metadata pomocí modulu klienta Azure Storage pro Go.

Požadavky

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

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í pro práci s vlastnostmi kontejneru nebo metadaty. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete k operacím získání integrovanou roli Storage Blob Data Reader nebo vyšší roli Azure RBAC a přispěvatel dat objektů blob služby Storage nebo vyšší pro nastavené operace. Další informace najdete v pokynech k autorizaci k nastavení vlastností objektů blob (REST API), získání vlastností objektů blob (REST API), nastavení metadat objektů blob (REST API) nebo získání metadat objektů blob (REST API).

O vlastnostech a metadatech

  • Systémové vlastnosti: Systémové vlastnosti existují pro každý prostředek úložiště objektů blob. Některé z nich můžou být přečtené nebo nastavené, zatímco jiné jsou jen pro čtení. Pod popisky některé systémové vlastnosti odpovídají určitým standardním hlavičkám HTTP. Klientská knihovna Azure Storage pro Go tyto vlastnosti udržuje za vás.

  • Uživatelsky definovaná metadata: Uživatelsky definovaná metadata se skládají z jednoho nebo více párů název-hodnota, které zadáte pro prostředek úložiště objektů blob. Metadata můžete použít k uložení dalších hodnot s prostředkem. Hodnoty metadat jsou určené jenom pro vaše vlastní účely a nemají vliv na chování prostředku.

    Páry názvů a hodnot metadat jsou platné hlavičky HTTP a měly by dodržovat všechna omezení, která se řídí hlavičkami HTTP. Další informace opožadavch

Poznámka:

Značky indexu objektů blob také poskytují možnost ukládat libovolné uživatelem definované atributy klíče a hodnoty společně s prostředkem úložiště objektů blob v Azure. Podobně jako metadata se automaticky indexují a prohledávají nativní službou blob pouze značky indexu objektů blob. Metadata nelze indexovat a dotazovat, pokud nevyužíváte samostatnou službu, jako je Azure Search.

Další informace o této funkci najdete v tématu Správa a vyhledání dat ve službě Azure Blob Storage pomocí indexu objektů blob (Preview).

Nastavení a načtení vlastností

Pokud chcete nastavit vlastnosti objektu blob, zavolejte z objektu klienta objektu blob následující metodu:

Všechny vlastnosti, které nejsou explicitně nastaveny, jsou vymazány. Pokud chcete zachovat všechny existující vlastnosti, můžete nejprve načíst vlastnosti objektu blob a pak je použít k naplnění hlaviček, které se neaktualizují.

Následující příklad kódu nastaví BlobContentType vlastnosti a BlobContentLanguage systémové vlastnosti objektu blob při zachování existujících vlastností:

func setBlobProperties(client *azblob.Client, containerName string, blobName string) {
    // Reference the blob as a client object
    blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)

    // Get the existing blob properties
    resp, err := blobClient.GetProperties(context.TODO(), nil)
    handleError(err)

    // Set the new blob properties and include existing properties
    _, err = blobClient.SetHTTPHeaders(context.TODO(), blob.HTTPHeaders{
        BlobContentType:        to.Ptr("text/plain"),
        BlobContentLanguage:    to.Ptr("en-us"),
        BlobContentEncoding:    resp.ContentEncoding,
        BlobContentDisposition: resp.ContentDisposition,
        BlobCacheControl:       resp.CacheControl,
    }, nil)
    handleError(err)
}

Pokud chcete načíst vlastnosti objektu blob, zavolejte z objektu klienta objektu blob následující metodu:

Následující příklad kódu získá systémové vlastnosti objektu blob a zobrazí některé hodnoty:

func getBlobProperties(client *azblob.Client, containerName string, blobName string) {
    // Reference the blob as a client object
    blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)

    // Get the blob properties
    resp, err := blobClient.GetProperties(context.TODO(), nil)
    handleError(err)

    // Print the blob properties
    fmt.Printf("Content type: %v\n", *resp.ContentType)
    fmt.Printf("Content language: %v\n", *resp.ContentLanguage)
}

Nastavení a načtení metadat

Metadata můžete zadat jako jeden nebo více párů název-hodnota v objektu blob nebo prostředku kontejneru. Pokud chcete nastavit metadata, odešlete mapování obsahující páry name-value pomocí následující metody z objektu klienta objektu blob:

Následující příklad kódu nastaví metadata objektu blob:

func setBlobMetadata(client *azblob.Client, containerName string, blobName string) {
    // Reference the blob as a client object
    blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)

    // Set the blob metadata
    var metadata = make(map[string]*string)
    metadata["key1"] = to.Ptr("value1")
    metadata["key2"] = to.Ptr("value2")

    _, err := blobClient.SetMetadata(context.TODO(), metadata, nil)
    handleError(err)
}

Pokud chcete načíst metadata, zavolejte metodu GetProperties z objektu klienta objektu blob a získejte přístup k Metadata poli v odpovědi. Metoda GetProperties načte vlastnosti objektu blob a metadata voláním operace Get Blob Properties a Get Blob Metadata operace.

Následující příklad kódu načte metadata objektu blob a vytiskne jednotlivé páry klíč/hodnota:

func getBlobMetadata(client *azblob.Client, containerName string, blobName string) {
    // Reference the blob as a client object
    blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)

    // Get the blob properties, which includes metadata
    resp, err := blobClient.GetProperties(context.TODO(), nil)
    handleError(err)

    // Print the blob metadata
    for k, v := range resp.Metadata {
        fmt.Printf("%v: %v\n", k, *v)
    }
}

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 správě vlastností systému a uživatelsky definovaných metadat 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 správu systémových vlastností a uživatelsky definovaných metadat používají následující operace rozhraní REST API:

Prostředky klientského modulu