Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A blobok az általuk tárolt adatokon kívül támogatják a rendszer tulajdonságait és a felhasználó által definiált metaadatokat. Ez a cikk bemutatja, hogyan kezelheti a rendszertulajdonságokat és a felhasználó által definiált metaadatokat a Pythonhoz készült Azure Storage-ügyfélkódtár használatával.
A tulajdonságok és metaadatok aszinkron API-k használatával történő kezelésével kapcsolatos további információkért lásd : Blob-metaadatok aszinkron beállítása.
Előfeltételek
- Azure-előfizetés – hozzon létre egyet ingyenesen
- Azure Storage-fiók – tárfiók létrehozása
- Python 3.8+
Saját környezet beállítása
Ha nem rendelkezik meglévő projekttel, ez a szakasz bemutatja, hogyan állíthat be egy projektet a PythonHoz készült Azure Blob Storage ügyfélkódtár használatához. További részletekért tekintse meg az Azure Blob Storage és a Python használatának első lépéseit.
A jelen cikkben szereplő példakódok használatához kövesse az alábbi lépéseket a projekt beállításához.
Csomagok telepítése
Telepítse a következő csomagokat a pip install használatával:
pip install azure-storage-blob azure-identity
Importálási utasítások hozzáadása
Adja hozzá a következő import-utasításokat:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient, ContentSettings
Engedélyezés
Az engedélyezési mechanizmusnak rendelkeznie kell a tárolótulajdonságok vagy metaadatok használatához szükséges engedélyekkel. A Microsoft Entra-azonosítóval való engedélyezéshez (ajánlott) az Azure RBAC beépített szerepkörű Storage Blob Data Reader vagy annál magasabb szükséges a lekérési műveletekhez, és Storage Blob Data Contributor vagy annál magasabb a beállítási műveletekhez. További információért tekintse meg a Blob tulajdonságainak beállítása (REST API), a Blob tulajdonságainak lekérése (REST API), a Blob-metaadatok beállítása (REST API) vagy a Blob-metaadatok lekérése (REST API) engedélyezési útmutatóját.
Ügyfélobjektum létrehozása
Ha egy alkalmazást a Blob Storage-hoz szeretne csatlakoztatni, hozzon létre egy BlobServiceClient-példányt. Az alábbi példa bemutatja, hogyan hozhat létre ügyfélobjektumot DefaultAzureCredential engedélyezés céljából:
# 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)
Ügyfélobjektumokat is létrehozhat adott tárolókhoz vagy blobokhoz közvetlenül vagy az BlobServiceClient objektumból. Az ügyfélobjektumok létrehozásáról és kezeléséről további információt az adaterőforrásokat kezelő ügyfélobjektumok létrehozása és kezelése című témakörben talál.
Tudnivalók a tulajdonságokról és a metaadatokról
Rendszertulajdonságok: A rendszertulajdonságok minden Blob Storage-erőforráson léteznek. Egy részük olvasható vagy beállítható, míg mások csak olvashatók. A borítók alatt egyes rendszertulajdonságok megfelelnek bizonyos szabványos HTTP-fejléceknek. A Pythonhoz készült Azure Storage ügyfélkönyvtár fenntartja ezeket a tulajdonságokat neked.
Felhasználó által definiált metaadatok: A felhasználó által definiált metaadatok egy vagy több, Blob Storage-erőforráshoz megadott név-érték párból állnak. Metaadatok használatával további értékeket tárolhat az erőforrással. A metaadat-értékek csak saját célra szolgálnak, és nem befolyásolják az erőforrás viselkedését.
A metaadat-név/érték párok érvényes HTTP-fejlécek, és be kell tartaniuk a HTTP-fejlécekre vonatkozó összes korlátozást. A metaadatok elnevezési követelményeiről további információt a Metaadatnevek című témakörben talál.
Feljegyzés
A blobindex-címkék emellett lehetővé teszik a felhasználó által meghatározott kulcs-/értékattribútumok tárolását egy Azure Blob Storage-erőforrás mellett. Bár a metaadatokhoz hasonlóan csak a blob index címkék lesznek automatikusan indexelve, és a natív blobszolgáltatás teszi kereshetővé. A metaadatok csak akkor indexelhetők és kérdezhetők le, ha nem használ külön szolgáltatást, például az Azure Search szolgáltatást.
A funkcióról további információt az Azure Blob Storage-adatok kezelése és keresése blobindexszel (előzetes verzió) című témakörben talál.
Tulajdonságok beállítása és lekérése
A blob tulajdonságainak beállításához használja a következő módszert:
A nem explicit módon beállított tulajdonságok törlődnek. A meglévő tulajdonságok megőrzéséhez először lekérheti a blobtulajdonságokat, majd azokkal feltöltheti a nem frissített fejléceket.
Az alábbi példakód egy blobon állítja be a content_type rendszer- és content_language a rendszertulajdonságokat, miközben megőrzi a meglévő tulajdonságokat:
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)
Egy blob tulajdonságainak lekéréséhez használja a következő módszert:
- BlobClient.get_blob_properties (visszaszerzi a blob tulajdonságait)
Az alábbi példakód lekéri egy blob rendszertulajdonságait, és megjeleníti az értékek egy részét:
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}")
Metaadatok beállítása és lekérése
A metaadatokat egy vagy több név-érték párként is megadhatja egy blob- vagy tárolóerőforráson. A metaadatok beállításához küldjön egy név-érték párokat tartalmazó szótárt a következő módszerrel:
Az alábbi példakód egy blob metaadatait állítja be:
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)
A metaadatok lekéréséhez hívja meg a blob get_blob_properties metódusát a metaadat-gyűjtemény feltöltéséhez, majd olvassa el az értékeket az alábbi példában látható módon. A get_blob_properties metódus a blobtulajdonságokat és a metaadatokat a Blob tulajdonságainak lekérése művelet és a Blob metaadatok lekérése művelet meghívásával kéri le.
Az alábbi kódpéldában metaadatok olvashatók egy blobon, és kinyomtatja az egyes kulcs-érték párokat:
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)
Blob-metaadatok aszinkron beállítása
A Pythonhoz készült Azure Blob Storage ügyfélkódtár támogatja a blobtulajdonságok és metaadatok aszinkron kezelését. A projektbeállítási követelményekről további információt az Aszinkron programozás című témakörben talál.
A blob metaadatainak aszinkron API-k használatával történő beállításához kövesse az alábbi lépéseket:
Adja hozzá a következő importálási utasításokat:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClientKód hozzáadása a program futtatásához a következő használatával:
asyncio.run. Ez a függvény a példánkban futtatja az átadott koroutint,main()és kezeli azasyncioeseményhurokot. A koroutinok az async/await szintaxissal vannak deklarálva. Ebben a példában amain()coroutine először aBlobServiceClientsegítségével létrehozza aasync withfelső szintet, majd meghívja a metódust, amely beállítja annak a blob metaadatait. Vegye figyelembe, hogy csak a legfelső szintű ügyfélnek kell használniaasync with, mivel az abból létrehozott többi ügyfél ugyanazt a kapcsolatkészletet használja.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())Adjon hozzá kódot a blob metaadatainak beállításához. A kód megegyezik a szinkron példával, azzal a kivétellel, hogy a metódus a kulcsszóval
asyncvan deklarálva, és aawaitkulcsszót a rendszer a metódusok ésget_blob_propertiesmetódusokset_blob_metadatameghívásakor használja.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)
Ezzel az alapszintű beállítással a cikkben más példákat is implementálhat coroutinesként az aszinkron/várakozási szintaxis használatával.
Források
A rendszertulajdonságok és a felhasználó által definiált metaadatok Pythonhoz készült Azure Blob Storage-ügyfélkódtár használatával történő kezelésével kapcsolatos további információkért tekintse meg az alábbi erőforrásokat.
Kódminták
- Szinkron vagy aszinkron kódminták megtekintése ebből a cikkből (GitHub)
REST API-műveletek
Az Azure SDK for Python olyan kódtárakat tartalmaz, amelyek az Azure REST API-ra épülnek, lehetővé téve a REST API-műveletek használatát jól ismert Python-paradigmákon keresztül. A rendszertulajdonságok és a felhasználó által definiált metaadatok kezelésére szolgáló ügyfélkódtár-metódusok a következő REST API-műveleteket használják:
- Blobtulajdonságok beállítása (REST API)
- Blobtulajdonságok lekérése (REST API)
- Blob-metaadatok beállítása (REST API)
- Blob-metaadatok lekérése (REST API)
Ügyfélkódtár erőforrásai
Kapcsolódó tartalom
- Ez a cikk a Python Blob Storage fejlesztői útmutatójának része. További információkért tekintse meg a Python-alkalmazás buildeléséhez kapcsolódó fejlesztői útmutatók teljes listáját.