Compartir vía


Enumeración de contenedores de blob con .NET

Al enumerar los contenedores de una cuenta de Azure Storage desde el código, puede especificar una serie de opciones para administrar cómo se devuelven los resultados de Azure Storage. En este artículo se muestra cómo enumerar contenedores con la biblioteca cliente de Azure Storage para .NET.

Requisitos previos

Configurar el entorno

Si no tiene un proyecto existente, esta sección le muestra cómo configurar un proyecto para que funcione con la biblioteca de clientes Azure Blob Storage para .NET. Los pasos incluyen la instalación del paquete, la adición de directivas using y la creación de un objeto cliente autorizado. Para más información, consulte Introducción a Azure Blob Storage y .NET.

Instalar paquetes

En el directorio del proyecto, instale los paquetes para las bibliotecas cliente de Azure Blob Storage y Azure Identity mediante el comando dotnet add package. El paquete Azure.Identity es necesario para las conexiones sin contraseña a los servicios de Azure.

dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity

Agregue directivas using.

Agregue estas directivas using al principio del archivo de código:

using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;

Algunos ejemplos de código de este artículo pueden requerir directivas using adicionales.

Creación de un objeto de cliente

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

public BlobServiceClient GetBlobServiceClient(string accountName)
{
    BlobServiceClient client = new(
        new Uri($"https://{accountName}.blob.core.windows.net"),
        new DefaultAzureCredential());

    return client;
}

Puede registrar un cliente de servicio para la inserción de dependencias en una aplicación .NET.

También puede crear objetos de cliente para contenedores o blobs específicos. Para obtener más información sobre cómo crear y administrar objetos de cliente, consulte Crear y administrar objetos de cliente que interactúan con los recursos de datos.

Authorization

El mecanismo de autorización debe tener los permisos necesarios para enumerar contenedores de blobs. 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 Contenedores de lista (API de REST).

Acerca de las opciones de listado de contenedores

Al enumerar blobs desde el código, puede especificar opciones para administrar cómo se devuelven los resultados de Azure Storage. Puede especificar el número de resultados que se van a devolver en cada conjunto de resultados y luego recuperar los conjuntos subsiguientes. También puede filtrar los resultados por un prefijo y devolver metadatos de contenedor con los resultados. Estas opciones se describen en las secciones siguientes.

Para enumerar los contenedores de la cuenta de almacenamiento, llame a uno de los métodos siguientes:

Estos métodos devuelven una lista de objetos BlobContainerItem. Los contenedores se ordenan lexicográficamente por nombre.

Administración del número de resultados que se devuelven

De forma predeterminada, una operación de enumeración devuelve hasta 5000 resultados a la vez, pero puede especificar el número de resultados que quiere que devuelva. En los ejemplos que se presentan en este artículo muestran cómo devolver resultados por páginas. Para más información sobre los conceptos de paginación, consulte Paginación con el SDK de Azure para .NET.

Filtrado de los resultados con un prefijo

Para filtrar la lista de contenedores, especifique una cadena para el parámetro prefix. La cadena de prefijo puede incluir uno o varios caracteres. Después, Azure Storage solo devuelve los contenedores cuyos nombres empiecen por ese prefijo.

Incluir metadatos de contenedor

Para incluir metadatos de contenedor con los resultados, especifique el valor Metadata de la enumeración BlobContainerTraits. Azure Storage incluye metadatos con cada contenedor devuelto, por lo que no es necesario capturar también los metadatos del contenedor.

Incluir contenedores eliminados

Para incluir contenedores eliminados temporalmente con los resultados, especifique el valor Deleted de la enumeración BlobContainerStates.

Ejemplo de código: Enumerar contenedores

En el ejemplo siguiente se enumeran de forma asincrónica los contenedores de una cuenta de almacenamiento que comienzan con un prefijo especificado. En el ejemplo se muestran los contenedores que comienzan con el prefijo especificado y se devuelve el número especificado de resultados por llamada a la operación de enumeración. A continuación, usa el token de continuación para obtener el segmento de resultados siguiente. En el ejemplo también se devuelven metadatos de contenedor con los resultados.

async static Task ListContainers(BlobServiceClient blobServiceClient, 
                                string prefix, 
                                int? segmentSize)
{
    try
    {
        // Call the listing operation and enumerate the result segment.
        var resultSegment = 
            blobServiceClient.GetBlobContainersAsync(BlobContainerTraits.Metadata, prefix, default)
            .AsPages(default, segmentSize);

        await foreach (Azure.Page<BlobContainerItem> containerPage in resultSegment)
        {
            foreach (BlobContainerItem containerItem in containerPage.Values)
            {
                Console.WriteLine("Container name: {0}", containerItem.Name);
            }

            Console.WriteLine();
        }
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine(e.Message);
        Console.ReadLine();
        throw;
    }
}

Recursos

Para más información sobre cómo crear listas de contenedores con la biblioteca cliente de Azure Blob Storage para .NET, consulte los recursos siguientes.

Operaciones de API REST

El SDK de Azure para .NET 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 .NET. Los métodos de la biblioteca cliente para crear listas de contenedores usan esta operación de API de REST:

Recursos de la biblioteca cliente

Consulte también

  • Este artículo forma parte de la guía para desarrolladores de Blob Storage para .NET. Para obtener más información, consulte la lista completa de artículos de la guía para desarrolladores en Compilación de la aplicación .NET.