Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se muestra cómo usar etiquetas de índice en los blobs para administrar y buscar datos mediante la biblioteca cliente de Azure Storage para Python.
Para obtener información sobre cómo establecer etiquetas de índice de blobs mediante API asincrónicas, consulte Establecimiento de etiquetas de índice de blobs de forma asincrónica.
Requisitos previos
- Una suscripción a Azure: cree una cuenta gratuita
- Una cuenta de Azure Storage: cree una cuenta de almacenamiento
- Python 3.8 y versiones posteriores
Configurar el entorno
Si no tiene un proyecto existente, en esta sección se muestra cómo configurar uno para que funcione con la biblioteca cliente de Azure Blob Storage para Python. Para más información, vea Introducción a Azure Blob Storage y Python.
Para trabajar con los ejemplos de código de este artículo, siga los pasos siguientes a fin de configurar el proyecto.
Instalar paquetes
Instale los siguientes paquetes mediante pip install
:
pip install azure-storage-blob azure-identity
Adición de instrucciones import
Agregue las instrucciones siguientes import
:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient, ContentSettings
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 más información, consulte la guía de autorización para obtener etiquetas de blobs (API REST), establecer etiquetas de blob (API REST) o buscar blobs por etiquetas (API REST).
Creación de un objeto de cliente
Para conectar una aplicación a Blob Storage, cree una instancia de BlobServiceClient. En el ejemplo siguiente se muestra cómo crear un objeto de cliente mediante DefaultAzureCredential
para la autorización:
# TODO: Replace <storage-account-name> with your actual storage account name
account_url = "https://<storage-account-name>.blob.core.windows.net"
credential = DefaultAzureCredential()
# Create the BlobServiceClient object
blob_service_client = BlobServiceClient(account_url, credential=credential)
También puede crear objetos de cliente para contenedores o blobs específicos ya sea directamente o desde el objeto BlobServiceClient
. Para obtener más información sobre cómo crear y administrar objetos de cliente, consulte Crear y administrar objetos de cliente que interactúan con los recursos de datos.
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 reemplazarán las etiquetas existentes. Si es necesario conservar los valores antiguos, deben descargarse e incluirse en la llamada a este método. En el siguiente ejemplo se muestra cómo establecer etiquetas:
def set_blob_tags(self, blob_service_client: BlobServiceClient, container_name):
blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
# Get any existing tags for the blob if they need to be preserved
tags = blob_client.get_blob_tags()
# Add or modify tags
updated_tags = {'Sealed': 'false', 'Content': 'image', 'Date': '2022-01-01'}
tags.update(updated_tags)
blob_client.set_blob_tags(tags)
Para eliminar todas las etiquetas, pase un objeto dict
vacío al método set_blob_tags
:
def clear_blob_tags(self, blob_service_client: BlobServiceClient, container_name):
blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
# Pass in empty dict object to clear tags
tags = dict()
blob_client.set_blob_tags(tags)
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:
def get_blob_tags(self, blob_service_client: BlobServiceClient, container_name):
blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
tags = blob_client.get_blob_tags()
print("Blob tags: ")
for k, v in tags.items():
print(k, v)
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 buscar datos mediante los métodos siguientes:
En el ejemplo siguiente se buscan y enumeran todos los blobs etiquetados como imagen:
def find_blobs_by_tags(self, blob_service_client: BlobServiceClient, container_name):
container_client = blob_service_client.get_container_client(container=container_name)
query = "\"Content\"='image'"
blob_list = container_client.find_blobs_by_tags(filter_expression=query)
print("Blobs tagged as images")
for blob in blob_list:
print(blob.name)
Establecimiento de etiquetas de índice de blobs de forma asincrónica
La biblioteca cliente de Azure Blob Storage para Python admite el trabajo con etiquetas de índice de blobs de forma asincrónica. Para obtener más información sobre los requisitos de configuración del proyecto, consulte Programación asincrónica.
Siga estos pasos para establecer etiquetas de índice de blobs mediante API asincrónicas:
Agregue las siguientes instrucciones import:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Agregue código para ejecutar el programa mediante
asyncio.run
. Esta función ejecuta la corrutina pasada,main()
en nuestro ejemplo, y administra el bucle de eventosasyncio
. Las corrutinas se declaran con la sintaxis async/await. En este ejemplo, la corrutinamain()
crea primero el nivel superiorBlobServiceClient
medianteasync with
y, a continuación, llama al método que establece las etiquetas de índice de blobs. Tenga en cuenta que solo el cliente de nivel superior debe usarasync with
, ya que otros clientes creados a partir de él comparten el mismo grupo de conexiones.async def main(): sample = BlobSamples() # TODO: Replace <storage-account-name> with your actual storage account name account_url = "https://<storage-account-name>.blob.core.windows.net" credential = DefaultAzureCredential() async with BlobServiceClient(account_url, credential=credential) as blob_service_client: await sample.set_blob_tags(blob_service_client, "sample-container") if __name__ == '__main__': asyncio.run(main())
Agregue código para establecer las etiquetas de índice de blobs. El código es el mismo que el ejemplo sincrónico, salvo que el método se declara con la palabra clave
async
y la palabra claveawait
se usa al llamar a los métodosget_blob_tags
yset_blob_tags
.async def set_blob_tags(self, blob_service_client: BlobServiceClient, container_name): blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt") # Get any existing tags for the blob if they need to be preserved tags = await blob_client.get_blob_tags() # Add or modify tags updated_tags = {'Sealed': 'false', 'Content': 'image', 'Date': '2022-01-01'} tags.update(updated_tags) await blob_client.set_blob_tags(tags)
Con esta configuración básica, puede implementar otros ejemplos de este artículo como corrutinas mediante la sintaxis async/await.
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 Python, consulte los siguientes recursos.
Ejemplos de código
- Ver ejemplo de código sincrónicos o asincrónicos de este artículo (GitHub)
Operaciones de API REST
El SDK de Azure para Python contiene bibliotecas que se crean a partir de la API REST de Azure, lo que le permite interactuar con las operaciones de API REST a través de paradigmas conocidos de Python. 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 de la biblioteca cliente
- Documentación de referencia de la biblioteca cliente
- Código fuente de la biblioteca del cliente
- Paquete (PyPi)
Consulte también
- Administración y búsqueda de datos de Azure Blob con etiquetas de índice de blobs
- Uso de etiquetas de índice de blobs para administrar y buscar datos en Azure Blob Storage
Contenido relacionado
- Este artículo forma parte de la guía para desarrolladores de Blob Storage para Python. Para más información, consulte la lista completa de artículos de la guía para desarrolladores en Compilación de la aplicación de Python.