Partilhar via


Gerencie propriedades e metadados de blob com o Go

Além dos dados que contêm, os blobs suportam propriedades do sistema e metadados definidos pelo usuário. Este artigo mostra como gerenciar as propriedades do sistema e os metadados definidos pelo usuário usando o módulo de cliente do Armazenamento do Azure para Go.

Pré-requisitos

Configurar o ambiente

Se você não tiver um projeto existente, esta seção mostra como configurar um projeto para trabalhar com o módulo de cliente de Armazenamento de Blob do Azure para Go. As etapas incluem a instalação do módulo, a adição de import caminhos e a criação de um objeto de cliente autorizado. Para obter detalhes, consulte Introdução ao Armazenamento de Blobs do Azure e Go.

Instalar módulos

Instale o módulo azblob usando o seguinte comando:

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

Para autenticar com o Microsoft Entra ID (recomendado), instale o azidentity módulo usando o seguinte comando:

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

Adicionar caminhos de importação

No arquivo de código, adicione os seguintes caminhos de importação:

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

Alguns exemplos de código neste artigo podem exigir caminhos de importação adicionais. Para obter detalhes específicos e exemplos de uso, consulte Exemplos de código.

Criar um objeto cliente

Para conectar um aplicativo ao Armazenamento de Blob, crie um objeto cliente usando azblob. NewClient. O exemplo a seguir mostra como criar um objeto cliente usando DefaultAzureCredential para autorização:

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
}

Autorização

O mecanismo de autorização deve ter as permissões necessárias para trabalhar com propriedades de contêiner ou metadados. Para autorização com o Microsoft Entra ID (recomendado), você precisa da função interna do RBAC do Azure Leitor de Dados de Blob de Armazenamento ou superior para as operações get e de Colaborador de Dados de Blob de Armazenamento ou superior para as operações definidas . Para saber mais, consulte as diretrizes de autorização para set Blob Properties (REST API), Get Blob Properties (REST API), set Blob Metadata (REST API) ou Get Blob Metadata (REST API).

Sobre propriedades e metadados

  • Propriedades do sistema: as propriedades do sistema existem em cada recurso de armazenamento de Blob. Alguns deles podem ser lidos ou definidos, enquanto outros são somente leitura. Sob as capas, algumas propriedades do sistema correspondem a determinados cabeçalhos HTTP padrão. A biblioteca de cliente do Armazenamento do Azure para Go mantém essas propriedades para você.

  • Metadados definidos pelo usuário: os metadados definidos pelo usuário consistem em um ou mais pares nome-valor que você especifica para um recurso de armazenamento de Blob. Você pode usar metadados para armazenar valores adicionais com o recurso. Os valores de metadados são apenas para seus próprios fins e não afetam como o recurso se comporta.

    Os pares nome/valor de metadados são cabeçalhos HTTP válidos e devem aderir a todas as restrições que regem os cabeçalhos HTTP. Para obter mais informações sobre requisitos de nomenclatura de metadados, consulte Nomes de metadados.

Nota

As tags de índice de Blob também fornecem a capacidade de armazenar atributos de chave/valor arbitrários definidos pelo usuário ao lado de um recurso de armazenamento de Blob do Azure. Embora semelhante aos metadados, apenas as tags de índice de blob são automaticamente indexadas e tornadas pesquisáveis pelo serviço de blob nativo. Os metadados não podem ser indexados e consultados, a menos que você utilize um serviço separado, como a Pesquisa do Azure.

Para saber mais sobre esse recurso, consulte Gerenciar e localizar dados no armazenamento de Blob do Azure com índice de blob (visualização).

Definir e recuperar propriedades

Para definir propriedades em um blob, chame o seguinte método de um objeto de cliente blob:

Todas as propriedades não definidas explicitamente são limpas. Para preservar quaisquer propriedades existentes, você pode primeiro recuperar as propriedades de blob e, em seguida, usá-las para preencher os cabeçalhos que não estão sendo atualizados.

O exemplo de código a seguir define as propriedades e BlobContentLanguage system BlobContentType em um blob, preservando as propriedades existentes:

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

Para recuperar propriedades em um blob, chame o seguinte método de um objeto de cliente blob:

O exemplo de código a seguir obtém as propriedades do sistema de um blob e exibe alguns dos valores:

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

Definir e recuperar metadados

Você pode especificar metadados como um ou mais pares nome-valor em um recurso de blob ou contêiner. Para definir metadados, envie um mapa contendo pares nome-valor usando o seguinte método de um objeto de cliente blob:

O exemplo de código a seguir define metadados em um 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)
}

Para recuperar metadados, chame o método GetProperties de um objeto de cliente de blob e acesse o Metadata campo na resposta. O GetProperties método recupera propriedades de blob e metadados chamando a operação Get Blob Properties e a operação Get Blob Metadata .

O exemplo de código a seguir lê metadados em um blob e imprime cada par chave/valor:

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

Nota

Os exemplos de código neste guia destinam-se a ajudá-lo a começar a usar o Azure Blob Storage and Go. Você deve modificar o tratamento de erros e Context os valores para atender às necessidades do seu aplicativo.

Recursos

Para saber mais sobre como gerenciar propriedades do sistema e metadados definidos pelo usuário usando o módulo de cliente de Armazenamento de Blob do Azure para Go, consulte os recursos a seguir.

Amostras de código

  • Exibir exemplos de código deste artigo (GitHub)

Operações da API REST

O SDK do Azure para Go contém bibliotecas que se baseiam na API REST do Azure, permitindo que você interaja com operações da API REST por meio de paradigmas Go familiares. Os métodos da biblioteca de cliente para gerenciar propriedades do sistema e metadados definidos pelo usuário usam as seguintes operações da API REST:

Recursos do módulo cliente