Uso de etiquetas de índice de blobs para administrar y buscar datos con Go
Este artículo muestra cómo usar etiquetas de índice blob para administrar y encontrar datos usando el Módulo de cliente Azure Storage para Go.
Requisitos previos
- Una suscripción a Azure: cree una cuenta gratuita
- Una cuenta de Azure Storage: cree una cuenta de almacenamiento
- Go 1.18+
Configurar el entorno
Si no tiene un proyecto existente, esta sección muestra cómo configurar un proyecto para trabajar con el módulo cliente Azure Blob Storage para Go. Los pasos incluyen la instalación del módulo, la adición de rutas de acceso de import
y la creación de un objeto de cliente autorizado. Para obtener información, consulte Introducción a Azure Blob Storage y Go.
Módulos de instalación
Instale el módulo azblob mediante el siguiente comando:
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Para autenticarse con Microsoft Entra ID (recomendado), instale el módulo azidentity
mediante el siguiente comando:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Agregar rutas de importación
En el archivo de código, agregue las rutas de importación siguientes:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
Algunos ejemplos de código de este artículo pueden requerir rutas de importación adicionales. Para obtener detalles específicos y ejemplos de uso, consulte Ejemplos de código.
Creación de un objeto de cliente
Para conectar una aplicación a Blob Storage, cree un objeto de cliente mediante azblob.NewClient. En el ejemplo siguiente se muestra cómo crear un objeto de cliente mediante DefaultAzureCredential
para la autorización:
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
}
Authorization
El mecanismo de autorización debe tener los permisos necesarios para trabajar con etiquetas de índice de blobs. Para la autorización con Microsoft Entra ID (recomendado), se necesita el rol integrado de RBAC de Azure de propietario de datos de Storage Blob o superior. Para obtener más información, consulte la guía de autorización de Obtener etiquetas de blobs, Establecer etiquetas de blobs, o Buscar blobs por etiquetas.
Escribir etiquetas de índice de blobs
Las etiquetas de índice de blobs clasifican los datos de la cuenta de almacenamiento mediante atributos de etiqueta clave-valor. Estas etiquetas se indexan y se exponen automáticamente como un índice multidimensional que se puede buscar para encontrar fácilmente los datos. En este artículo se muestra cómo establecer, obtener y buscar datos mediante etiquetas de índice de blobs.
Las etiquetas de índice de blobs no se admiten para las cuentas de almacenamiento con el espacio de nombres jerárquico habilitado. Para obtener más información sobre la característica de etiqueta de índice de blobs junto con las limitaciones y los problemas conocidos, consulte Administración y búsqueda de datos de Azure Blob con etiquetas de índice de blobs.
Definición de etiquetas
Puede establecer etiquetas de índice si el código tiene el acceso autorizado a los datos de los blobs mediante uno de los siguientes mecanismos:
- Entidad de seguridad asignada a un rol RBAC de Azure con la acción Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write. El propietario de datos de blobs de Storage es un rol integrado que incluye esta acción.
- Firma de acceso compartido (SAS) con permiso para acceder a las etiquetas del blob (permiso
t
) - Clave de cuenta
Para más información, vea Configuración de etiquetas de índice de blobs.
Puede establecer etiquetas mediante cualquiera de los métodos siguientes:
Las etiquetas especificadas en este método reemplazan las etiquetas existentes. Si se deben conservar los valores existentes, deben descargarse e incluirse en la llamada a este método. En el siguiente ejemplo se muestra cómo establecer etiquetas:
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)
}
Puede quitar todas las etiquetas llamando SetTags
a sin etiquetas, como se muestra en el ejemplo siguiente:
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)
}
Obtener etiquetas
Puede obtener etiquetas de índice si el código tiene el acceso autorizado a los datos de los blobs mediante uno de los siguientes mecanismos:
- Entidad de seguridad asignada a un rol RBAC de Azure con la acción Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read. El propietario de datos de blobs de Storage es un rol integrado que incluye esta acción.
- Firma de acceso compartido (SAS) con permiso para acceder a las etiquetas del blob (permiso
t
) - Clave de cuenta
Para más información, consulte Obtención y enumeración de etiquetas de índice de blobs.
Puede obtener etiquetas mediante el método siguiente:
En el ejemplo siguiente se muestra cómo recuperar e iterar las etiquetas del 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)
}
}
Filtrado y búsqueda de datos con etiquetas de índice de blobs
Puede usar etiquetas de índice para buscar y filtrar datos si el código tiene el acceso autorizado a los datos de los blobs mediante uno de los siguientes mecanismos:
- Entidad de seguridad asignada a un rol RBAC de Azure con la acción Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action. El propietario de datos de blobs de Storage es un rol integrado que incluye esta acción.
- Firma de acceso compartido (SAS) con permiso para filtrar blobs por etiquetas (permiso
f
) - Clave de cuenta
Para más información, consulte Búsqueda de datos mediante etiquetas de índice de blobs.
Nota:
No se pueden utilizar etiquetas de índice para recuperar versiones anteriores. Las etiquetas de las versiones anteriores no se pasan al motor de índices de blobs. Para más información, consulte Condiciones y problemas conocidos.
Puede filtrar los datos de blobs en función de las etiquetas de índice mediante el método siguiente:
En el ejemplo siguiente se buscan y enumeran todos los blobs etiquetados como imagen:
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)
}
}
Nota:
Los ejemplos de código de esta guía están diseñados para ayudarle a empezar a trabajar con Azure Blob Storage y Go. Debe modificar el control de errores y los valores de Context
para satisfacer las necesidades de la aplicación.
Recursos
Para más información sobre cómo usar etiquetas de índice para administrar y buscar datos mediante la biblioteca cliente de Azure Blob Storage para Go, consulte los siguientes recursos.
Ejemplos de código
- Visualización de ejemplos de código de este artículo (GitHub)
Operaciones de API REST
El SDK de Azure para Go contiene bibliotecas que se crean a partir de la API de REST de Azure, lo que le permite interactuar con las operaciones de API de REST a través de paradigmas conocidos de Go. Los métodos de biblioteca cliente para administrar y usar etiquetas de índice de blobs usan las siguientes operaciones de la API REST:
- Get Blob Tags (API REST)
- Set Blob Tags (API REST)
- Find Blobs by Tags (API REST)
Recursos del módulo cliente
- Documentación de referencia del módulo cliente
- Código fuente del módulo cliente
- Paquete (pkg.go.dev)
Consulte también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de