Partilhar via


Excluir e restaurar um contêiner de blob com Go

Este artigo mostra como excluir contêineres com o módulo de cliente de Armazenamento do Azure para Go. Se você tiver habilitado a exclusão suave de contêiner, poderá restaurar contêineres excluídos.

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 ou restaurar um contêiner. 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 contêiner (API REST) e Restaurar contêiner (API REST).

Eliminar um contentor

Para excluir um contêiner, chame o seguinte método:

Depois de excluir um contêiner, não é possível criar um contêiner com o mesmo nome por pelo menos 30 segundos. A tentativa de criar um contêiner com o mesmo nome falha com o código 409 (Conflict)de erro HTTP . Quaisquer outras operações no contêiner ou nos blobs que ele contém falham com o código 404 (Not Found)de erro HTTP.

O exemplo a seguir mostra como excluir um contêiner especificado:

func deleteContainer(client *azblob.Client, containerName string) {
    // Delete the container
    _, err := client.DeleteContainer(context.TODO(), containerName, nil)
    handleError(err)
}

Restaurar um contêiner excluído

Quando a exclusão suave de contêiner está habilitada para uma conta de armazenamento, um contêiner excluído e seu conteúdo podem ser recuperados dentro de um período de retenção especificado. Para saber mais sobre a exclusão suave de contêiner, consulte Habilitar e gerenciar a exclusão suave para contêineres. Você pode restaurar um contêiner excluído chamando o seguinte método do ServiceClient incorporado para o objeto cliente:

O exemplo a seguir lista contêineres, incluindo contêineres excluídos por software, e itera sobre a lista para restaurar o contêiner excluído por software especificado:

func restoreDeletedContainer(client *azblob.Client, containerName string) {
    // List containers, included deleted ones
    pager := client.NewListContainersPager(&azblob.ListContainersOptions{
        Include: azblob.ListContainersInclude{Deleted: true},
    })

    for pager.More() {
        resp, err := pager.NextPage(context.TODO())
        handleError(err)

        for _, container := range resp.ContainerItems {
            if *container.Name == containerName && *container.Deleted {
                // Restore the deleted container
                _, err := client.ServiceClient().RestoreContainer(context.TODO(), containerName, *container.Version, 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 um contêiner usando o módulo de cliente de Armazenamento de Blob 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 de biblioteca de cliente para excluir ou restaurar um contêiner usam as seguintes operações de 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.