Blobtároló törlése és visszaállítása a Pythonnal
Ez a cikk bemutatja, hogyan törölhet tárolókat a Pythonhoz készült Azure Storage ügyfélkódtárral. Ha engedélyezte a tárolók helyreállítható törlését, visszaállíthatja a törölt tárolókat.
A blobtároló aszinkron API-k használatával történő törléséről további információt a tároló aszinkron törlése 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.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Engedélyezés
Az engedélyezési mechanizmusnak rendelkeznie kell a tároló törléséhez vagy visszaállítá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ó törlése (REST API) és a Rest API (Rest API) helyreállítására vonatkozó engedélyezési útmutató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.
Tároló törlése
Tároló pythonban való törléséhez használja a BlobServiceClient osztály következő metódusát:
A tárolót a Következő módszerrel is törölheti a ContainerClient osztályból:
A tároló törlése után legalább 30 másodpercig nem hozhat létre azonos nevű tárolót. Az azonos nevű tároló létrehozása HTTP-hibakóddal 409 (Conflict)
meghiúsul. A tárolón vagy a blobokon található egyéb műveletek HTTP-hibakóddal 404 (Not Found)
fognak meghiúsulni.
Az alábbi példa egy BlobServiceClient
objektumot használ a megadott tároló törléséhez:
def delete_container(self, blob_service_client: BlobServiceClient, container_name):
container_client = blob_service_client.get_container_client(container=container_name)
container_client.delete_container()
Az alábbi példa bemutatja, hogyan törölhet minden olyan tárolót, amely egy megadott előtaggal kezdődik:
def delete_container_prefix(self, blob_service_client: BlobServiceClient):
container_list = list(blob_service_client.list_containers(name_starts_with="test-"))
assert len(container_list) >= 1
for container in container_list:
# Find containers with the specified prefix and delete
container_client = blob_service_client.get_container_client(container=container.name)
container_client.delete_container()
Törölt tároló visszaállítása
Ha a tároló helyreállítható törlése engedélyezve van egy tárfiókhoz, a törölt tároló és tartalma egy megadott megőrzési időn belül helyreállhat. A tárolók helyreállítható törléséről további információt a tárolók helyreállítható törlésének engedélyezése és kezelése című témakörben talál. Helyreállíthatóan törölt tárolót az osztály alábbi metódusának BlobServiceClient
meghívásával állíthat vissza:
Az alábbi példa megkeres egy törölt tárolót, lekéri a törölt tároló verzióját, majd átadja a verziót a undelete_container
tároló visszaállítására szolgáló módszernek.
def restore_deleted_container(self, blob_service_client: BlobServiceClient, container_name):
container_list = list(
blob_service_client.list_containers(include_deleted=True))
assert len(container_list) >= 1
for container in container_list:
# Find the deleted container and restore it
if container.deleted and container.name == container_name:
restored_container_client = blob_service_client.undelete_container(
deleted_container_name=container.name, deleted_container_version=container.version)
Tároló aszinkron törlése
A Pythonhoz készült Azure Blob Storage ügyfélkódtár támogatja a blobtároló aszinkron törlé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 tároló aszinkron API-k használatával történő törléséhez 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 BlobServiceClient
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 törlő 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.delete_container(blob_service_client, "sample-container") if __name__ == '__main__': asyncio.run(main())
Adjon hozzá kódot a tároló törléséhez. 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 adelete_container
rendszer.async def delete_container(self, blob_service_client: BlobServiceClient, container_name): container_client = blob_service_client.get_container_client(container=container_name) await container_client.delete_container()
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 egy tároló törléséről 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ó törlésére vagy visszaállítására szolgáló ügyfélkódtár-metódusok a következő REST API-műveleteket használják:
Ügyfélkódtár erőforrásai
Lásd még
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.