Partilhar via


Excluir e restaurar um blob com Go

Este artigo mostra como excluir blobs usando o módulo de cliente do Armazenamento do Azure para Go e como restaurar blobs excluídos por software durante o período de retenção.

Pré-requisitos

Configurar o ambiente

Se você não tiver um projeto existente, esta seção mostra como configurar um projeto para trabalhar com o módulo de cliente de Armazenamento de Blob do Azure para Go. As etapas incluem a instalação do módulo, a adição de import caminhos e a criação de um objeto de cliente autorizado. Para obter detalhes, consulte Introdução ao Armazenamento de Blobs do Azure e Go.

Instalar módulos

Instale o módulo azblob usando o seguinte comando:

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

Para autenticar com o Microsoft Entra ID (recomendado), instale o azidentity módulo usando o seguinte comando:

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

Adicionar caminhos de importação

No arquivo de código, adicione os seguintes caminhos de importação:

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

Esses caminhos de importação representam o mínimo necessário para começar. Alguns exemplos de código neste artigo podem exigir caminhos de importação adicionais. Para obter detalhes específicos e exemplos de uso, consulte Exemplos de código.

Criar um objeto cliente

Para conectar um aplicativo ao Armazenamento de Blob, crie um objeto cliente usando azblob. NewClient. O exemplo a seguir mostra como criar um objeto cliente usando DefaultAzureCredential para autorização:

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
}

Autorização

O mecanismo de autorização deve ter as permissões necessárias para excluir um blob ou para restaurar um blob excluído suavemente. Para autorização com o Microsoft Entra ID (recomendado), você precisa da função interna do RBAC do Azure RBAC Storage Blob Data Contributor ou superior. Para saber mais, consulte as diretrizes de autorização para Excluir Blob (API REST) e Undelete Blob (API REST).

Eliminar um blob

Nota

Quando a exclusão suave de blob está habilitada para uma conta de armazenamento, você não pode executar uma exclusão permanente usando métodos de biblioteca de cliente. Usando os métodos neste artigo, um blob, uma versão de blob ou instantâneo excluído suavemente permanece disponível até que o período de retenção expire, momento em que é excluído permanentemente. Para saber mais sobre a operação subjacente da API REST, consulte Excluir Blob (API REST).

Para excluir um blob, chame o seguinte método:

O exemplo a seguir exclui um blob:

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

Se o blob tiver instantâneos associados, você deverá excluir todos os seus instantâneos para excluir o blob. O exemplo a seguir exclui um blob e seus instantâneos:

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

Para excluir apenas os instantâneos e não o blob em si, você pode passar o valor DeleteSnapshotsOptionTypeOnly para o DeleteSnapshots parâmetro.

Restaurar um blob excluído

A eliminação recuperável de blobs protege um blob individual e as respetivas versões, instantâneos e metadados contra eliminações ou substituições acidentais, mantendo os dados eliminados no sistema durante um período de tempo especificado. Durante o período de retenção, pode restaurar o blob para o estado em que estava no momento da eliminação. Depois que o período de retenção expirar, o blob será excluído permanentemente. Para obter mais informações sobre exclusão suave de blob, consulte Exclusão suave para blobs.

Você pode usar as bibliotecas de cliente do Armazenamento do Azure para restaurar um blob ou instantâneo excluído por software.

A forma como você restaura um blob excluído depende se sua conta de armazenamento tem ou não o controle de versão de blob habilitado. Para obter mais informações sobre controle de versão de blob, consulte Controle de versão de Blob. Consulte uma das seguintes seções, dependendo do seu cenário:

Restaurar objetos excluídos por software quando o controle de versão estiver desativado

Para restaurar blobs excluídos quando o controle de versão estiver desabilitado, chame o seguinte método:

Esse método restaura o conteúdo e os metadados de um blob excluído suavemente e quaisquer instantâneos excluídos por software associados. Chamar esse método para um blob que não foi excluído não tem efeito.

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

Restaurar objetos excluídos por software quando o controle de versão estiver habilitado

Se uma conta de armazenamento estiver configurada para habilitar o controle de versão de blob, excluir um blob fará com que a versão atual do blob se torne a versão anterior. Para restaurar um blob excluído suavemente quando o controle de versão estiver habilitado, copie uma versão anterior sobre o blob base. Você pode usar o seguinte método:

O exemplo de código a seguir identifica uma versão de um blob excluído e restaura essa versão copiando-a para o blob base:

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

Nota

Os exemplos de código neste guia destinam-se a ajudá-lo a começar a usar o Azure Blob Storage and Go. Você deve modificar o tratamento de erros e Context os valores para atender às necessidades do seu aplicativo.

Recursos

Para saber mais sobre como excluir blobs e restaurar blobs excluídos usando o módulo de cliente de Armazenamento de Blobs do Azure para Go, consulte os recursos a seguir.

Amostras de código

  • Exibir exemplos de código deste artigo (GitHub)

Operações da API REST

O SDK do Azure para Go contém bibliotecas que se baseiam na API REST do Azure, permitindo que você interaja com operações da API REST por meio de paradigmas Go familiares. Os métodos da biblioteca de cliente para excluir blobs e restaurar blobs excluídos usam as seguintes operações da API REST:

Recursos do módulo cliente

Consulte também

  • Este artigo faz parte do guia do desenvolvedor do Blob Storage para Go. Para saber mais, consulte a lista completa de artigos do guia do desenvolvedor em Crie seu aplicativo Go.