Delen via


Containereigenschappen en metagegevens beheren met Go

Blob-containers ondersteunen systeemeigenschappen en door de gebruiker gedefinieerde metagegevens, naast de gegevens die ze bevatten. In dit artikel wordt beschreven hoe u systeemeigenschappen en door de gebruiker gedefinieerde metagegevens beheert met de Azure Storage-clientmodule voor Go.

Vereisten

Uw omgeving instellen

Als u geen bestaand project hebt, ziet u in deze sectie hoe u een project instelt voor gebruik met de Azure Blob Storage-clientmodule voor Go. De stappen omvatten module-installatie, het toevoegen van import paden en het maken van een geautoriseerd clientobject. Zie Aan de slag met Azure Blob Storage en Go voor meer informatie.

Modules installeren

Installeer de azblob-module met behulp van de volgende opdracht:

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

Als u wilt verifiëren met Microsoft Entra ID (aanbevolen), installeert u de azidentity module met behulp van de volgende opdracht:

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

Importpaden toevoegen

Voeg in uw codebestand de volgende importpaden toe:

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

Deze importpaden vertegenwoordigen het minimum dat nodig is om aan de slag te gaan. Voor sommige codevoorbeelden in dit artikel zijn mogelijk extra importpaden vereist. Zie Codevoorbeelden voor specifieke details en voorbeeldgebruik.

Een clientobject maken

Als u een app wilt verbinden met Blob Storage, maakt u een clientobject met behulp van azblob. NewClient. In het volgende voorbeeld ziet u hoe u een clientobject maakt met behulp van DefaultAzureCredential autorisatie:

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
}

Autorisatie

Het autorisatiemechanisme moet over de benodigde machtigingen beschikken om te kunnen werken met containereigenschappen of metagegevens. Voor autorisatie met Microsoft Entra-id (aanbevolen), hebt u ingebouwde Azure RBAC-rol Storage Blob-gegevenslezer of hoger nodig voor de get-bewerkingen, en Voor de inzender voor opslagblobgegevens of hoger voor de setbewerkingen. Zie de autorisatierichtlijnen voor Het ophalen van containereigenschappen (REST API), Containermetagegevens (REST API) instellen of Containermetagegevens ophalen (REST API) voor meer informatie.

Over eigenschappen en metagegevens

  • Systeemeigenschappen: Systeemeigenschappen bestaan op elke Blob Storage-resource. Sommige kunnen worden gelezen of ingesteld, terwijl andere alleen-lezen zijn. Achter de schermen komen sommige systeemeigenschappen overeen met bepaalde standaard HTTP-headers. De Azure Storage-clientbibliotheek voor Go onderhoudt deze eigenschappen voor u.

  • Door de gebruiker gedefinieerde metagegevens: door de gebruiker gedefinieerde metagegevens bestaan uit een of meer naam-waardeparen die u opgeeft voor een Blob Storage-resource. U kunt metagegevens gebruiken om extra waarden op te slaan met de resource. Metagegevenswaarden zijn alleen bedoeld voor uw eigen doeleinden en hebben geen invloed op het gedrag van de resource.

    Naam/waardeparen van metagegevens zijn geldige HTTP-headers en moeten voldoen aan alle beperkingen voor HTTP-headers. Zie Namen van metagegevens voor meer informatie over naamgevingsvereisten voor metagegevens.

Containereigenschappen ophalen

Als u containereigenschappen wilt ophalen, roept u de volgende methode aan vanuit een containerclientobject:

In het volgende codevoorbeeld worden de systeemeigenschappen van een container opgehaald en worden enkele eigenschapswaarden naar een consolevenster geschreven:

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

Metagegevens instellen en ophalen

U kunt metagegevens opgeven als een of meer naam-waardeparen op een blob of containerresource. Als u metagegevens wilt instellen, roept u de volgende methode aan vanuit een containerclientobject:

Als u containermetagegevens instelt, worden alle bestaande metagegevens overschreven die aan de container zijn gekoppeld. Het is niet mogelijk om een afzonderlijk naam-waardepaar te wijzigen.

In het volgende codevoorbeeld worden metagegevens voor een container ingesteld:

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

Als u metagegevens wilt ophalen, roept u de volgende methode aan vanuit een containerclientobject:

Metagegevens worden opgenomen in het antwoord van GetProperties. In het volgende voorbeeld worden metagegevenswaarden gelezen en naar een consolevenster geschreven:

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

Notitie

De codevoorbeelden in deze handleiding zijn bedoeld om u te helpen aan de slag te gaan met Azure Blob Storage en Go. U moet foutafhandeling en Context -waarden wijzigen om te voldoen aan de behoeften van uw toepassing.

Resources

Zie de volgende resources voor meer informatie over het instellen en ophalen van containereigenschappen en metagegevens met behulp van de Azure Blob Storage-clientmodule voor Go.

Codevoorbeelden

  • Codevoorbeelden uit dit artikel weergeven (GitHub)

REST API-bewerkingen

De Azure SDK voor Go bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via bekende Go-paradigma's. De clientbibliotheekmethoden voor het instellen en ophalen van eigenschappen en metagegevens gebruiken de volgende REST API-bewerkingen:

De get_container_properties methode haalt containereigenschappen en metagegevens op door zowel de bewerking Containereigenschappen ophalen als de bewerking Containermetagegevens ophalen aan te roepen.

Resources voor clientmodules

  • Dit artikel maakt deel uit van de ontwikkelaarshandleiding voor Blob Storage voor Go. Zie de volledige lijst met artikelen over ontwikkelaarshandleidingen in Build your Go app voor meer informatie.