Blob-indextags gebruiken om gegevens te beheren en te zoeken met Python
In dit artikel wordt beschreven hoe u blobindextags gebruikt om gegevens te beheren en te vinden met behulp van de Azure Storage-clientbibliotheek voor Python.
Vereisten
- In dit artikel wordt ervan uitgegaan dat u al een project hebt ingesteld voor gebruik met de Azure Blob Storage-clientbibliotheek voor Python. Zie Aan de slag met Azure Blob Storage en Python voor meer informatie over het instellen van uw project, inclusief pakketinstallatie, het toevoegen
import
van instructies en het maken van een geautoriseerd clientobject. - Het autorisatiemechanisme moet machtigingen hebben om te kunnen werken met blobindextags. Zie de autorisatierichtlijnen voor de volgende REST API-bewerkingen voor meer informatie:
Over blob-indextags
Blob-indextags categoriseren gegevens in uw opslagaccount met behulp van tagkenmerken met sleutelwaarde. Deze tags worden automatisch geïndexeerd en weergegeven als doorzoekbare multidimensionale index om eenvoudig gegevens te vinden. In dit artikel leest u hoe u gegevens kunt instellen, ophalen en zoeken met behulp van blob-indextags.
Blob-indextags worden niet ondersteund voor opslagaccounts waarvoor hiërarchische naamruimte is ingeschakeld. Zie Azure Blob-gegevens beheren en vinden met blob-indextagtags voor meer informatie over de functie voor de blob-index, samen met bekende problemen en beperkingen.
Tags instellen
U kunt indextags instellen als uw code geautoriseerde toegang heeft tot blobgegevens via een van de volgende mechanismen:
- Beveiligingsprincipaal waaraan een Azure RBAC-rol is toegewezen met de actie Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write . De eigenaar van de opslagblobgegevens is een ingebouwde rol die deze actie omvat.
- Shared Access Signature (SAS) met machtiging voor toegang tot de tags van de blob (
t
machtiging) - Accountsleutel
Zie Blobindextags instellen voor meer informatie.
U kunt tags instellen met behulp van de volgende methode:
De opgegeven tags in deze methode vervangen bestaande tags. Als oude waarden moeten worden bewaard, moeten ze worden gedownload en opgenomen in de aanroep van deze methode. In het volgende voorbeeld ziet u hoe u tags instelt:
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)
U kunt alle tags verwijderen door een leeg dict
object door te geven aan de set_blob_tags
methode:
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)
Tags ophalen
U kunt indextags ophalen als uw code geautoriseerde toegang heeft tot blobgegevens via een van de volgende mechanismen:
- Beveiligingsprincipaal waaraan een Azure RBAC-rol is toegewezen met de actie Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read . De eigenaar van de opslagblobgegevens is een ingebouwde rol die deze actie omvat.
- Shared Access Signature (SAS) met machtiging voor toegang tot de tags van de blob (
t
machtiging) - Accountsleutel
Zie Blob-indextags ophalen en vermelden voor meer informatie.
U kunt tags ophalen met behulp van de volgende methode:
In het volgende voorbeeld ziet u hoe u de tags van de blob kunt ophalen en herhalen:
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)
Gegevens filteren en zoeken met blobindextags
U kunt indextags gebruiken om gegevens te zoeken en te filteren als uw code geautoriseerde toegang heeft tot blobgegevens via een van de volgende mechanismen:
- Beveiligingsprincipaal waaraan een Azure RBAC-rol is toegewezen met de actie Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action . De eigenaar van de opslagblobgegevens is een ingebouwde rol die deze actie omvat.
- Shared Access Signature (SAS) met machtiging voor het filteren van blobs op tags (
f
machtiging) - Accountsleutel
Zie Gegevens zoeken met behulp van blobindextags voor meer informatie.
Notitie
U kunt geen indextags gebruiken om eerdere versies op te halen. Tags voor eerdere versies worden niet doorgegeven aan de blob-indexengine. Zie Voorwaarden en bekende problemen voor meer informatie.
U kunt gegevens vinden met behulp van de volgende methode:
In het volgende voorbeeld worden alle blobs gevonden en weergegeven die als afbeelding zijn getagd:
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)
Blob-indextags asynchroon instellen
De Azure Blob Storage-clientbibliotheek voor Python ondersteunt het asynchroon werken met blob-indextags. Zie Asynchrone programmering voor meer informatie over de vereisten voor het instellen van projecten.
Volg deze stappen om blobindextags in te stellen met behulp van asynchrone API's:
Voeg de volgende importinstructies toe:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Voeg code toe om het programma uit te voeren met behulp van
asyncio.run
. Met deze functie wordt de doorgegeven coroutine uitgevoerd inmain()
ons voorbeeld en wordt deasyncio
gebeurtenislus beheerd. Coroutines worden gedeclareerd met de syntaxis async/await. In dit voorbeeld maakt demain()
coroutine eerst het hoogste niveauBlobServiceClient
met behulp vanasync with
en roept vervolgens de methode aan waarmee de blob-indextags worden ingesteld. Houd er rekening mee dat alleen de client op het hoogste niveau moet worden gebruiktasync with
, omdat andere clients die ermee zijn gemaakt, dezelfde verbindingsgroep delen.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())
Voeg code toe om de blobindextags in te stellen. De code is hetzelfde als het synchrone voorbeeld, behalve dat de methode wordt gedeclareerd met het
async
trefwoord en het trefwoord wordt gebruikt bij hetawait
aanroepen van deget_blob_tags
enset_blob_tags
methoden.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)
Met deze basisinstallatie kunt u andere voorbeelden in dit artikel implementeren als coroutines met behulp van async/await syntaxis.
Resources
Zie de volgende resources voor meer informatie over het gebruik van indextags voor het beheren en vinden van gegevens met behulp van de Azure Blob Storage-clientbibliotheek voor Python.
REST API-bewerkingen
De Azure SDK voor Python bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via bekende Python-paradigma's. De clientbibliotheekmethoden voor het beheren en gebruiken van blobindextags gebruiken de volgende REST API-bewerkingen:
- Blobtags ophalen (REST API)
- Blobtags instellen (REST API)
- Blobs zoeken op tags (REST API)
Codevoorbeelden
- Synchrone of asynchrone codevoorbeelden weergeven uit dit artikel (GitHub)
Clientbibliotheekbronnen
Zie ook
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort: Gedurende 2024 worden GitHub Issues uitgefaseerd als het feedbackmechanisme voor inhoud. Dit wordt vervangen door een nieuw feedbacksysteem. Ga voor meer informatie naar:Feedback verzenden en bekijken voor