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:
- BlobServiceClient.listContainers
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:
- List Containers (API REST)
Ejemplos de código
Recursos de la biblioteca cliente
- Documentación de referencia de la biblioteca cliente
- Código fuente de la biblioteca del cliente
- Paquete (npm)