Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo mostra como usar marcas de índice de blob para gerenciar e localizar dados usando o módulo de cliente do Armazenamento do Microsoft Azure para Go.
Pré-requisitos
- Assinatura do Azure - criar uma gratuitamente
- Conta de armazenamento do Azure – criar uma conta de armazenamento
- Go 1.18 ou posterior
Configure seu ambiente
Se você não tiver um projeto existente, esta seção mostrará como configurar um projeto para trabalhar com o módulo de cliente do Armazenamento de Blobs do Azure para Go. As etapas incluem a instalação do módulo, a adição de caminhos import
e a criação de um objeto 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 módulo azidentity
usando o comando a seguir:
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"
)
Esses caminhos de importação representam o mínimo necessário para começar. Alguns exemplos de código neste artigo podem exigir caminhos de importação adicionais. Para obter detalhes específicos e uso de exemplo, consulte Exemplos de código.
Criar um objeto cliente
Para conectar um aplicativo ao Armazenamento de Blobs, 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 marcas de índice de blob. Para autorização com a ID do Microsoft Entra (recomendado), você precisa do Proprietário de Dados de Blob de Armazenamento de Função interna do RBAC do Azure ou superior. Para saber mais, confira as diretrizes de autorização para Obter Categorias de Blob , Definir Categorias de Blob ou Localizar Blobs por Categorias.
Gravar marcas de índice de blob
As marcas de índice de blob categorizam os dados na sua conta de armazenamento usando atributos de marca de chave-valor. Essas marcas são indexadas automaticamente e expostas como um índice multidimensional pesquisável para localizar dados com facilidade. Este artigo mostra como definir, obter e localizar dados usando marcas de índice de blob.
Não há suporte para marcas de índice de blob para contas de armazenamento com namespace hierárquico habilitado. Para saber mais sobre o recurso de marca de índice de blob, juntamente com problemas e limitações conhecidos, confira Gerenciar e localizar dados de Blob do Azure com marcas de índice de blob.
Editar marcas
Você poderá definir marcas de índice se o código tiver acesso autorizado aos dados de blob por meio de um dos seguintes mecanismos:
- Entidade de segurança que recebe uma função RBAC do Azure com a ação Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write. O Proprietário de Dados de Blob de Armazenamento é uma função interna que inclui essa ação.
- Assinatura de Acesso Compartilhado (SAS) com permissão para acessar as marcas do blob (permissão
t
) - Chave de conta
Para obter mais informações, consulte Configuração de marcas de índice de blob.
Defina marcas usando o seguinte método:
As categorias especificadas neste método substituem as categorias existentes. Se os valores existentes precisarem ser preservados, eles deverão ser baixados e incluídos na chamada para esse método. O seguinte exemplo mostra como definir marcas:
func setBlobTags(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Get existing tags for the blob if they need to be preserved
resp, err := blobClient.GetTags(context.TODO(), nil)
handleError(err)
tags := make(map[string]string)
for _, v := range resp.BlobTags.BlobTagSet {
tags[*v.Key] = *v.Value
}
// Add or modify blob tags
var updated_tags = make(map[string]*string)
updated_tags["tag1"] = to.Ptr("value1")
updated_tags["tag2"] = to.Ptr("value2")
// Combine existing tags with new tags
for k, v := range updated_tags {
tags[k] = *v
}
// Set blob tags
_, err = blobClient.SetTags(context.TODO(), tags, nil)
handleError(err)
}
Você pode remover todas as categorias chamando SetTags
sem categorias, conforme mostrado no exemplo a seguir:
func clearBlobTags(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Clear blob tags
_, err := blobClient.SetTags(context.TODO(), make(map[string]string), nil)
handleError(err)
}
Obter marcas
Você poderá obter marcas de índice se o código tiver acesso autorizado aos dados de blob por meio de um dos seguintes mecanismos:
- Entidade de segurança que recebe uma função RBAC do Azure com a ação Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read. O Proprietário de Dados de Blob de Armazenamento é uma função interna que inclui essa ação.
- Assinatura de Acesso Compartilhado (SAS) com permissão para acessar as marcas do blob (permissão
t
) - Chave de conta
Para obter mais informações, consulte Obtendo e listando marcas de índice de blob.
Obtenha marcas usando o seguinte método:
O seguinte exemplo mostra como recuperar e iterar as marcas do blob:
func getBlobTags(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Get the blob tags
resp, err := blobClient.GetTags(context.TODO(), nil)
handleError(err)
// Print the blob tags
for _, v := range resp.BlobTags.BlobTagSet {
fmt.Printf("Key: %v, Value: %v\n", *v.Key, *v.Value)
}
}
Filtre e localize dados com marcas de índice de blob
Você poderá usar marcas de índice para localizar e filtrar dados se o código tiver acesso autorizado aos dados de blob por meio de um dos seguintes mecanismos:
- Entidade de segurança que recebe uma função RBAC do Azure com a ação Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action. O Proprietário de Dados de Blob de Armazenamento é uma função interna que inclui essa ação.
- Assinatura de Acesso Compartilhado (SAS) com permissão para filtrar blobs por marcas (permissão
f
) - Chave de conta
Para obter mais informações, consulte Localizando dados usando marcas de índice de blob.
Observação
Não é possível usar marcas de índice para recuperar versões anteriores. As marcas para versões anteriores não são passadas para o mecanismo de índice de blob. Para obter mais informações, consulte Condições e problemas conhecidos.
Você pode filtrar dados de blob com base em categorias de índice usando o seguinte método:
O seguinte exemplo localiza e lista todos os blobs marcados como uma imagem:
func findBlobsByTags(client *azblob.Client, containerName string, blobName string) {
// Reference the container as a client object
containerClient := client.ServiceClient().NewContainerClient(containerName)
// Filter blobs by tags
where := "\"Content\"='image'"
opts := container.FilterBlobsOptions{MaxResults: to.Ptr(int32(10))}
resp, err := containerClient.FilterBlobs(context.TODO(), where, &opts)
handleError(err)
// Print the blobs found
for _, blobItem := range resp.FilterBlobSegment.Blobs {
fmt.Printf("Blob name: %v\n", *blobItem.Name)
}
}
Observação
Os exemplos de código neste guia destinam-se a ajudá-lo a começar a usar o Armazenamento de Blobs do Azure e o Go. Você deve modificar o tratamento de erros e valores Context
para atender às necessidades do aplicativo.
Recursos
Para saber mais sobre como usar as categorias de índice para gerenciar e localizar dados usando a biblioteca de clientes de Armazenamento de Blobs do Azure para Go, consulte os recursos a seguir.
Exemplos de código
- Exibir exemplos de código deste artigo (GitHub)
Operações da API REST
O SDK do Azure para linguagem Go contém bibliotecas que se baseiam na API REST do Azure, permitindo a interação com as operações de API REST por meio de paradigmas conhecidos do Go. Os métodos da biblioteca de clientes para gerenciar e usar marcas de índice de blob usam as seguintes operações da API REST:
- Obter marcas de blob (API REST)
- Definir marcas de blob (API REST)
- Localizar blobs por marcas (API REST)
Recursos do módulo cliente
- Documentação de referência do módulo do cliente
- Código-fonte do módulo do cliente
- Pacote (pkg.go.dev)
Confira também
- Gerenciar e localizar dados de blob do Azure com tags de índice de blob
- Use as marcas de índice de blob para gerenciar e localizar dados no Armazenamento de Blobs do Azure
Conteúdo relacionado
- Este artigo faz parte do guia para desenvolvedores do Armazenamento de Blobs para Go. Para saber mais, veja a lista completa de artigos do guia do desenvolvedor em Criar seu aplicativo Go.