Administración de propiedades y metadatos de blobs con Go
Además de los datos que contienen, los blobs admiten propiedades del sistema y metadatos definidos por el usuario. En este artículo se muestra cómo administrar propiedades del sistema y metadatos definidos por el usuario mediante el módulo cliente de 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"
)
Estas rutas de importación representan el mínimo necesario para empezar. 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 propiedades o metadatos del contenedor. Para la autorización con Microsoft Entra ID (recomendada), necesita el rol integrado de RBAC de Azure Lector de datos de Storage Blob o superior para las operaciones get, y el rol Colaborador de datos de blobs de Almacenamiento o superior para las operaciones set. Para obtener más información, consulte la guía de autorización de Establecer propiedades de blobs (API de REST), Obtener propiedades de blobs (API de REST), Establecer metadatos de blobs (API de REST) u Obtener metadatos de blobs (API de REST).
Acerca de las propiedades y los metadatos
Propiedades del sistema: en cada recurso de almacenamiento de blobs existen propiedades del sistema. Algunas se pueden leer o establecer, mientras que otras son de solo lectura. En segundo plano, algunas propiedades del sistema corresponden a ciertos encabezados HTTP estándar. La biblioteca cliente de Azure Storage para Go mantiene estas propiedades automáticamente.
Metadatos definidos por el usuario: los metadatos definidos por el usuario se componen de uno o más pares nombre-valor que especifica para un recurso de almacenamiento de blobs. Puede usar metadatos para almacenar valores adicionales con el recurso. Los valores de metadatos se proporcionan para uso personal y no afectan a cómo se comporta el recurso.
Los pares de nombre/valor de metadatos son encabezados HTTP válidos y deben cumplir todas las restricciones que gobiernan los encabezados HTTP. Para obtener más información sobre los requisitos de nomenclatura de metadatos, consulte Nombres de metadatos.
Nota:
Las etiquetas del índice de blobs ofrecen la capacidad de almacenar atributos arbitrarios de clave-valor definidas por el usuario junto con un recurso de Azure Blob Storage. De manera similar a los metadatos, solo las etiquetas del índice de blobs se indexan automáticamente y son objeto de búsquedda mediante el Blob service nativo. Los metadatos no se pueden indexar ni consultar, a menos que se use un servicio independiente, como Azure Search.
Para obtener más información sobre esta característica, vea Administración y búsqueda de datos en Azure Blob Storage con el índice de blobs (versión preliminar).
Establecimiento y recuperación de propiedades
Para establecer propiedades en un blob, llame al método siguiente desde un objeto de cliente de blobs:
Se borran todas las propiedades no establecidas explícitamente. Para conservar las propiedades existentes, primero puede recuperar las propiedades del blob y, a continuación, usarlas para rellenar los encabezados que no se están actualizando.
En el ejemplo de código siguiente se establecen las propiedades del sistema BlobContentType
y BlobContentLanguage
en un blob, a la vez que se conservan las propiedades 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 propiedades en un blob, llame al método siguiente desde un objeto de cliente de blobs:
En el ejemplo de código siguiente se obtienen las propiedades del sistema de un blob y se muestran algunos de los 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)
}
Establecimiento y recuperación de metadatos
Puede especificar metadatos como uno o más pares nombre-valor en un recurso de blob o contenedor. Para establecer metadatos, envíe un mapa que contenga pares nombre-valor mediante el método siguiente desde un objeto de cliente de blobs:
El siguiente ejemplo de código establece los metadatos de un 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 metadatos, llame al método GetProperties desde un objeto de cliente de blobs y acceda al campo Metadata
en la respuesta. El método GetProperties
recupera propiedades y metadatos de blobs llamando a la operaciones Get Blob Properties y Get Blob Metadata.
En el ejemplo de código siguiente se leen los metadatos de un blob y se imprime cada par clave-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:
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 obtener más información sobre cómo administrar las propiedades del sistema y los metadatos definidos por el usuario usando el módulo 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
Azure SDK 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 la biblioteca cliente para administrar las propiedades del sistema y los metadatos definidos por el usuario usan las siguientes operaciones de la API de REST:
- Set Blob Properties (API REST)
- Get Blob Properties (API REST)
- Set Blob Metadata (API REST)
- Get Blob Metadata (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)
Contenido relacionado
- Este artículo forma parte de la guía para desarrolladores de Blob Storage para Go. Para obtener más información, consulte la lista completa de artículos de la guía para desarrolladores en Compilación de la aplicación Go.