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.
Az Azure Storage-blobok tárolókba vannak rendezve. Mielőtt feltölthet egy blobot, először létre kell hoznia egy tárolót. Ez a cikk bemutatja, hogyan hozhat létre tárolókat a Pythonhoz készült Azure Storage ügyfélkódtárral.
A blobtárolók aszinkron API-k használatával történő létrehozásáról további információt a tároló aszinkron létrehozása című témakörben talál.
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 következő használatával pip install:
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.core.exceptions import ResourceExistsError
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Engedélyezés
Az engedélyezési mechanizmusnak rendelkeznie kell a tároló létrehozásá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 Közreműködő vagy újabb szerepkörre van szüksége. További információkért tekintse meg a Tároló létrehozása (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 tároló elnevezéséről
A tárolónévnek érvényes DNS-névnek kell lennie, mivel a tároló vagy a blobok kezeléséhez használt egyedi URI részét képezi. Tároló elnevezésekor kövesse az alábbi szabályokat:
- A tárolónevek hossza 3 és 63 karakter között lehet.
- A tárolóneveknek betűvel vagy számmal kell kezdődniük, és csak kisbetűket, számokat és kötőjelet (-) tartalmazhatnak.
- Az egymást követő kötőjelek nem használhatók a tárolónevekben.
A tárolóerőforrás URI-ja a következőképpen van formázva:
https://my-account-name.blob.core.windows.net/my-container-name
Tároló létrehozása
Tároló létrehozásához hívja meg a következő metódust a BlobServiceClient osztályból:
Tárolót a ContainerClient osztály következő metódusával is létrehozhat:
A tárolók közvetlenül a tárfiók alatt jönnek létre. Az egyik tárolót nem lehet egymás alá ágyazni. Kivétel akkor keletkezik, ha már létezik ilyen nevű tároló.
Az alábbi példa létrehoz egy tárolót egy BlobServiceClient objektumból:
def create_blob_container(self, blob_service_client: BlobServiceClient, container_name):
try:
container_client = blob_service_client.create_container(name=container_name)
except ResourceExistsError:
print('A container with this name already exists')
A gyökértároló létrehozása
A gyökértároló a tárfiók alapértelmezett tárolójaként szolgál. Minden tárfiók rendelkezhet egy gyökértárolóval, amelyet $root kell nevezni. A gyökértárolót explicit módon kell létrehozni vagy törölni.
A gyökértárolóban tárolt blobra a gyökértároló neve nélkül hivatkozhat. A gyökértárolóval hivatkozhat egy blobra a tárfiók-hierarchia legfelső szintjén. Hivatkozhat például egy blobra a gyökértárolóban az alábbiak szerint:
https://accountname.blob.core.windows.net/default.html
Az alábbi példa létrehoz egy új ContainerClient objektumot $root tárolónévvel, majd létrehozza a tárolót, ha még nem létezik a tárfiókban:
def create_blob_root_container(self, blob_service_client: BlobServiceClient):
container_client = blob_service_client.get_container_client(container="$root")
# Create the root container if it doesn't already exist
if not container_client.exists():
container_client.create_container()
Tároló aszinkron létrehozása
A Pythonhoz készült Azure Blob Storage-ügyfélkódtár aszinkron módon támogatja a blobtárolók létrehozá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.
Kövesse az alábbi lépéseket egy tároló aszinkron API-k használatával történő létrehozásához:
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 BlobServiceClient from azure.core.exceptions import ResourceExistsErrorKó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 aszinkron/várakozási szintaxissal vannak deklarálva. Ebben a példában amain()coroutine először a legfelső szintetBlobServiceClientasync withhozza létre, majd meghívja a tárolót létrehozó metódust. 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 = 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.create_blob_container(blob_service_client, "sample-container") if __name__ == '__main__': asyncio.run(main())Adjon hozzá kódot egy tároló létrehozá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 metódus meghívásakor használja acreate_containerrendszer.async def create_blob_container(self, blob_service_client: BlobServiceClient, container_name): try: container_client = await blob_service_client.create_container(name=container_name) except ResourceExistsError: print('A container with this name already exists')
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
Ha többet szeretne megtudni arról, hogyan hozhat létre tárolót a Pythonhoz készült Azure Blob Storage ügyfélkódtár használatával, 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 tároló létrehozásához használt ügyfélkódtár-metódusok a következő REST API-műveletet használják:
- Tároló létrehozása (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.