Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo mostra como excluir blobs com a Biblioteca de clientes do Armazenamento do Azure para .NET 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
- O último SDK do .NET para seu sistema operacional. Certifique-se de baixar o SDK, e não o ambiente de execução.
Configure seu ambiente
Se você não tiver um projeto existente, esta seção mostrará como configurar um projeto para funcionar com a biblioteca de clientes do Armazenamento de Blobs do Azure para .NET. As etapas incluem a instalação do pacote, a adição de diretivas using e a criação de um objeto de cliente autorizado. Para obter detalhes, consulte Introdução ao Armazenamento de Blobs do Azure e ao .NET.
Instalar Pacotes
No diretório do projeto, instale pacotes para as bibliotecas de cliente do Armazenamento de Blobs do Azure e do Azure Identity usando o comando dotnet add package. O pacote Azure.Identity é necessário para conexões sem senha com os serviços do Azure.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Adicionar diretivas using
Adicione essas diretivas using ao topo do seu arquivo de código:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Alguns exemplos de código neste artigo podem exigir diretivas using adicionais.
Criar um objeto cliente
Para conectar um aplicativo ao Armazenamento de Blobs, crie uma instância do BlobServiceClient. O exemplo a seguir mostra como criar um objeto cliente usando DefaultAzureCredential para autorização:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Você pode registrar um cliente de serviço para injeção de dependência em um aplicativo .NET.
Você também pode criar objetos cliente para contêineres ou blobs específicos. Para saber mais sobre como criar e gerenciar objetos clientes, confira Criar e gerenciar objetos clientes que interagem com recursos de dados.
Autorização
O mecanismo de autorização deve ter as permissões necessárias para excluir um blob ou restaurar um blob excluído temporariamente. Para autorização com o Microsoft Entra ID (recomendado), você precisa da função interna Colaborador de dados do 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 qualquer um dos seguintes métodos:
O seguinte exemplo exclui um blob:
public static async Task DeleteBlobAsync(BlobClient blob)
{
await blob.DeleteAsync();
}
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:
public static async Task DeleteBlobSnapshotsAsync(BlobClient blob)
{
// Delete a blob and all of its snapshots
await blob.DeleteAsync(snapshotsOption: DeleteSnapshotsOption.IncludeSnapshots);
// Delete only the blob's snapshots
//await blob.DeleteAsync(snapshotsOption: DeleteSnapshotsOption.OnlySnapshots);
}
Para excluir apenas os instantâneos e não o blob em si, passe o parâmetro DeleteSnapshotsOption.OnlySnapshots.
Quando um contêiner é excluído, você não pode criar um contêiner com o mesmo nome por pelo menos 30 segundos. O contêiner poderá não estar disponível por mais de 30 segundos se o serviço ainda estiver processando a solicitação. Enquanto o contêiner está sendo excluído, as tentativas de criar um contêiner com o mesmo nome geram um conflito e falham com o código de status 409. O serviço indica que o contêiner está sendo excluído. Todas as outras operações, incluindo operações em qualquer blobs dentro do contêiner, falham com o código de status 404 (Não Encontrado) enquanto o contêiner está sendo excluído.
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 o estado em que estava ao ser excluído. 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 de cliente do Armazenamento do Azure para restaurar um blob ou instantâneo excluído temporariamente.
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 temporariamente quando o controle de versão estiver desativado
Para restaurar os blobs excluídos quando o controle de versão não estiver habilitado, chame um dos seguintes métodos:
Esses métodos restauram os blobs com exclusão temporária e os instantâneos excluídos associados a eles. A chamada de um desses métodos para um blob que não tenha sido excluído não tem nenhum efeito. O seguinte exemplo restaura todos os blobs com exclusão temporária e os instantâneos em um contêiner:
public static async Task RestoreBlobsAsync(BlobContainerClient container)
{
foreach (BlobItem blob in container.GetBlobs(BlobTraits.None, BlobStates.Deleted))
{
await container.GetBlockBlobClient(blob.Name).UndeleteAsync();
}
}
Para restaurar um instantâneo com exclusão temporária específico, primeiro, chame a operação Undelete ou UndeleteAsync no blob base e copie o instantâneo desejado sobre o blob base. O exemplo a seguir recupera um blob de blocos para o seu instantâneo gerado mais recentemente:
public static async Task RestoreSnapshotsAsync(
BlobContainerClient container,
BlobClient blob)
{
// Restore the deleted blob
await blob.UndeleteAsync();
// List blobs in this container that match prefix
// Include snapshots in listing
Pageable<BlobItem> blobItems = container.GetBlobs(
BlobTraits.None,
BlobStates.Snapshots,
prefix: blob.Name);
// Get the URI for the most recent snapshot
BlobUriBuilder blobSnapshotUri = new BlobUriBuilder(blob.Uri)
{
Snapshot = blobItems
.OrderByDescending(snapshot => snapshot.Snapshot)
.ElementAtOrDefault(0)?.Snapshot
};
// Restore the most recent snapshot by copying it to the blob
await blob.StartCopyFromUriAsync(blobSnapshotUri.ToUri());
}
Restaurar blobs excluídos temporariamente quando o versionamento 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 excluído temporariamente quando o versionamento estiver habilitado, copie uma versão anterior sobre o blob original. Você pode usar um dos seguintes métodos:
O exemplo de código a seguir mostra como obter a versão mais recente de um blob excluído e restaura a versão mais recente copiando-a para o blob de base:
public static void RestoreBlobWithVersioning(
BlobContainerClient container,
BlobClient blob)
{
// List blobs in this container that match prefix
// Include versions in listing
Pageable<BlobItem> blobItems = container.GetBlobs(
BlobTraits.None,
BlobStates.Version,
prefix: blob.Name);
// Get the URI for the most recent version
BlobUriBuilder blobVersionUri = new BlobUriBuilder(blob.Uri)
{
VersionId = blobItems.
OrderByDescending(version => version.VersionId).
ElementAtOrDefault(0)?.VersionId
};
// Restore the most recently generated version by copying it to the base blob
blob.StartCopyFromUri(blobVersionUri.ToUri());
}
Recursos
Para saber mais sobre como excluir blobs e restaurar blobs excluídos usando a biblioteca de clientes do Armazenamento de Blobs do Azure para .NET, confira os recursos a seguir.
Exemplos de código
Operações da API REST
O SDK do Azure para .NET contém bibliotecas que criam sobre a API REST do Azure, permitindo a interação com as operações de API REST por meio de paradigmas conhecidos do .NET. 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 blob (API REST)
- Recuperar blob excluído (API REST)
Recursos da biblioteca de clientes
- Documentação de referência da biblioteca de clientes
- Código-fonte da biblioteca de clientes
- Pacote (NuGet)
Confira também
Conteúdo relacionado
- Este artigo faz parte do guia para desenvolvedores do Armazenamento de Blobs para .NET. Para saber mais, veja a lista completa de artigos do guia do desenvolvedor em Criar seu aplicativo .NET.