Ta bort och återställa en blobcontainer med Python
Den här artikeln visar hur du tar bort containrar med Azure Storage-klientbiblioteket för Python. Om du har aktiverat mjuk borttagning av containrar kan du återställa borttagna containrar.
Mer information om hur du tar bort en blobcontainer med asynkrona API:er finns i Ta bort en container asynkront.
Förutsättningar
- Den här artikeln förutsätter att du redan har ett projekt konfigurerat för att fungera med Azure Blob Storage-klientbiblioteket för Python. Mer information om hur du konfigurerar projektet, inklusive paketinstallation, tillägg
import
av instruktioner och skapande av ett auktoriserat klientobjekt finns i Komma igång med Azure Blob Storage och Python. - Auktoriseringsmekanismen måste ha behörighet att ta bort en blobcontainer eller återställa en mjuk borttagen container. Mer information finns i auktoriseringsvägledningen för följande REST API-åtgärder:
Ta bort en container
Om du vill ta bort en container i Python använder du följande metod från klassen BlobServiceClient :
Du kan också ta bort en container med hjälp av följande metod från klassen ContainerClient :
När du har tagit bort en container kan du inte skapa en container med samma namn på minst 30 sekunder. Försök att skapa en container med samma namn misslyckas med HTTP-felkoden 409 (Conflict)
. Andra åtgärder i containern eller blobarna som den innehåller misslyckas med HTTP-felkoden 404 (Not Found)
.
I följande exempel används ett BlobServiceClient
objekt för att ta bort den angivna containern:
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()
I följande exempel visas hur du tar bort alla containrar som börjar med ett angivet prefix:
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()
Återställa en borttagen container
När mjuk borttagning av containrar är aktiverat för ett lagringskonto kan en borttagen container och dess innehåll återställas inom en angiven kvarhållningsperiod. Mer information om mjuk borttagning av containrar finns i Aktivera och hantera mjuk borttagning för containrar. Du kan återställa en mjuk borttagen container genom att anropa följande metod för BlobServiceClient
klassen:
I följande exempel hittar du en borttagen container, hämtar versionen av den borttagna containern och skickar sedan versionen till undelete_container
metoden för att återställa containern.
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)
Ta bort en container asynkront
Azure Blob Storage-klientbiblioteket för Python stöder borttagning av en blobcontainer asynkront. Mer information om krav för projektkonfiguration finns i Asynkron programmering.
Följ dessa steg för att ta bort en container med asynkrona API:er:
Lägg till följande importinstruktioner:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Lägg till kod för att köra programmet med .
asyncio.run
Den här funktionen kör den skickade coroutinenmain()
i vårt exempel och hanterar händelseloopenasyncio
. Coroutines deklareras med syntaxen async/await. I det här exempletmain()
skapar coroutinen först den översta nivånBlobServiceClient
med ochasync with
anropar sedan metoden som tar bort containern. Observera att endast klienten på den översta nivån behöver användaasync with
, eftersom andra klienter som skapats från den delar samma anslutningspool.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())
Lägg till kod för att ta bort containern. Koden är samma som det synkrona exemplet, förutom att metoden deklareras med nyckelordet
async
och nyckelordetawait
används när metoden anropasdelete_container
.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()
Med den här grundläggande konfigurationen på plats kan du implementera andra exempel i den här artikeln som coroutines med hjälp av async/await-syntax.
Resurser
Mer information om hur du tar bort en container med hjälp av Azure Blob Storage-klientbiblioteket för Python finns i följande resurser.
REST API-åtgärder
Azure SDK för Python innehåller bibliotek som bygger på Azure REST API så att du kan interagera med REST API-åtgärder via välbekanta Python-paradigm. Klientbiblioteksmetoderna för att ta bort eller återställa en container använder följande REST API-åtgärder:
- Ta bort container (REST API)
- Återställningscontainer (REST API)
Kodexempel
Klientbiblioteksresurser
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för