Löschen und Wiederherstellen eines Blobs mit Go
In diesem Artikel wird gezeigt, wie Sie Blobs mithilfe des Azure Storage-Clientmoduls für Go löschen, und wie Sie Blobs wiederherstellen, die während des Aufbewahrungszeitraums vorläufig gelöscht wurden.
Voraussetzungen
- Azure-Abonnement – Erstellen eines kostenlosen Kontos
- Azure Storage-Konto – Erstellen eines Speicherkontos
- Go 1.18+
Erstellen Ihrer Umgebung
Wenn Sie nicht über ein vorhandenes Projekt verfügen, wird in diesem Abschnitt gezeigt, wie Sie ein Projekt für die Arbeit mit dem Azure Blob Storage-Clientmodul für Go einrichten. Die Schritte umfassen die Modulinstallation, das Hinzufügen von import
-Pfaden und das Erstellen eines autorisierten Clientobjekts. Ausführlichere Informationen finden Sie unter Erste Schritte mit Azure Blob Storage und Go.
Installieren von Modulen
Verwenden Sie den folgenden Befehl, um das Modul azblob zu installieren:
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Um sich mit Microsoft Entra ID zu authentifizieren (empfohlen), installieren Sie das azidentity
-Modul mit dem folgenden Befehl:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Hinzufügen von Importpfaden
Fügen Sie in der Codedatei die folgenden Importpfade hinzu:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
Dies sind die Importpfade, die mindestens für die ersten Schritte erforderlich sind. Einige Codebeispiele in diesem Artikel erfordern möglicherweise zusätzliche Importpfade. Spezifische Details und eine Beispielverwendung finden Sie unter Codebeispiele.
Erstellen eines Clientobjekts
Um eine App mit Blob Storage zu verbinden, erstellen Sie ein Clientobjekt mithilfe von azblob.NewClient. Das folgende Beispiel zeigt, wie Sie ein Clientobjekt mithilfe von DefaultAzureCredential
für die Autorisierung erstellen:
func getServiceClientTokenCredential(accountURL string) *azblob.Client {
// Create a new service client with token credential
credential, err := azidentity.NewDefaultAzureCredential(nil)
handleError(err)
client, err := azblob.NewClient(accountURL, credential, nil)
handleError(err)
return client
}
Autorisierung
Der Autorisierungsmechanismus muss über die erforderlichen Berechtigungen zum Löschen eines Blobs oder Wiederherstellen eines vorläufig gelöschten Blobs 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 in den Autorisierungsanleitungen für Blob löschen (REST API) und Blob löschen aufheben (REST API).
Löschen eines Blobs
Hinweis
Wenn „vorläufiges Löschen“ für Blobs in einem Speicherkonto aktiviert ist, können Sie mithilfe der Methoden aus der Clientbibliothek keinen dauerhaften Löschvorgang durchführen. Wenn Sie die Methoden in diesem Artikel verwenden, bleiben ein vorläufig gelöschtes Blob, eine Blobversion oder eine Momentaufnahme verfügbar, bis der Aufbewahrungszeitraum abläuft. Zu diesem Zeitpunkt erfolgt dann die dauerhafte Löschung. Weitere Informationen zum zugrunde liegenden REST-API-Vorgang finden Sie unter Blob löschen (REST-API).
Um ein Blob zu löschen, rufen Sie die folgende Methode auf:
Im folgenden Beispiel wird ein Blob gelöscht:
func deleteBlob(client *azblob.Client, containerName string, blobName string) {
// Delete the blob
_, err := client.DeleteBlob(context.TODO(), containerName, blobName, nil)
handleError(err)
}
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:
func deleteBlobWithSnapshots(client *azblob.Client, containerName string, blobName string) {
// Delete the blob and its snapshots
_, err := client.DeleteBlob(context.TODO(), containerName, blobName, &blob.DeleteOptions{
DeleteSnapshots: to.Ptr(blob.DeleteSnapshotsOptionTypeInclude),
})
handleError(err)
}
Um nur die Momentaufnahmen und nicht das Blob selbst zu löschen, können Sie den Wert DeleteSnapshotsOptionTypeOnly
an den Parameter DeleteSnapshots
ü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.
func restoreDeletedBlob(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Restore the deleted blob
_, err := blobClient.Undelete(context.TODO(), &blob.UndeleteOptions{})
handleError(err)
}
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 eine Version eines gelöschten Blobs ermittelt und diese Version durch Kopieren in das Basisblob wiederhergestellt:
func restoreDeletedBlobVersion(client *azblob.Client, containerName string, blobName string, versionID string) {
// Reference the blob as a client object
baseBlobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
blobVersionClient, err := baseBlobClient.WithVersionID(versionID)
handleError(err)
// Restore the blob version by copying it to the base blob
_, err = baseBlobClient.StartCopyFromURL(context.TODO(), blobVersionClient.URL(), nil)
handleError(err)
}
Hinweis
Die Codebeispiele in diesem Leitfaden sollen Ihnen bei den ersten Schritten mit Azure Blob Storage und Go helfen. Sie sollten die Fehlerbehandlung und Context
-Werte so ändern, dass sie den Anforderungen Ihrer Anwendung entsprechen.
Ressourcen
Weitere Informationen zum Löschen von Blobs und zum Wiederherstellen gelöschter Blobs mithilfe des Azure Blob Storage-Clientmoduls für Go finden Sie in den folgenden Ressourcen.
Codebeispiele
- Anzeigen von Codebeispielen aus diesem Artikel (GitHub)
REST-API-Vorgänge
Das Azure SDK für Go enthält Bibliotheken, die auf der Azure-REST-API basieren, und ermöglicht Ihnen dadurch die Interaktion mit REST-API-Vorgängen über vertraute Go-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)
Clientmodulressourcen
Weitere Informationen
Zugehöriger Inhalt
- Dieser Artikel ist Teil des Blob Storage-Entwicklerleitfadens für Go. Weitere Informationen finden Sie in der vollständigen Liste der Entwicklerleitfadenartikel unter Erstellen Ihrer Go-App.