Sdílet prostřednictvím


Správa vlastností kontejneru a metadat pomocí Go

Kontejnery objektů blob podporují systémové vlastnosti a uživatelsky definovaná metadata kromě dat, která obsahují. Tento článek ukazuje, jak spravovat vlastnosti systému a uživatelsky definovaná metadata pomocí modulu klienta služby 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 pro získání vlastností kontejneru (REST API), nastavení metadat kontejneru (REST API) nebo získání metadat kontejneru (REST API).

O vlastnostech a metadatech

  • Vlastnosti systému: Systémové vlastnosti existují pro každý prostředek blob Storage. Některé z nich můžou být přečtené nebo nastavené, zatímco jiné jsou jen pro čtení. Některé systémové vlastnosti na pozadí 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

Načtení vlastností kontejneru

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

Následující příklad kódu načte systémové vlastnosti kontejneru a zapíše některé hodnoty vlastnosti do okna konzoly:

func getContainerProperties(client *azblob.Client, containerName string) {
    // Reference the container as a client object
    containerClient := client.ServiceClient().NewContainerClient(containerName)

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

    // Print the container properties
    fmt.Printf("Blob public access: %v\n", *resp.BlobPublicAccess)
    fmt.Printf("Lease status: %v\n", *resp.LeaseStatus)
    fmt.Printf("Lease state: %v\n", *resp.LeaseState)
    fmt.Printf("Has immutability policy: %v\n", *resp.HasImmutabilityPolicy)
}

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, zavolejte z objektu klienta kontejneru následující metodu:

Nastavení metadat kontejneru přepíše všechna existující metadata přidružená ke kontejneru. Individuální dvojici název-hodnota není možné upravit.

Následující příklad kódu nastaví metadata v kontejneru:

func setContainerMetadata(client *azblob.Client, containerName string) {
    // Reference the container as a client object
    containerClient := client.ServiceClient().NewContainerClient(containerName)

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

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

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

Metadata jsou zahrnuta v odpovědi od GetProperties. Následující příklad přečte hodnoty metadat a zapíše je do okna konzoly:

func getContainerMetadata(client *azblob.Client, containerName string) {
    // Reference the container as a client object
    containerClient := client.ServiceClient().NewContainerClient(containerName)

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

    // Print the container 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 nastavení a načítání vlastností kontejneru a 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 nastavení a načítání vlastností a metadat používají následující operace rozhraní REST API:

Metoda get_container_properties načte vlastnosti kontejneru a metadata voláním operace Get Container Properties a Get Container Metadata operace.

Prostředky klientského modulu