Löschen und Wiederherstellen eines Blobs mit Python
In diesem Artikel wird beschrieben, wie Blobs mithilfe der Azure Storage-Clientbibliothek für Python gelöscht werden. Wenn Sie vorläufiges Löschen für Blobs aktiviert haben, können Sie gelöschte Blobs während des Aufbewahrungszeitraums wiederherstellen.
Informationen zum Löschen eines Blobs mithilfe asynchroner APIs finden Sie unter Asynchrones Löschen eines Blobs.
Voraussetzungen
- In diesem Artikel wird davon ausgegangen, dass Sie bereits ein Projekt für die Arbeit mit der Azure Blob Storage-Clientbibliothek für Python eingerichtet haben. Informationen zum Einrichten Ihres Projekts – einschließlich Paketinstallation, Hinzufügen von
import
-Anweisungen und Erstellen eines autorisierten Clientobjekts – finden Sie unter Erste Schritte mit Azure Blob Storage und Python. - Informationen zur Verwendung asynchroner APIs in Ihrem Code finden Sie in den Anforderungen im Abschnitt Asynchrone Programmierung.
- Der Autorisierungsmechanismus muss über Berechtigungen zum Löschen eines Blobs oder zum Wiederherstellen eines vorläufig gelöschten Blobs verfügen. Weitere Informationen finden Sie im Autorisierungsleitfaden für die folgenden REST-API-Vorgänge:
Löschen eines Blobs
Um ein Blob zu löschen, rufen Sie die folgende Methode auf:
Im folgenden Beispiel wird ein Blob gelöscht:
def delete_blob(self, blob_service_client: BlobServiceClient, container_name: str, blob_name: str):
blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)
blob_client.delete_blob()
Wenn das Blob über zugeordnete Momentaufnahmen verfügt, müssen Sie alle zugehörigen Momentaufnahmen löschen, um das Blob löschen zu können. Im folgenden Beispiel werden ein Blob und dessen Momentaufnahmen gelöscht:
def delete_blob_snapshots(self, blob_service_client: BlobServiceClient, container_name: str, blob_name: str):
blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)
blob_client.delete_blob(delete_snapshots="include")
Um nur die Momentaufnahmen und nicht das Blob selbst zu löschen, können Sie den delete_snapshots="only"
-Parameter übergeben.
Wiederherstellen eines gelöschten Blobs
Vorläufiges Löschen von Blobs schützt ein einzelnes Blob sowie seine Versionen, Momentaufnahmen und Metadaten vor versehentlichen Lösch- oder Überschreibungsvorgängen, da die Daten für einen gewissen Zeitraum im System verbleiben. Während der Beibehaltungsdauer kann das Blob in dem Zustand wiederhergestellt werden, in dem es sich zum Zeitpunkt der Löschung befand. Nach Ablauf der Beibehaltungsdauer wird das Blob endgültig gelöscht. Weitere Informationen zum vorläufigen Löschen von Blobs finden Sie unter Vorläufiges Löschen für Blobs.
Sie können die Azure Storage-Clientbibliotheken verwenden, um vorläufig gelöschte Blobs oder Momentaufnahmen wiederherzustellen.
Wie Sie ein vorläufig gelöschtes Blob wiederherstellen, hängt davon ab, ob für Ihr Speicherkonto die Blobversionsverwaltung aktiviert ist. Weitere Informationen zur Blobversionsverwaltung finden Sie unter Blobversionsverwaltung. Lesen Sie je nach Ihrem Szenario einen der folgenden Abschnitte:
Wiederherstellen vorläufig gelöschter Objekte bei deaktivierter Versionsverwaltung
Um gelöschte Blobs wiederherzustellen, wenn die Versionsverwaltung deaktiviert ist, rufen Sie die folgende Methode auf:
Mit dieser Methode werden der Inhalt und die Metadaten eines vorläufig gelöschten Blobs und aller zugeordneten vorläufig gelöschten Momentaufnahmen wiederhergestellt. Das Aufrufen dieser Methode für ein nicht gelöschtes Blob hat keine Auswirkungen.
def restore_blob(self, blob_service_client: BlobServiceClient, container_name: str, blob_name: str):
blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)
blob_client.undelete_blob()
Wiederherstellen vorläufig gelöschter Objekte bei aktivierter Versionsverwaltung
Wenn ein Speicherkonto für die Aktivierung der Blobversionsverwaltung konfiguriert ist, führt das Löschen eines Blobs dazu, dass die aktuelle Version des Blobs zur vorherigen Version wird. Um ein vorläufig gelöschtes Blob bei aktivierter Versionsverwaltung wiederherzustellen, kopieren Sie eine vorherige Version über das Basisblob. Sie können die folgende Methode verwenden:
Im folgenden Codebeispiel wird die neueste Version eines gelöschten Blobs abgerufen und die aktuellste Version durch Kopieren in das Basisblob wiederhergestellt:
def restore_blob_version(self, blob_service_client: BlobServiceClient, container_name: str, blob_name: str):
container_client = blob_service_client.get_container_client(container=container_name)
# Get a reference to the soft-deleted base blob and list all the blob versions
blob_client = container_client.get_blob_client(blob=blob_name)
blob_list = container_client.list_blobs(name_starts_with=blob_name, include=['deleted','versions'])
blob_versions = []
for blob in blob_list:
blob_versions.append(blob.version_id)
# Get the latest version of the soft-deleted blob
blob_versions.sort(reverse=True)
latest_version = blob_versions[0]
# Build the blob URI and add the version ID as a query string
versioned_blob_url = f"{blob_client.url}?versionId={latest_version}"
# Restore the latest version by copying it to the base blob
blob_client.start_copy_from_url(versioned_blob_url)
Asynchrones Löschen eines Blobs
Die Azure Blob Storage-Clientbibliothek für Python unterstützt das asynchrone Löschen von Blobs. Weitere Informationen zu den Projekteinrichtungsanforderungen finden Sie unter Asynchrone Programmierung.
Führen Sie die folgenden Schritte aus, um ein Blob 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 die oberste Ebene vonBlobServiceClient
mitasync with
und ruft dann die Methode auf, die das Blob 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 = BlobSamples() # 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_blob(blob_service_client, "sample-container", "sample-blob.txt") if __name__ == '__main__': asyncio.run(main())
Fügen Sie Code zum Löschen des Blobs 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_blob
“ verwendet wird.async def delete_blob(self, blob_service_client: BlobServiceClient, container_name: str, blob_name: str): blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name) await blob_client.delete_blob()
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 von Blobs und Wiederherstellen gelöschter Blobs mithilfe der Azure Blob Storage-Clientbibliothek für Python finden Sie in unter folgenden Ressourcen.
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 Methoden der Clientbibliothek zum Löschen oder Wiederherstellen von Blobs verwenden die folgenden REST-API-Vorgänge:
- Löschen eines Blob (REST-API)
- Wiederherstellen eines Blob (REST-API)
Codebeispiele
- Anzeigen synchroner oder asynchroner Codebeispiele aus diesem Artikel (GitHub)
Ressourcen zur Clientbibliothek
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für