Blobtároló létrehozása a Pythonnal
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
- Ez a cikk feltételezi, hogy már van egy projektje, amely a PythonHoz készült Azure Blob Storage ügyfélkódtárral működik együtt. Ha többet szeretne megtudni a projekt beállításáról, beleértve a csomagtelepítést, az utasítások hozzáadását
import
és egy engedélyezett ügyfélobjektum létrehozását, olvassa el az Azure Blob Storage és a Python használatának első lépéseit. - Az engedélyezési mechanizmusnak rendelkeznie kell a blobtároló létrehozásához szükséges engedélyekkel. További információkért tekintse meg az alábbi REST API-művelet engedélyezési útmutatóját:
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 ResourceExistsError
Kó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 azasyncio
eseményhurokot. A koroutinok az aszinkron/várakozási szintaxissal vannak deklarálva. Ebben a példában amain()
coroutine először a legfelső szintetBlobServiceClient
async with
hozza 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
async
van deklarálva, és aawait
kulcsszót a metódus meghívásakor használja acreate_container
rendszer.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.
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)
Kódminták
- Szinkron vagy aszinkron kódminták megtekintése ebből a cikkből (GitHub)
Ügyfélkódtár erőforrásai
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: