Löschen und Wiederherstellen eines Blobcontainers mit Python
In diesem Artikel wird beschrieben, wie Container mit der Azure Storage-Clientbibliothek für Python gelöscht werden. Wenn Sie das vorläufige Löschen von Containern aktiviert haben, können Sie gelöschte Container wiederherstellen.
Informationen zum Löschen eines Blobcontainers mithilfe asynchroner APIs finden Sie unter Asynchrones Löschen eines Containers.
Voraussetzungen
- Azure-Abonnement – Erstellen eines kostenlosen Kontos
- Azure Storage-Konto – Erstellen eines Speicherkontos
- Ab Python 3.8
Erstellen Ihrer Umgebung
Wenn Sie kein vorhandenes Projekt haben, wird in diesem Abschnitt gezeigt, wie Sie ein Projekt für die Arbeit mit der Azure Blob Storage-Clientbibliothek für Python einrichten. Weitere Details finden Sie unter Erste Schritte mit Azure Blob Storage und Python.
Um die Codebeispiele in diesem Artikel zu verwenden, führen Sie die folgenden Schritte zum Einrichten Ihres Projekts aus.
Installieren von Paketen
Installieren Sie die folgenden Pakete mittels pip install
:
pip install azure-storage-blob azure-identity
Hinzufügen von Importanweisungen
Fügen Sie die folgenden import
-Anweisungen ein:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Autorisierung
Der Autorisierungsmechanismus muss über die erforderlichen Berechtigungen zum Löschen oder Wiederherstellen eines Containers verfügen. Für die Autorisierung mit Microsoft Entra ID (empfohlen) benötigen Sie mindestens die integrierte Azure RBAC-Rolle Mitwirkender an Storage-Blobdaten. Weitere Informationen finden Sie im Autorisierungsleitfaden für Delete Container (REST-API) und Restore Container (REST-API).
Erstellen eines Clientobjekts
Um eine App mit Blob Storage zu verbinden, erstellen Sie eine Instanz von BlobServiceClient. Das folgende Beispiel zeigt, wie Sie ein Clientobjekt mithilfe von DefaultAzureCredential
für die Autorisierung erstellen:
# 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)
Sie können auch Clientobjekte für bestimmte Container oder Blobs erstellen, entweder direkt oder aus dem BlobServiceClient
-Objekt. Weitere Informationen zum Erstellen und Verwalten von Clientobjekten finden Sie unter Erstellen und Verwalten von Clientobjekten, die mit Datenressourcen interagieren.
Löschen eines Containers
Verwenden Sie zum Löschen eines Containers in Python die folgende Methode aus der Klasse BlobServiceClient:
Sie können einen Container auch mithilfe der folgenden Methode aus der Klasse ContainerClient löschen:
Nachdem Sie einen Container gelöscht haben, können Sie mindestens 30 Sekunden lang keinen Container mit demselben Namen erstellen. Beim Versuch, einen gleichnamigen Container zu erstellen, tritt der HTTP-Fehlercode 409 (Conflict)
auf. Bei allen anderen Vorgängen für den Container oder den darin enthaltenen Blobs tritt der HTTP-Fehlercode 404 (Not Found)
auf.
Im folgenden Beispiel wird ein BlobServiceClient
-Objekt zum Löschen des angegebenen Containers verwendet:
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()
Im folgenden Beispiel wird gezeigt, wie alle Container gelöscht werden, die mit einem angegebenen Präfix beginnen:
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()
Wiederherstellen eines gelöschten Containers
Wenn das vorläufige Löschen für Container in einem Speicherkonto aktiviert ist, kann ein Container und dessen Inhalt nach dem Löschen innerhalb eines von Ihnen angegebenen Aufbewahrungszeitraums wiederhergestellt werden. Weitere Informationen zum vorläufigen Löschen für Container finden Sie unter Aktivieren und Verwalten des vorläufigen Löschens für Container. Sie können vorläufig gelöschte Container wiederherstellen, indem Sie die folgende Methode der BlobServiceClient
-Klasse aufrufen:
Im folgenden Beispiel wird ein gelöschter Container gefunden, die Version dieses gelöschten Containers abgerufen und dann an die undelete_container
-Methode übergeben, um den Container wiederherzustellen.
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)
Asynchrones Löschen eines Containers
Die Azure Blob Storage-Clientbibliothek für Python unterstützt das asynchrone Löschen von Blobcontainern. Weitere Informationen zu den Projekteinrichtungsanforderungen finden Sie unter Asynchrone Programmierung.
Führen Sie die folgenden Schritte aus, um einen Container mithilfe asynchroner APIs zu löschen:
Fügen Sie die folgenden import-Anweisungen hinzu:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Fügen Sie Code hinzu, um das Programm mithilfe von
asyncio.run
auszuführen. Diese Funktion führt die übergebene Coroutine aus,main()
in unserem Beispiel, und verwaltet die Ereignisschleife vonasyncio
. Coroutinen werden mit der async/await-Syntax deklariert. In diesem Beispiel erstellt die Coroutinemain()
zunächst dasBlobServiceClient
-Element auf oberster Ebene mitasync with
und ruft dann die Methode auf, die den Container löscht. Beachten Sie, dass nur der Client auf oberster Ebeneasync with
verwenden muss, da andere von ihm erstellte Clients denselben Verbindungspool aufweisen.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())
Fügen Sie Code zum Löschen des Containers hinzu. Der Code ist identisch mit dem synchronen Beispiel, mit der Ausnahme, dass die Methode mit dem Schlüsselwort „
async
“ deklariert wird und das Schlüsselwort „await
‘‘ beim Aufrufen der Methode „delete_container
“ verwendet wird.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()
Mit dieser grundlegenden Einrichtung können Sie weitere Beispiele in diesem Artikel als Coroutinen mit async/await-Syntax implementieren.
Ressourcen
Weitere Informationen zum Löschen eines Containers mithilfe der Azure Blob Storage-Clientbibliothek für Python finden Sie in den folgenden Ressourcen.
Codebeispiele
- Anzeigen synchroner oder asynchroner Codebeispiele aus diesem Artikel (GitHub)
REST-API-Vorgänge
Das Azure SDK für Python enthält Bibliotheken, die auf der Azure-REST-API basieren, und ermöglicht Ihnen so die Interaktion mit REST-API-Vorgängen über vertraute Python-Paradigmen. Die Clientbibliotheksmethoden zum Löschen oder Wiederherstellen eines Containers verwenden die folgenden REST-API-Vorgänge:
- Delete Container (REST-API)
- Container wiederherstellen (REST API)
Ressourcen zur Clientbibliothek
Weitere Informationen
Zugehöriger Inhalt
- Dieser Artikel ist Teil des Blob Storage-Entwicklerleitfadens für Python. Weitere Informationen finden Sie in der vollständigen Liste der Entwicklerleitfadenartikel unter Erstellen Ihrer Python-App.