Compartir a través de


Enumeración de contenedores de blobs con TypeScript

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 JavaScript.

Requisitos previos

  • Los ejemplos de este artículo suponen que ya tiene un proyecto configurado para trabajar con la biblioteca cliente de Azure Blob Storage para JavaScript. Para obtener más información sobre la configuración del proyecto, incluida la instalación de paquetes, la importación de módulos y la creación de un objeto cliente autorizado para trabajar con recursos de datos, consulte Introducción a Azure Blob Storage y TypeScript.
  • El mecanismo de autorización debe tener permisos para enumerar contenedores de blobs. Para obtener más información, consulte la guía de autorización para la siguiente operación de la API de REST:

Acerca de las opciones de listado de contenedores

Para enumerar los contenedores de la cuenta de almacenamiento, cree un objeto BlobServiceClient y, a continuación, llame al método siguiente:

Enumeración de contenedores con prefijo opcional

De forma predeterminada, una operación de enumeración devuelve hasta 5000 resultados a la vez.

The BlobServiceClient.listContainers devuelve una lista de objetos ContainerItem . Use el containerItem.name para crear un ContainerClient con el fin de obtener un objeto ContainerProperties más completo.

// return up to 5000 containers
async function listContainers(
  blobServiceClient: BlobServiceClient,
  containerNamePrefix: string
): Promise<void> {
  const options: ServiceListContainersOptions = {
    includeDeleted: false,
    includeMetadata: true,
    includeSystem: true,
    prefix: containerNamePrefix
  };

  for await (const containerItem of blobServiceClient.listContainers(options)) {
    // ContainerItem
    console.log(`For-await list: ${containerItem.name}`);

    // ContainerClient
    const containerClient: ContainerClient =
      blobServiceClient.getContainerClient(containerItem.name);

    // ... do something with container
    // containerClient.listBlobsFlat({    includeMetadata: true,
    // includeSnapshots: false,
    // includeTags: true,
    // includeVersions: false,
    // prefix: ''});
  }
}

Enumeración de contenedores con paginación

Para devolver un conjunto de resultados más pequeño, proporcione un valor distinto de cero para el tamaño de la página de resultados que se va a devolver.

Si la cuenta de almacenamiento contiene más de 5000 contenedores o si ha especificado un tamaño de página para que la operación de enumeración devuelva un subconjunto de contenedores de la cuenta de almacenamiento, Azure Storage devuelve un token de continuación con la lista de contenedores. Un token de continuación es un valor opaco que se puede usar para recuperar el siguiente conjunto de resultados de Azure Storage.

En el código, compruebe el valor del token de continuación para determinar si está vacío. Cuando el token de continuación está vacío, el conjunto de resultados está completo. Si el token de continuación no está vacío, llame de nuevo al método de enumeración y pase el token de continuación para recuperar el conjunto de resultados siguiente, hasta que el token de continuación esté vacío.

async function listContainersWithPagingMarker(
  blobServiceClient: BlobServiceClient
) {
  // add prefix to filter list
  const containerNamePrefix = '';

  // page size
  const maxPageSize = 2;

  const options: ServiceListContainersOptions = {
    includeDeleted: false,
    includeMetadata: true,
    includeSystem: true,
    prefix: containerNamePrefix
  };

  let i = 1;

  let iterator = blobServiceClient
    .listContainers(options)
    .byPage({ maxPageSize });
  let response = (await iterator.next()).value;

  // Prints 2 container names
  if (response.containerItems) {
    for (const container of response.containerItems) {
      console.log(`IteratorPaged: Container ${i++}: ${container.name}`);
    }
  }

  // Gets next marker
  const marker = response.continuationToken;

  // Passing next marker as continuationToken
  iterator = blobServiceClient
    .listContainers()
    .byPage({ continuationToken: marker, maxPageSize: maxPageSize * 2 });
  response = (await iterator.next()).value;

  // Print next 4 container names
  if (response.containerItems) {
    for (const container of response.containerItems) {
      console.log(`Container ${i++}: ${container.name}`);
    }
  }
}

Use el parámetro opciones para el método listContainers para filtrar los resultados con un prefijo.

Filtrado de los resultados con un prefijo

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

async function listContainers(
  blobServiceClient: BlobServiceClient,
  containerNamePrefix: string
) {

  const options: ServiceListContainersOptions = {
    includeDeleted: false,
    includeMetadata: true,
    includeSystem: true,

    // filter by prefix
    prefix: containerNamePrefix
  };

  for await (const containerItem of blobServiceClient.listContainers(options)) {


    // do something with containerItem

  }
}

Incluir metadatos en los resultados

Para devolver metadatos del contenedor con los resultados, especifique el valor metadata para la enumeración BlobContainerTraits. Azure Storage incluye metadatos con cada contenedor devuelto, por lo que no es necesario capturar los metadatos del contenedor como una operación independiente.

async function listContainers(
  blobServiceClient: BlobServiceClient,
  containerNamePrefix: string
) {

  const options: ServiceListContainersOptions = {
    includeDeleted: false,
    includeSystem: true,
    prefix: containerNamePrefix,

    // include metadata
    includeMetadata: true,
  };

  for await (const containerItem of blobServiceClient.listContainers(options)) {

    // do something with containerItem

  }
}

Recursos

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

Operaciones de API REST

El SDK de Azure para JavaScript contiene bibliotecas que se crean a partir de la API REST de Azure, lo que le permite interactuar con las operaciones de API REST a través de paradigmas conocidos de JavaScript. Los métodos de la biblioteca cliente para crear listas de contenedores usan esta operación de API de REST:

Ejemplos de código

Recursos de la biblioteca cliente

Consulte también