Gérer les métadonnées et les propriétés de conteneur avec Go

Les conteneurs d’objets blob prennent en charge des propriétés système et des métadonnées définies par l’utilisateur, en plus des données qu’ils contiennent. Cet article montre comment gérer les propriétés système et les métadonnées définies par l’utilisateur à l’aide du module client Stockage Azure pour Go.

Prérequis

Paramétrer votre environnement

Si vous n’avez aucun projet existant, cette section montre comment configurer un projet pour qu’il fonctionne avec le module client du Stockage Blob Azure pour Go. Les étapes incluent l’installation du module, l’ajout de chemins d’accès import et la création d’un objet client autorisé. Pour plus d’informations, consultez Prise en main de Stockage Blob Azure et de Go.

Installer des modules

Installez le module azblob à l’aide de la commande suivante :

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

Pour vous authentifier auprès de Microsoft Entra ID (recommandé), installez le module azidentity à l’aide de la commande suivante :

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

Ajouter des chemins d’importation

Dans votre fichier de code, ajoutez les chemins d’importation suivants :

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

Ces chemins d’importation représentent le minimum nécessaire pour démarrer. Certains exemples de code de cet article peuvent nécessiter des chemins d’importation supplémentaires. Pour plus d’informations et des exemples d’utilisation spécifiques, consultez Exemples de code.

Créer un objet client

Pour connecter une application à Stockage Blob, créez un objet client à l’aide de azblob.NewClient. L’exemple suivant montre comment créer un objet client à l’aide de DefaultAzureCredential pour l’autorisation :

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
}

Autorisation

Le mécanisme d’autorisation doit disposer des autorisations nécessaires pour travailler avec les propriétés ou les métadonnées du conteneur. Pour l’autorisation avec Microsoft Entra ID (recommandé), vous devez disposer au minimum du rôle RBAC Azure intégré Lecteur des données Blob du stockage pour les opérations get et au minimum Contributeur aux données Blob du stockage pour les opérations set. Pour en savoir plus, consultez l’aide sur l’autorisation pour les opérations Get Container Properties (API REST), Set Container Metadata (API REST) ou Get Container Metadata (API REST).

À propos des propriétés et des métadonnées

  • Propriétés système : des propriétés système s’appliquent à chaque ressource de Stockage Blob. Certaines d'entre elles peuvent être lues ou configurées, alors que d'autres sont en lecture seule. En arrière-plan, certaines propriétés système correspondent à certains en-têtes HTTP standard. La bibliothèque de client Stockage Azure pour Go gère ces propriétés pour vous.

  • Métadonnées définies par l’utilisateur : ces métadonnées se composent d’une ou plusieurs paires nom/valeur, que vous spécifiez pour une ressource de stockage d’objets blob. Vous pouvez les utiliser pour stocker des valeurs supplémentaires avec la ressource. Les valeurs de métadonnées sont destinées à votre usage personnel et n’affectent pas le comportement de la ressource.

    Les paires nom/valeur de métadonnées sont des en-têtes HTTP valides ; elles doivent donc respecter toutes les restrictions régissant les en-têtes HTTP. Pour plus d’informations sur les exigences de nommage des métadonnées, consultez Noms des métadonnées.

Récupérer les propriétés de conteneur

Pour récupérer des propriétés de conteneurs, appelez la méthode suivante à partir d’un objet client de conteneur :

L’exemple de code suivant récupère les propriétés système d’un conteneur et écrit certaines des valeurs des propriétés dans une fenêtre de console :

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

Définir et récupérer des métadonnées

Vous pouvez indiquer des métadonnées sous la forme de paires nom-valeur sur une ressource d’objet blob ou de conteneur. Pour définir des métadonnées, appelez la méthode suivante à partir d’un objet client de conteneur :

La définition des métadonnées de conteneur remplace toutes les métadonnées existantes associées au conteneur. Il n'est pas possible de modifier une paire nom-valeur individuelle.

L’exemple de code suivant définit les métadonnées d’un conteneur :

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

Pour récupérer des métadonnées, appelez la méthode suivante à partir d’un objet client conteneur :

Les métadonnées sont comprises dans la réponse de GetProperties. L’exemple suivant lit les valeurs de métadonnées et les écrit dans une fenêtre de console :

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

Remarque

Les exemples de code de ce guide sont conçus pour vous aider à bien démarrer avec Stockage Blob Azure et Go. Vous devez modifier la gestion des erreurs et les valeurs Context pour répondre aux besoins de votre application.

Ressources

Pour en savoir plus sur la définition et la récupération des propriétés de conteneurs et des métadonnées à l’aide du module client Stockage Blob Azure pour Go, consultez les ressources suivantes.

Exemples de code

Opérations de l'API REST

Le kit de développement logiciel Azure SDK pour Go contient des bibliothèques qui s’appuient sur l’API REST Azure et vous permet d’interagir avec des opérations de l’API REST via des paradigmes Go familiers. Les méthodes de la bibliothèque de client pour définir et récupérer des propriétés et des métadonnées utilisent les opérations d’API REST suivantes :

La méthode get_container_properties récupère les propriétés et les métadonnées de conteneur en appelant à la fois l’opération Obtenir les propriétés d’un conteneur et l’opération Obtenir les métadonnées d’un conteneur.

Ressources du module client

  • Cet article fait partie du guide du développeur Stockage Blob pour Go. Pour en savoir plus, consultez la liste complète des articles du guide du développeur dans Générer votre application Go.