Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo mostra como excluir blobs com a biblioteca de cliente do Armazenamento do Azure para .NET e como restaurar blobs excluídos por software durante o período de retenção.
Pré-requisitos
- Subscrição do Azure - crie uma gratuitamente
- Conta de armazenamento do Azure - criar uma conta de armazenamento
- SDK .NET mais recente para seu sistema operacional. Certifique-se de obter o SDK e não o tempo de execução.
Configurar o ambiente
Se você não tiver um projeto existente, esta seção mostra como configurar um projeto para trabalhar com a biblioteca de cliente do Armazenamento de Blobs do Azure para .NET. As etapas incluem a instalação do pacote, a adição de using diretivas 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 o Armazenamento de Blobs do Azure e as bibliotecas de cliente do Azure Identity usando o dotnet add package comando. 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 estas using diretivas ao topo do seu ficheiro 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 adicionais using .
Criar um objeto cliente
Para conectar um aplicativo ao Armazenamento de Blob, crie uma instância de 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 de cliente para contêineres ou blobs específicos. Para saber mais sobre como criar e gerenciar objetos de cliente, consulte Criar e gerenciar objetos de cliente 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 para restaurar um blob excluído suavemente. Para a autorização com o Microsoft Entra ID (recomendado), precisa da função incorporada 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. Utilizando os métodos descritos neste artigo, um blob, uma versão de blob ou um instantâneo eliminado de forma recuperável permanece disponível até o período de retenção expirar, após o qual é eliminado permanentemente. Para saber mais sobre a operação subjacente da API REST, consulte Excluir Blob (API REST).
Para excluir um blob, chame qualquer um dos seguintes métodos:
O exemplo a seguir 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 seguinte elimina um blob e as respetivas capturas instantâneas:
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, você pode passar o parâmetro DeleteSnapshotsOption.OnlySnapshots.
Quando um contentor é eliminado, não pode criar um contentor com o mesmo nome durante pelo menos 30 segundos. O contentor pode não estar disponível por mais de 30 segundos se o serviço ainda estiver a processar o pedido. Enquanto o contentor está a ser eliminado, tentativas de criar um contentor com o mesmo nome geram um conflito e falham com o código de estado 409. O serviço indica que o contentor está a ser eliminado. Todas as outras operações, incluindo operações em quaisquer blobs dentro do contentor, falham com o código de estado 404 (Não Encontrado) enquanto o contentor está a ser eliminado.
Restaurar um blob excluído
A eliminação recuperável de blobs protege um blob específico 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 ao estado em que se encontrava no momento da eliminação. Quando o período de retenção expirar, o blob será eliminado permanentemente. Para obter mais informações sobre exclusão suave de blob, consulte Exclusão suave para blobs.
Pode utilizar as bibliotecas de cliente do Armazenamento do Azure para restaurar um blob ou instantâneo eliminado temporariamente.
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 o controlo de versões de blobs, consulte Controlo de versões de blobs. 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 não estiver habilitado, chame um dos seguintes métodos:
Esses métodos restauram blobs excluídos por software e quaisquer instantâneos excluídos associados a eles. Chamar qualquer um desses métodos para um blob que não foi excluído não tem efeito. O exemplo a seguir restaura todos os blobs excluídos por software e seus 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 excluído por software específico, primeiro chame Undeleteou UndeleteAsync no blob base e, em seguida, copie o instantâneo desejado sobre o blob base. O exemplo seguinte repõe um blob de blocos para o instantâneo mais recentemente gerado:
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 automaticamente 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. Pode utilizar um dos seguintes procedimentos:
O exemplo de código a seguir mostra como obter a versão mais recente de um blob excluído e restaurar a versão mais recente copiando-o para o blob 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 cliente do Armazenamento de Blobs do Azure para .NET, consulte os recursos a seguir.
Amostras de código
Operações da API REST
O SDK do Azure para .NET 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 .NET familiares. Os métodos da biblioteca de cliente para excluir blobs e restaurar blobs excluídos usam as seguintes operações da API REST:
- Excluir Blob (API REST)
- Recuperar Blob (API REST)
Recursos da biblioteca do cliente
Consulte também
Conteúdos relacionados
- Este artigo faz parte do guia para programadores do Armazenamento de Blobs para .NET. Para saber mais, consulte a lista completa de artigos do guia do desenvolvedor em Crie seu aplicativo .NET.