Udostępnij za pośrednictwem


Usuwanie i przywracanie obiektu blob za pomocą języka Go

W tym artykule przedstawiono sposób usuwania obiektów blob przy użyciu modułu klienta usługi Azure Storage dla języka Go oraz sposobu przywracania obiektów blob usuniętych nietrwale w okresie przechowywania.

Wymagania wstępne

Konfigurowanie środowiska

Jeśli nie masz istniejącego projektu, w tej sekcji pokazano, jak skonfigurować projekt do pracy z modułem klienta usługi Azure Blob Storage dla języka Go. Kroki obejmują instalację modułu, dodawanie import ścieżek i tworzenie autoryzowanego obiektu klienta. Aby uzyskać szczegółowe informacje, zobacz Wprowadzenie do usługi Azure Blob Storage i Go.

Instalowanie modułów

Zainstaluj moduł azblob przy użyciu następującego polecenia:

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

Aby uwierzytelnić się przy użyciu identyfikatora Entra firmy Microsoft (zalecane), zainstaluj azidentity moduł przy użyciu następującego polecenia:

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

Dodawanie ścieżek importu

W pliku kodu dodaj następujące ścieżki importu:

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

Te ścieżki importu reprezentują minimum wymagane do rozpoczęcia pracy. Niektóre przykłady kodu w tym artykule mogą wymagać dodatkowych ścieżek importu. Aby uzyskać szczegółowe informacje i przykładowe użycie, zobacz Przykłady kodu.

Tworzenie obiektu klienta

Aby połączyć aplikację z usługą Blob Storage, utwórz obiekt klienta przy użyciu polecenia azblob. NewClient. W poniższym przykładzie pokazano, jak utworzyć obiekt klienta przy użyciu DefaultAzureCredential autoryzacji:

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
}

Autoryzacja

Mechanizm autoryzacji musi mieć uprawnienia niezbędne do usunięcia obiektu blob lub przywrócenia nietrwałego obiektu blob. Aby uzyskać autoryzację przy użyciu identyfikatora Entra firmy Microsoft (zalecane), potrzebujesz wbudowanej kontroli dostępu opartej na rolach platformy Azure współautora danych obiektów blob usługi Storage lub nowszego. Aby dowiedzieć się więcej, zobacz wskazówki dotyczące autoryzacji dotyczące usuwania obiektów blob (interfejsu API REST) i cofania usuwania obiektu blob (interfejs API REST).

Usuwanie obiektu blob

Uwaga

Jeśli usuwanie nietrwałe obiektu blob jest włączone dla konta magazynu, nie można wykonać trwałego usuwania przy użyciu metod biblioteki klienta. Korzystając z metod w tym artykule, usunięty nietrwale obiekt blob, wersja obiektu blob lub migawka pozostaje dostępny do momentu wygaśnięcia okresu przechowywania, w którym momencie zostanie trwale usunięty. Aby dowiedzieć się więcej na temat podstawowej operacji interfejsu API REST, zobacz Usuwanie obiektu blob (interfejs API REST).

Aby usunąć obiekt blob, wywołaj następującą metodę:

Poniższy przykład usuwa obiekt blob:

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

Jeśli obiekt blob ma skojarzone migawki, musisz usunąć wszystkie jego migawki, aby usunąć obiekt blob. Poniższy przykład usuwa obiekt blob i jego migawki:

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

Aby usunąć tylko migawki, a nie sam obiekt blob, możesz przekazać wartość DeleteSnapshotsOptionTypeOnly do parametru DeleteSnapshots .

Przywracanie usuniętego obiektu blob

Usunięcie nietrwałe obiektu blob chroni pojedynczy obiekt blob i jego poprawki, migawki i metadane przed przypadkowym usunięciem lub zastąpieniem przez utrzymanie usuniętych danych w systemie przez określony okres czasu. Podczas okresu przechowywania możesz przywrócić nietrwale usunięty obiekt blob do jego stanu w momencie usunięcia. Po wygaśnięciu okresu przechowywania obiekt blob zostanie trwale usunięty. Aby uzyskać więcej informacji na temat usuwania nietrwałego obiektu blob, zobacz Usuwanie nietrwałe dla obiektów blob.

Biblioteki klienta usługi Azure Storage umożliwiają przywrócenie nietrwałego obiektu blob lub migawki.

Sposób przywracania nietrwałego obiektu blob zależy od tego, czy konto magazynu ma włączone przechowywanie wersji obiektów blob. Aby uzyskać więcej informacji na temat przechowywania wersji obiektów blob, zobacz Przechowywanie wersji obiektów blob. W zależności od scenariusza zapoznaj się z jedną z następujących sekcji:

Przywracanie obiektów usuniętych nietrwale, gdy przechowywanie wersji jest wyłączone

Aby przywrócić usunięte obiekty blob, gdy przechowywanie wersji jest wyłączone, wywołaj następującą metodę:

Ta metoda przywraca zawartość i metadane nietrwałego obiektu blob oraz wszystkie skojarzone migawki nietrwałe. Wywołanie tej metody dla obiektu blob, który nie został usunięty, nie ma wpływu.

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

Przywracanie obiektów usuniętych nietrwale po włączeniu przechowywania wersji

Jeśli konto magazynu jest skonfigurowane do włączania przechowywania wersji obiektów blob, usunięcie obiektu blob powoduje, że bieżąca wersja obiektu blob stanie się poprzednią wersją. Aby przywrócić obiekt blob usunięty nietrwale podczas włączania przechowywania wersji, skopiuj poprzednią wersję do podstawowego obiektu blob. Można użyć następującej metody:

Poniższy przykład kodu identyfikuje wersję usuniętego obiektu blob i przywraca ją, kopiując ją do podstawowego obiektu blob:

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

Uwaga

Przykłady kodu w tym przewodniku ułatwiają rozpoczęcie pracy z usługami Azure Blob Storage i Go. Należy zmodyfikować obsługę błędów i Context wartości, aby spełniały potrzeby aplikacji.

Zasoby

Aby dowiedzieć się więcej na temat usuwania obiektów blob i przywracania usuniętych obiektów blob przy użyciu modułu klienta usługi Azure Blob Storage dla języka Go, zobacz następujące zasoby.

Przykłady kodu

Operacje interfejsu API REST

Zestaw Azure SDK dla języka Go zawiera biblioteki oparte na interfejsie API REST platformy Azure, które umożliwiają interakcję z operacjami interfejsu API REST za pomocą znanych paradygmatów języka Go. Metody biblioteki klienta do usuwania obiektów blob i przywracania usuniętych obiektów blob używają następujących operacji interfejsu API REST:

Zasoby modułu klienta

Zobacz też

  • Ten artykuł jest częścią przewodnika dla deweloperów usługi Blob Storage dla języka Go. Aby dowiedzieć się więcej, zobacz pełną listę artykułów z przewodnika dla deweloperów na stronie Tworzenie aplikacji języka Go.