Löschen und Wiederherstellen eines Blobcontainers mit Go
In diesem Artikel wird beschrieben, wie Container mit dem Azure Storage-Clientmodul für Go gelöscht werden. Wenn Sie das vorläufige Löschen von Containern aktiviert haben, können Sie gelöschte Container wiederherstellen.
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 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).
Löschen eines Containers
Um einen Container zu löschen, rufen Sie die folgende Methode auf:
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 die darin enthaltenen Blobs tritt der HTTP-Fehlercode 404 (Not Found)
auf.
Das folgende Beispiel zeigt den Löschvorgang eines bestimmten Containers:
func deleteContainer(client *azblob.Client, containerName string) {
// Delete the container
_, err := client.DeleteContainer(context.TODO(), containerName, nil)
handleError(err)
}
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 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 einen vorläufig gelöschten Container wiederherstellen, indem Sie die folgende Methode über das eingebettete ServiceClient-Element für das Clientobjekt aufrufen:
Das folgende Beispiel listet Container, einschließlich vorläufig gelöschter Container, auf und durchläuft die Liste, um den angegebenen vorläufig gelöschten Container wiederherzustellen:
func restoreDeletedContainer(client *azblob.Client, containerName string) {
// List containers, included deleted ones
pager := client.NewListContainersPager(&azblob.ListContainersOptions{
Include: azblob.ListContainersInclude{Deleted: true},
})
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
for _, container := range resp.ContainerItems {
if *container.Name == containerName && *container.Deleted {
// Restore the deleted container
_, err := client.ServiceClient().RestoreContainer(context.TODO(), containerName, *container.Version, 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 eines Containers 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 Clientbibliotheksmethoden zum Löschen oder Wiederherstellen eines Containers verwenden die folgenden REST-API-Vorgänge:
- Delete Container (REST-API)
- Container wiederherstellen (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.