Compartir a través de


Eliminación y restauración de un contenedor de blobs con Go

En este artículo se muestra cómo eliminar contenedores con el módulo cliente de Azure Storage para Go. Si ha habilitado la eliminación temporal de contenedores, puede restaurar los contenedores eliminados.

Requisitos previos

Configurar el entorno

Si no tiene un proyecto existente, en esta sección se muestra cómo configurar un proyecto para que funcione con el módulo cliente de Azure Blob Storage para Go. Los pasos incluyen la instalación del módulo, la adición de rutas de acceso de import y la creación de un objeto de cliente autorizado. Para obtener información, consulte Introducción a Azure Blob Storage y Go.

Módulos de instalación

Instale el módulo azblob mediante el siguiente comando:

go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob

Para autenticarse con Microsoft Entra ID (recomendado), instale el módulo azidentity mediante el siguiente comando:

go get github.com/Azure/azure-sdk-for-go/sdk/azidentity

Agregar rutas de importación

En el archivo de código, agregue las rutas de importación siguientes:

import (
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

Algunos ejemplos de código de este artículo pueden requerir rutas de importación adicionales. Para obtener detalles específicos y ejemplos de uso, consulte Ejemplos de código.

Creación de un objeto de cliente

Para conectar una aplicación a Blob Storage, cree un objeto de cliente mediante azblob.NewClient. En el ejemplo siguiente se muestra cómo crear un objeto de cliente mediante DefaultAzureCredential para la autorización:

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
}

Authorization

El mecanismo de autorización debe tener los permisos necesarios para eliminar o restaurar un contenedor. Para la autorización con Microsoft Entra ID (recomendado) se necesita el rol integrado de RBAC de Azure de Colaborador de datos de Storage Blob o superior. Para obtener más información, consulte la guía de autorización para la Eliminación de un contenedor (API de REST) y la Restauración de un contenedor (API de REST).

Eliminación de un contenedor

Para eliminar un contenedor, llame al método siguiente:

Después de eliminar un contenedor, no se puede crear otro con el mismo nombre durante al menos 30 segundos. Un intento de crear un contenedor con el mismo nombre produce un error con el código de error de HTTP 409 (Conflict). Cualquier otra operación en el contenedor o en los blobs que contiene produce un error con el código de error HTTP 404 (Not Found).

En el ejemplo siguiente se muestra cómo eliminar un contenedor especificado:

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

Restauración de un contenedor eliminado

Cuando la eliminación temporal de contenedores está habilitada para una cuenta de almacenamiento, un contenedor y su contenido se pueden recuperar dentro de un período de retención especificado. Para obtener información sobre cómo habilitar la eliminación temporal de contenedores, consulte Habilitación y administración de la eliminación temporal de contenedores. Puede restaurar un contenedor eliminado temporalmente llamando al método siguiente desde el ServiceClient insertado para el objeto de cliente:

En el ejemplo siguiente se enumeran los contenedores, incluidos los contenedores eliminados temporalmente, y se recorre en iteración en la lista para restaurar el contenedor eliminado temporalmente 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:

Los ejemplos de código de esta guía están diseñados para ayudarle a empezar a trabajar con Azure Blob Storage y Go. Debe modificar el control de errores y los valores de Context para satisfacer las necesidades de la aplicación.

Recursos

Para obtener más información sobre cómo eliminar un contenedor con el módulo cliente de Azure Blob Storage para Go, consulte los recursos siguientes.

Ejemplos de código

Operaciones de API REST

Azure SDK para Go contiene bibliotecas que se crean a partir de la API de REST de Azure, lo que le permite interactuar con las operaciones de API de REST a través de paradigmas conocidos de Go. Los métodos de la biblioteca cliente para eliminar o restaurar un contenedor usan esta operación de API REST:

Recursos del módulo cliente

Consulte también