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
- Assinatura do Azure - criar uma gratuitamente
- Conta de armazenamento do Azure – criar uma conta de armazenamento
- Go 1.18 ou posterior
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
- Exibir exemplos de código deste artigo (GitHub)
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:
- Excluir um blob (API REST)
- Reverter a exclusão de um blob (API REST)
Recursos do módulo de cliente
- Documentação de referência do módulo do cliente
- Código-fonte do módulo do cliente
- Pacote (pkg.go.dev)
Confira também
Conteúdo relacionado
- 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.