Containereigenschappen en metagegevens beheren met Python
Blob-containers ondersteunen systeemeigenschappen en door de gebruiker gedefinieerde metagegevens, naast de gegevens die ze bevatten. In dit artikel wordt beschreven hoe u systeemeigenschappen en door de gebruiker gedefinieerde metagegevens beheert met de Azure Storage-clientbibliotheek voor Python.
Vereisten
- Azure-abonnement: u kunt een gratis abonnement nemen
- Azure Storage-account: maak een opslagaccount
- Python 3.8+
Uw omgeving instellen
Als u geen bestaand project hebt, ziet u in deze sectie hoe u een project instelt voor gebruik met de Azure Blob Storage-clientbibliotheek voor Python. Zie Aan de slag met Azure Blob Storage en Python voor meer informatie.
Als u wilt werken met de codevoorbeelden in dit artikel, volgt u deze stappen om uw project in te stellen.
Pakketten installeren
Installeer de volgende pakketten met behulp van pip install
:
pip install azure-storage-blob azure-identity
Importinstructies toevoegen
Voeg de volgende import
instructies toe:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Autorisatie
Het autorisatiemechanisme moet over de benodigde machtigingen beschikken om te kunnen werken met containereigenschappen of metagegevens. Voor autorisatie met Microsoft Entra-id (aanbevolen), hebt u ingebouwde Azure RBAC-rol Storage Blob-gegevenslezer of hoger nodig voor de get-bewerkingen, en Voor de inzender voor opslagblobgegevens of hoger voor de setbewerkingen. Zie de autorisatierichtlijnen voor Het ophalen van containereigenschappen (REST API), Containermetagegevens (REST API) instellen of Containermetagegevens ophalen (REST API) voor meer informatie.
Een clientobject maken
Als u een app wilt verbinden met Blob Storage, maakt u een exemplaar van BlobServiceClient. In het volgende voorbeeld ziet u hoe u een clientobject maakt met behulp van DefaultAzureCredential
autorisatie:
# 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)
U kunt ook clientobjecten maken voor specifieke containers of blobs, rechtstreeks of vanuit het BlobServiceClient
object. Zie Clientobjecten maken en beheren die interactie hebben met gegevensbronnen voor meer informatie over het maken en beheren van clientobjecten.
Over eigenschappen en metagegevens
Systeemeigenschappen: Systeemeigenschappen bestaan op elke Blob Storage-resource. Sommige kunnen worden gelezen of ingesteld, terwijl andere alleen-lezen zijn. Achter de schermen komen sommige systeemeigenschappen overeen met bepaalde standaard HTTP-headers. De Azure Storage-clientbibliotheek voor Python onderhoudt deze eigenschappen voor u.
Door de gebruiker gedefinieerde metagegevens: door de gebruiker gedefinieerde metagegevens bestaan uit een of meer naam-waardeparen die u opgeeft voor een Blob Storage-resource. U kunt metagegevens gebruiken om extra waarden op te slaan met de resource. Metagegevenswaarden zijn alleen bedoeld voor uw eigen doeleinden en hebben geen invloed op het gedrag van de resource.
Naam/waardeparen van metagegevens zijn geldige HTTP-headers en moeten voldoen aan alle beperkingen voor HTTP-headers. Zie Namen van metagegevens voor meer informatie over naamgevingsvereisten voor metagegevens.
Containereigenschappen ophalen
Gebruik de volgende methode om containereigenschappen op te halen:
In het volgende codevoorbeeld worden de systeemeigenschappen van een container opgehaald en worden de eigenschapswaarden naar een consolevenster geschreven:
def get_properties(self, blob_service_client: BlobServiceClient, container_name):
container_client = blob_service_client.get_container_client(container=container_name)
properties = container_client.get_container_properties()
print(f"Public access type: {properties.public_access}")
print(f"Lease status: {properties.lease.status}")
print(f"Lease state: {properties.lease.state}")
print(f"Has immutability policy: {properties.has_immutability_policy}")
Metagegevens instellen en ophalen
U kunt metagegevens opgeven als een of meer naam-waardeparen op een blob of containerresource. Gebruik de volgende methode om metagegevens in te stellen:
Als u containermetagegevens instelt, worden alle bestaande metagegevens overschreven die aan de container zijn gekoppeld. Het is niet mogelijk om een afzonderlijk naam-waardepaar te wijzigen.
In het volgende codevoorbeeld worden metagegevens voor een container ingesteld:
def set_metadata(self, blob_service_client: BlobServiceClient, container_name):
container_client = blob_service_client.get_container_client(container=container_name)
# Retrieve existing metadata, if desired
metadata = container_client.get_container_properties().metadata
more_metadata = {'docType': 'text', 'docCategory': 'reference'}
metadata.update(more_metadata)
# Set metadata on the container
container_client.set_container_metadata(metadata=metadata)
Als u metagegevens wilt ophalen, roept u de volgende methode aan:
In het volgende voorbeeld worden metagegevenswaarden gelezen:
def get_metadata(self, blob_service_client: BlobServiceClient, container_name):
container_client = blob_service_client.get_container_client(container=container_name)
# Retrieve existing metadata, if desired
metadata = container_client.get_container_properties().metadata
for k, v in metadata.items():
print(k, v)
Containermetagegevens asynchroon instellen
De Azure Blob Storage-clientbibliotheek voor Python ondersteunt het asynchroon beheren van containereigenschappen en metagegevens. Zie Asynchrone programmering voor meer informatie over de vereisten voor het instellen van projecten.
Volg deze stappen om containermetagegevens 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 containermetagegevens 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 = ContainerSamples() # 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_metadata(blob_service_client, "sample-container") if __name__ == '__main__': asyncio.run(main())
Voeg code toe om de metagegevens van de container 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_container_properties
enset_container_metadata
methoden.async def set_metadata(self, blob_service_client: BlobServiceClient, container_name): container_client = blob_service_client.get_container_client(container=container_name) # Retrieve existing metadata, if desired metadata = (await container_client.get_container_properties()).metadata more_metadata = {'docType': 'text', 'docCategory': 'reference'} metadata.update(more_metadata) # Set metadata on the container await container_client.set_container_metadata(metadata=metadata)
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 instellen en ophalen van containereigenschappen en metagegevens met behulp van de Azure Blob Storage-clientbibliotheek voor Python.
Codevoorbeelden
- Synchrone of asynchrone codevoorbeelden weergeven uit dit artikel (GitHub)
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 instellen en ophalen van eigenschappen en metagegevens gebruiken de volgende REST API-bewerkingen:
- Containereigenschappen ophalen (REST API)
- Containermetagegevens instellen (REST API)
- Containermetagegevens ophalen (REST API)
De get_container_properties
methode haalt containereigenschappen en metagegevens op door zowel de bewerking Containereigenschappen ophalen als de bewerking Containermetagegevens ophalen aan te roepen.
Clientbibliotheekbronnen
Gerelateerde inhoud
- Dit artikel maakt deel uit van de ontwikkelaarshandleiding voor Blob Storage voor Python. Zie de volledige lijst met artikelen over ontwikkelaarshandleidingen in Uw Python-app bouwen voor meer informatie.