Usare i tag di indice BLOB per gestire e trovare dati con Python
Questo articolo illustra come usare i tag di indice BLOB per gestire e trovare i dati usando la libreria client Archiviazione di Azure per Python.
Per informazioni sull'impostazione dei tag di indice BLOB tramite LE API asincrone, vedere Impostare i tag di indice BLOB in modo asincrono.
Prerequisiti
- Questo articolo presuppone che sia già stato configurato un progetto per lavorare con la libreria client Archiviazione BLOB di Azure per Python. Per informazioni sulla configurazione del progetto, tra cui l'installazione del pacchetto, l'aggiunta
import
di istruzioni e la creazione di un oggetto client autorizzato, vedere Introduzione a Archiviazione BLOB di Azure e Python. - Il meccanismo di autorizzazione deve disporre delle autorizzazioni necessarie per usare i tag di indice BLOB. Per altre informazioni, vedere le linee guida per l'autorizzazione per le operazioni API REST seguenti:
Informazioni sui tag di indice BLOB
I tag di indice BLOB classificano i dati nell'account di archiviazione usando gli attributi dei tag chiave-valore. Questi tag vengono indicizzati e esposti automaticamente come indice multidimensionale ricercabile per trovare facilmente i dati. Questo articolo illustra come impostare, ottenere e trovare i dati usando i tag indice BLOB.
I tag di indice BLOB non sono supportati per gli account di archiviazione con spazio dei nomi gerarchico abilitato. Per altre informazioni sulla funzionalità di tag dell'indice BLOB insieme a problemi noti e limitazioni, vedere Gestire e trovare i dati BLOB di Azure con tag di indice BLOB.
Impostare i tag
È possibile impostare i tag di indice se il codice ha autorizzato l'accesso ai dati BLOB tramite uno dei meccanismi seguenti:
- Entità di sicurezza a cui viene assegnato un ruolo controllo degli accessi in base al ruolo di Azure con Microsoft.Archiviazione/storageAccounts/blobServices/containers/blobs/tags/write action. Il Archiviazione Proprietario dati BLOB è un ruolo predefinito che include questa azione.
- Firma di accesso condiviso (SAS) con l'autorizzazione per accedere ai tag del BLOB (
t
autorizzazione) - Chiave dell'account
Per altre informazioni, vedere Impostazione dei tag di indice BLOB.
È possibile impostare i tag usando il metodo seguente:
I tag specificati in questo metodo sostituiranno i tag esistenti. Se i valori precedenti devono essere mantenuti, devono essere scaricati e inclusi nella chiamata a questo metodo. L'esempio seguente illustra come impostare i tag:
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)
È possibile eliminare tutti i tag passando un oggetto vuoto dict
nel set_blob_tags
metodo :
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)
Ottenere tag
È possibile ottenere tag di indice se il codice ha autorizzato l'accesso ai dati BLOB tramite uno dei meccanismi seguenti:
- Entità di sicurezza a cui viene assegnato un ruolo controllo degli accessi in base al ruolo di Azure con Microsoft.Archiviazione/storageAccounts/blobServices/containers/blobs/tags/read action. Il Archiviazione Proprietario dati BLOB è un ruolo predefinito che include questa azione.
- Firma di accesso condiviso (SAS) con l'autorizzazione per accedere ai tag del BLOB (
t
autorizzazione) - Chiave dell'account
Per altre informazioni, vedere Ottenere ed elencare i tag di indice BLOB.
È possibile ottenere tag usando il metodo seguente:
L'esempio seguente illustra come recuperare e scorrere i tag 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)
Filtrare e trovare dati con tag di indice BLOB
È possibile usare i tag di indice per trovare e filtrare i dati se il codice ha autorizzato l'accesso ai dati BLOB tramite uno dei meccanismi seguenti:
- Entità di sicurezza a cui viene assegnato un ruolo controllo degli accessi in base al ruolo di Azure con Microsoft.Archiviazione/storageAccounts/blobServices/containers/blobs/filter/action action. Il Archiviazione Proprietario dati BLOB è un ruolo predefinito che include questa azione.
- Firma di accesso condiviso con autorizzazione per filtrare i BLOB in base ai tag (
f
autorizzazione) - Chiave dell'account
Per altre informazioni, vedere Ricerca di dati tramite tag di indice BLOB.
Nota
Non è possibile usare i tag di indice per recuperare le versioni precedenti. I tag per le versioni precedenti non vengono passati al motore di indicizzazione BLOB. Per altre informazioni, vedere Condizioni e problemi noti.
È possibile trovare i dati usando il metodo seguente:
L'esempio seguente trova ed elenca tutti i BLOB contrassegnati come immagine:
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)
Impostare i tag di indice BLOB in modo asincrono
La libreria client Archiviazione BLOB di Azure per Python supporta l'uso asincrono dei tag di indice BLOB. Per altre informazioni sui requisiti di configurazione del progetto, vedere Programmazione asincrona.
Seguire questa procedura per impostare i tag di indice BLOB usando le API asincrone:
Aggiungere le seguenti istruzioni Import:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Aggiungere il codice per eseguire il programma usando
asyncio.run
. Questa funzione esegue la coroutine passata,main()
nell'esempio, e gestisce ilasyncio
ciclo di eventi. Le coroutine vengono dichiarate con la sintassi async/await. In questo esempio lamain()
coroutine crea innanzitutto il primo livelloBlobServiceClient
usandoasync with
, quindi chiama il metodo che imposta i tag di indice BLOB. Si noti che solo il client di primo livello deve usareasync with
, come altri client creati da esso condividono lo stesso pool di connessioni.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())
Aggiungere il codice per impostare i tag di indice BLOB. Il codice è uguale all'esempio sincrono, ad eccezione del fatto che il metodo viene dichiarato con la
async
parola chiave e laawait
parola chiave viene usata quando si chiamano iget_blob_tags
metodi eset_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 questa configurazione di base, è possibile implementare altri esempi in questo articolo come coroutine usando la sintassi async/await.
Risorse
Per altre informazioni su come usare i tag di indice per gestire e trovare dati usando la libreria client Archiviazione BLOB di Azure per Python, vedere le risorse seguenti.
Operazioni dell'API REST
Azure SDK per Python contiene librerie basate sull'API REST di Azure, che consentono di interagire con le operazioni dell'API REST tramite paradigmi Python noti. I metodi della libreria client per la gestione e l'uso dei tag di indice BLOB usano le operazioni API REST seguenti:
- Ottenere tag BLOB (API REST)
- Impostare tag BLOB (API REST)
- Trovare BLOB per tag (API REST)
Esempi di codice
- Visualizzare esempi di codice sincroni o asincroni di questo articolo (GitHub)
Risorse della libreria client
- Documentazione di riferimento della libreria client
- Codice sorgente della libreria client
- Pacchetto (PyPi)
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per