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

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 pro 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 pro operace získání integrovanou roli Azure RBAC Storage Blob Data Reader nebo vyšší a pro operace nastavení roli Storage Blob Data Contributor nebo vyšší. 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í na každém prostředku služby 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 u prostředku. 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. Pro další informace o požadavcích na pojmenování metadat se podívejte na Metadata names.

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 na objektu blob nebo 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

  • 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.