Compartilhar via


Excluir ou restaurar um blob com Go

Este artigo mostra como excluir blobs com o Módulo de cliente do Armazenamento do Microsoft Azure para Go e como restaurar os blobs de exclusão reversível durante o período de retenção.

Pré-requisitos

Configure seu ambiente

Se você não tiver um projeto existente, esta seção mostrará como configurar um projeto para trabalhar com o módulo de cliente do Armazenamento de Blobs do Azure para Go. As etapas incluem a instalação do módulo, a adição de caminhos import e a criação de um objeto 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 módulo azidentity usando o comando a seguir:

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 uso de exemplo, consulte Exemplos de código.

Criar um objeto cliente

Para conectar um aplicativo ao Armazenamento de Blobs, 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 restaurar blob excluído temporariamente. Para autorização com o Microsoft Entra ID (recomendado), você precisa da função interna de Colaborador de Dados de Blob de Armazenamento ou superior do RBAC do Azure. Para saber mais, consulte as diretrizes de autorização para Excluir blob (API REST) e Desfazer exclusão do blob (API REST).

Excluir um blob

Observação

Quando a exclusão temporária de blobs estiver habilitada em uma conta de armazenamento, não será possível executar uma exclusão permanente usando os métodos da biblioteca do cliente. Usando os métodos deste artigo, um blob, uma versão de blob ou um instantâneo com exclusão temporária permanece disponível até que o período de retenção expire, momento este em que é excluído permanentemente. Para saber mais sobre a operação da API REST subjacente, consulte Excluir Blob (API REST).

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

O seguinte exemplo 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, passe o valor DeleteSnapshotsOptionTypeOnly para o parâmetro DeleteSnapshots.

Restaurar um blob excluído

A exclusão reversível de blobs protege um blob individual e suas versões, instantâneos e metadados de exclusões ou substituições acidentais, mantendo os dados excluídos no sistema por um período de tempo especificado. Durante o período de retenção, você pode restaurar o blob para seu estado na exclusão. Depois que o período de retenção expirar, o blob será excluído permanentemente. Para obter mais informações sobre a exclusão reversível de blobs, consulte Exclusão reversível de blobs.

Você pode usar as bibliotecas clientes de armazenamento do Azure para restaurar um blob ou instantâneo excluído de maneira reversível.

A forma como você restaura um blob com exclusão temporária depende de sua conta de armazenamento ter ou não o controle de versão de blob habilitado. Para obter mais informações sobre o controle de versão de blob, consulte Controle de versão de blob. Confira uma das seguintes seções dependendo de seu cenário:

Restaurar objetos excluídos de maneira reversível quando o controle de versão estiver desabilitado

Para restaurar os blobs excluídos quando o controle de versão não estiver habilitado, chame um dos seguintes métodos:

Esse método restaura o conteúdo e os metadados de um blob exlcluído temporariamente e todos os instantâneos excluídos temporariamente associados. Chamar este método em 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 temporariamente quando o controle de versão está habilitado

Se uma conta de armazenamento estiver configurada para habilitar o controle de versão do blob, excluir um blob fará com que a versão atual do blob se torne a versão anterior. Para restaurar um blob com exclusão temporária 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 de 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)
}

Observação

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

Recursos

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

Exemplos de código

Operações da API REST

O SDK do Azure para linguagem Go contém bibliotecas que se baseiam na API REST do Azure, permitindo a interação com as operações de API REST por meio de paradigmas conhecidos do Go. Os métodos da biblioteca de clientes para exclusão de blobs e restauração de blobs excluídos usam as seguintes operações da API REST:

Recursos do módulo de cliente

Confira também

  • Este artigo faz parte do guia para desenvolvedores do Armazenamento de Blobs para Go. Para saber mais, veja a lista completa de artigos do guia do desenvolvedor em Criar seu aplicativo Go.