Dela via


Ta bort och återställa en blob med Go

Den här artikeln visar hur du tar bort blobar med hjälp av Azure Storage-klientmodulen för Go. Om du har aktiverat mjuk borttagning för blobar kan du återställa borttagna blobar under kvarhållningsperioden.

Förutsättningar

Konfigurera din miljö

Om du inte har ett befintligt projekt visar det här avsnittet hur du konfigurerar ett projekt så att det fungerar med Azure Blob Storage-klientmodulen för Go. Stegen omfattar modulinstallation, tillägg av import sökvägar och skapande av ett auktoriserat klientobjekt. Mer information finns i Komma igång med Azure Blob Storage och Go.

Installera moduler

Installera azblob-modulen med följande kommando:

go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob

Om du vill autentisera med Microsoft Entra-ID (rekommenderas) installerar du modulen azidentity med följande kommando:

go get github.com/Azure/azure-sdk-for-go/sdk/azidentity

Lägga till importsökvägar

Lägg till följande importsökvägar i kodfilen:

import (
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

Vissa kodexempel i den här artikeln kan kräva ytterligare importsökvägar. Specifik information och exempelanvändning finns i Kodexempel.

Skapa ett klientobjekt

Om du vill ansluta en app till Blob Storage skapar du ett klientobjekt med azblob . NewClient. I följande exempel visas hur du skapar ett klientobjekt med hjälp av DefaultAzureCredential för auktorisering:

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
}

Auktorisering

Auktoriseringsmekanismen måste ha de behörigheter som krävs för att ta bort en blob eller återställa en mjuk borttagen blob. För auktorisering med Microsoft Entra-ID (rekommenderas) behöver du den inbyggda rollen Storage Blob Data Contributor eller senare. Mer information finns i auktoriseringsvägledningen för Ta bort blob (REST API) och REST-API (Undelete Blob).

Ta bort en blob

Om du vill ta bort en blob anropar du följande metod:

I följande exempel tas en blob bort:

func deleteBlob(client *azblob.Client, containerName string, blobName string) {
    // Delete the blob
    _, err := client.DeleteBlob(context.TODO(), containerName, blobName, nil)
    handleError(err)
}

Om bloben har några associerade ögonblicksbilder måste du ta bort alla dess ögonblicksbilder för att ta bort bloben. I följande exempel tas en blob och dess ögonblicksbilder bort:

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)
}

Om du bara vill ta bort ögonblicksbilderna och inte själva blobben kan du skicka värdet DeleteSnapshotsOptionTypeOnly till parameternDeleteSnapshots.

Återställa en borttagen blob

Mjuk borttagning av blobar skyddar en enskild blob, versioner, ögonblicksbilder och metadata från oavsiktliga borttagningar eller överskrivningar genom att spara borttagna data i systemet under en angiven tidsperiod. Under kvarhållningsperioden kan du återställa bloben till dess tillstånd när den togs bort. När kvarhållningsperioden har upphört att gälla tas bloben bort permanent. Mer information om mjuk borttagning av blobar finns i Mjuk borttagning för blobar.

Du kan använda Azure Storage-klientbiblioteken för att återställa en mjuk borttagen blob eller ögonblicksbild.

Hur du återställer en mjuk borttagen blob beror på om ditt lagringskonto har blobversionshantering aktiverat eller inte. Mer information om blobversioner finns i Blob-versionshantering. Se något av följande avsnitt, beroende på ditt scenario:

Återställa mjukt borttagna objekt när versionshantering är inaktiverat

Om du vill återställa borttagna blobar när versionshantering är inaktiverat anropar du följande metod:

Den här metoden återställer innehållet och metadata för en mjuk borttagen blob och eventuella associerade ögonblicksbilder med mjuk borttagning. Att anropa den här metoden för en blob som inte har tagits bort har ingen effekt.

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)
}

Återställa mjukt borttagna objekt när versionshantering är aktiverat

Om ett lagringskonto har konfigurerats för att aktivera blobversionshantering blir den aktuella versionen av bloben den tidigare versionen om du tar bort en blob. Om du vill återställa en mjuk borttagen blob när versionshantering är aktiverat kopierar du en tidigare version över basbloben. Du kan använda följande metod:

I följande kodexempel identifieras en version av en borttagen blob och den versionen återställs genom att den kopieras till basbloben:

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)
}

Kommentar

Kodexemplen i den här guiden är avsedda att hjälpa dig att komma igång med Azure Blob Storage och Go. Du bör ändra felhantering och Context värden för att uppfylla programmets behov.

Resurser

Mer information om hur du tar bort blobar och återställer borttagna blobar med hjälp av Azure Blob Storage-klientmodulen för Go finns i följande resurser.

Kodexempel

  • Visa kodexempel från den här artikeln (GitHub)

REST API-åtgärder

Azure SDK för Go innehåller bibliotek som bygger på Azure REST API så att du kan interagera med REST API-åtgärder via välbekanta Go-paradigm. Klientbiblioteksmetoderna för att ta bort blobar och återställa borttagna blobar använder följande REST API-åtgärder:

Klientmodulresurser

Se även