Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Kromě dat, která obsahují, podporují objekty blob systémové vlastnosti a uživatelsky definovaná metadata. Tento článek ukazuje, jak spravovat vlastnosti systému a uživatelsky definovaná metadata pomocí klientské knihovny azure Storage pro Python.
Další informace o správě vlastností a metadat pomocí asynchronních rozhraní API najdete v tématu Nastavení metadat objektů blob asynchronně.
Prerequisites
- Předplatné Azure – vytvoření bezplatného předplatného
- Účet úložiště Azure – Vytvoření účtu úložiště
- Python 3.8 nebo novější
Nastavení prostředí
Pokud nemáte existující projekt, v této části se dozvíte, jak nastavit projekt pro práci s klientskou knihovnou Azure Blob Storage pro Python. Další podrobnosti najdete v tématu Začínáme se službou Azure Blob Storage a Pythonem.
Pokud chcete pracovat s příklady kódu v tomto článku, nastavte projekt pomocí následujícího postupu.
Instalace balíčků
Nainstalujte následující balíčky pomocí pip install:
pip install azure-storage-blob azure-identity
Přidejte příkazy importu
Přidejte následující import příkazy:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient, ContentSettings
Authorization
Autorizační mechanismus musí mít potřebná oprávnění pro práci s vlastnostmi kontejneru nebo metadaty. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete pro operace 'get' integrovanou roli Azure RBAC Storage Blob Data Reader nebo vyšší a roli Storage Blob Data Contributor nebo vyšší pro operace 'set'. Další informace najdete v pokynech k autorizaci k nastavení vlastností objektů blob (REST API),získání vlastností objektů blob (REST API),nastavení metadat objektů blob (REST API) nebo získání metadat objektů blob (REST API).
Vytvoření objektu klienta
Pokud chcete připojit aplikaci ke službě Blob Storage, vytvořte instanci BlobServiceClient. Následující příklad ukazuje, jak pomocí DefaultAzureCredential vytvořit objekt klienta pro autorizaci.
# 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)
Můžete také vytvořit klientské objekty pro konkrétní kontejnery nebo objekty blob, a to buď přímo, nebo z objektu BlobServiceClient . Další informace o vytváření a správě klientských objektů najdete v tématu Vytváření a správa klientských objektů, které pracují s datovými prostředky.
O vlastnostech a metadatech
Systémové vlastnosti: Systémové vlastnosti existují pro každý prostředek úložiště objektů blob. Některé z nich můžou být přečtené nebo nastavené, zatímco jiné jsou jen pro čtení. Pod popisky některé systémové vlastnosti odpovídají určitým standardním hlavičkám HTTP. Klientská knihovna Azure Storage pro Python tyto vlastnosti udržuje za vás.
Uživatelsky definovaná metadata: Uživatelsky definovaná metadata se skládají z jednoho nebo více párů název-hodnota, které zadáte pro prostředek úložiště objektů blob. Metadata můžete použít k uložení dalších hodnot k prostředku. Hodnoty metadat jsou určené jenom pro vaše vlastní účely a nemají vliv na chování prostředku.
Páry názvů a hodnot metadat jsou platné hlavičky HTTP a měly by dodržovat všechna omezení, která se řídí hlavičkami HTTP. Pro více informací o požadavcích na pojmenování metadat, viz Metadata names.
Note
Značky indexu objektů blob také poskytují možnost ukládat uživatelem definované atributy ve formátu klíč/hodnota vedle prostředku úložiště objektů blob v Azure. Podobně jako metadata se automaticky indexují pouze značky indexu objektů blob a jsou prohledávané prostřednictvím nativní blobové služby. Metadata nelze indexovat a dotazovat, pokud nevyužíváte samostatnou službu, jako je Azure Search.
Další informace o této funkci najdete v tématu Správa a vyhledání dat ve službě Azure Blob Storage pomocí indexu objektů blob (Preview).
Nastavení a načtení vlastností
K nastavení vlastností objektu blob použijte následující metodu:
Všechny vlastnosti, které nejsou explicitně nastaveny, jsou vymazány. Pokud chcete zachovat všechny existující vlastnosti, můžete nejprve načíst vlastnosti objektu blob a pak je použít k naplnění hlaviček, které se neaktualizují.
Následující příklad kódu nastaví systémové vlastnosti content_type a content_language na objektu blob při zachování existujících vlastností:
def set_properties(self, blob_service_client: BlobServiceClient, container_name):
blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
# Get the existing blob properties
properties = blob_client.get_blob_properties()
# Set the content_type and content_language headers, and populate the remaining headers from the existing properties
blob_headers = ContentSettings(content_type="text/plain",
content_encoding=properties.content_settings.content_encoding,
content_language="en-US",
content_disposition=properties.content_settings.content_disposition,
cache_control=properties.content_settings.cache_control,
content_md5=properties.content_settings.content_md5)
blob_client.set_http_headers(blob_headers)
K načtení vlastností objektu blob použijte následující metodu:
Následující příklad kódu získá systémové vlastnosti objektu blob a zobrazí některé hodnoty:
def get_properties(self, blob_service_client: BlobServiceClient, container_name):
blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
properties = blob_client.get_blob_properties()
print(f"Blob type: {properties.blob_type}")
print(f"Blob size: {properties.size}")
print(f"Content type: {properties.content_settings.content_type}")
print(f"Content language: {properties.content_settings.content_language}")
Nastavení a načtení metadat
Metadata můžete zadat jako jeden nebo více párů název-hodnota v objektu blob nebo prostředku kontejneru. Pokud chcete nastavit metadata, odešlete slovník obsahující páry name-value pomocí následující metody:
Následující příklad kódu nastaví metadata objektu blob:
def set_metadata(self, blob_service_client: BlobServiceClient, container_name):
blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
# Retrieve existing metadata, if desired
blob_metadata = blob_client.get_blob_properties().metadata
more_blob_metadata = {'docType': 'text', 'docCategory': 'reference'}
blob_metadata.update(more_blob_metadata)
# Set metadata on the blob
blob_client.set_blob_metadata(metadata=blob_metadata)
Pokud chcete načíst metadata, zavolejte metodu get_blob_properties objektu blob, která naplní kolekci metadat a pak přečte hodnoty, jak je znázorněno v následujícím příkladu. Metoda get_blob_properties načte vlastnosti objektu blob a metadata voláním operace Get Blob Properties a Get Blob Metadata operace.
Následující příklad kódu načte metadata objektu blob a vytiskne jednotlivé páry klíč/hodnota:
def get_metadata(self, blob_service_client: BlobServiceClient, container_name):
blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
# Retrieve existing metadata, if desired
blob_metadata = blob_client.get_blob_properties().metadata
for k, v in blob_metadata.items():
print(k, v)
Asynchronní nastavení metadat objektů blob
Klientská knihovna Azure Blob Storage pro Python podporuje asynchronně správu vlastností a metadat objektů blob. Další informace o požadavcích na nastavení projektu najdete v tématu Asynchronní programování.
Pomocí následujících kroků nastavte metadata objektů blob pomocí asynchronních rozhraní API:
Přidejte následující příkazy importu:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClientPřidejte kód pro spuštění programu pomocí
asyncio.run. Tato funkce spustí předanou korutinu v našem příkladumain()a spravuje událostní smyčkuasyncio. Koroutiny jsou deklarovány syntaxí async/await. V tomto příkladumain()korutina nejprve vytvoří nejvyšší vrstvuBlobServiceClientpomocíasync with, a pak zavolá metodu, která nastaví metadata objektu blob. Mějte na paměti, že pouze klient nejvyšší úrovně musí používatasync with, protože ostatní klienti, kteří jsou z něj vytvořeni, sdílejí stejný fond připojení.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_metadata(blob_service_client, "sample-container") if __name__ == '__main__': asyncio.run(main())Přidejte kód pro nastavení metadat objektů blob. Kód je stejný jako synchronní příklad, s tím rozdílem, že metoda je deklarována s použitím klíčového slova
asynca při volání metodawaitaget_blob_propertiesse používá klíčové slovoset_blob_metadata.async def set_metadata(self, blob_service_client: BlobServiceClient, container_name): blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt") # Retrieve existing metadata, if desired properties = await blob_client.get_blob_properties() blob_metadata = properties.metadata more_blob_metadata = {'docType': 'text', 'docCategory': 'reference'} blob_metadata.update(more_blob_metadata) # Set metadata on the blob await blob_client.set_blob_metadata(metadata=blob_metadata)
S tímto základním nastavením můžete další příklady v tomto článku implementovat jako korutiny pomocí syntaxe async/await.
Resources
Další informace o správě systémových vlastností a uživatelsky definovaných metadat pomocí klientské knihovny azure Blob Storage pro Python najdete v následujících zdrojích informací.
Ukázky kódu
- Zobrazení synchronních nebo asynchronních ukázek kódu z tohoto článku (GitHub)
Operace rozhraní REST API
Sada Azure SDK pro Python obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat Pythonu. Metody klientské knihovny pro správu systémových vlastností a uživatelsky definovaných metadat používají následující operace rozhraní REST API:
- Nastavení vlastností objektu blob (REST API)
- Získání vlastností objektu blob (REST API)
- Nastavení metadat objektů blob (REST API)
- Získání metadat objektů blob (REST API)
Prostředky klientské knihovny
Související obsah
- Tento článek je součástí příručky pro vývojáře služby Blob Storage pro Python. Další informace najdete v úplném seznamu článků příručky pro vývojáře na webu Sestavení aplikace v Pythonu.