Compartir a través de


Uso de etiquetas de índice de blobs para administrar y buscar datos con TypeScript

En este artículo se muestra cómo usar etiquetas de índice en los blobs para administrar y buscar datos mediante la biblioteca cliente de Azure Storage para JavaScript.

Requisitos previos

Escribir etiquetas de índice de blobs

Las etiquetas de índice de blobs clasifican los datos de la cuenta de almacenamiento mediante atributos de etiqueta clave-valor. Estas etiquetas se indexan y se exponen automáticamente como un índice multidimensional que se puede buscar para encontrar fácilmente los datos. En este artículo se muestra cómo establecer, obtener y buscar datos mediante etiquetas de índice de blobs.

Las etiquetas de índice de blobs no se admiten para las cuentas de almacenamiento con el espacio de nombres jerárquico habilitado. Para obtener más información sobre la característica de etiqueta de índice de blobs junto con las limitaciones y los problemas conocidos, vea Administración y búsqueda de datos de Azure Blob con etiquetas de índice de blobs.

Definición de etiquetas

Puede establecer etiquetas de índice si el código tiene el acceso autorizado a los datos de los blobs mediante uno de los siguientes mecanismos:

Para más información, vea Configuración de etiquetas de índice de blobs.

Para establecer etiquetas en el tiempo de carga de blobs, cree un BlobClient y use el método siguiente:

En el siguiente ejemplo, se lleva a cabo esta tarea.

export async function setBlobTags(
  blockBlobClient: BlockBlobClient,
  tags: Tags
): Promise<void> {
  // Set tags
  const result = await blockBlobClient.setTags(tags);
  if (result.errorCode) throw Error(result.errorCode);

  console.log(`tags set for ${blockBlobClient.name}`);
}

Para eliminar todas las etiquetas, pase un objeto JSON vacío al método setTags.

Artículos relacionados
Administración y búsqueda de datos de Azure Blob con etiquetas de índice de blobs
Set Blob Tags (API REST)

Obtener etiquetas

Puede obtener etiquetas de índice si el código tiene el acceso autorizado a los datos de los blobs mediante uno de los siguientes mecanismos:

Para más información, consulte Obtención y enumeración de etiquetas de índice de blobs.

Para obtener etiquetas, cree un BlobClient y use el método siguiente:

En el ejemplo siguiente se muestra cómo obtener e iterar las etiquetas del blob.

export async function getBlobTags(
  blockBlobClient: BlockBlobClient
): Promise<Tags> {
  const getTagsResponse: BlobGetTagsResponse = await blockBlobClient.getTags();

  if (getTagsResponse.errorCode) throw Error(getTagsResponse.errorCode);

  // Tags: Record<string, string>
  const tags: Tags = getTagsResponse.tags;

  console.log(`tags for ${blockBlobClient.name}`);

  // Print out name/value pairs
  Object.keys(tags).map((tag) => console.log(`${[tag]}: ${tags[tag]}`));

  return tags;
}

Filtrado y búsqueda de datos con etiquetas de índice de blobs

Puede usar etiquetas de índice para buscar y filtrar datos si el código tiene el acceso autorizado a los datos de los blobs mediante uno de los siguientes mecanismos:

Para más información, consulte Búsqueda de datos mediante etiquetas de índice de blobs.

Nota:

No se pueden utilizar etiquetas de índice para recuperar versiones anteriores. Las etiquetas de las versiones anteriores no se pasan al motor de índices de blobs. Para más información, consulte Condiciones y problemas conocidos.

Los datos se consultan con un objeto JSON enviado como una cadena. Las propiedades no necesitan comillas de cadena adicionales, pero los valores sí.

En la tabla siguiente se muestran algunas cadenas de consulta:

Cadena de consulta para etiquetas (tagOdataQuery) Descripción
id='1' AND project='billing' Filtre los blobs de todos los contenedores en función de estas dos propiedades.
owner='PhillyProject' AND createdOn >= '2021-12' AND createdOn <= '2022-06' Filtre los blobs de todos los contenedores en función del valor de propiedad estricto para owner y el intervalo de fechas para la propiedad createdOn.
@container = 'my-container' AND createdBy = 'Jill' Filtre por contenedor y propiedad específica. En esta consulta, createdBy es una coincidencia de texto y no indica una coincidencia de autorización a través de Active Directory.

Para buscar blobs, cree un BlobClient y use el método siguiente:

En el ejemplo siguiente se buscan todos los blobs que coincidan con el parámetro tagOdataQuery.

async function findBlobsByQuery(
  blobServiceClient: BlobServiceClient,
  tagOdataQuery: string
): Promise<void> {
  // page size
  const maxPageSize = 10;

  let i = 1;

  const listOptions: ServiceFindBlobByTagsOptions = {};

  let iterator = blobServiceClient
    .findBlobsByTags(tagOdataQuery, listOptions)
    .byPage({ maxPageSize });
  let response = (await iterator.next()).value;

  // Prints blob names
  if (response.blobs) {
    for (const blob of response.blobs) {
      console.log(`Blob ${i++}: ${blob.name} - ${JSON.stringify(blob.tags)}`);
    }
  }

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

  // no more blobs
  if (!marker) return;

  // Passing next marker as continuationToken
  iterator = blobServiceClient
    .findBlobsByTags(tagOdataQuery, listOptions)
    .byPage({ continuationToken: marker, maxPageSize });
  response = (await iterator.next()).value;

  // Prints blob names
  if (response.blobs) {
    for (const blob of response.blobs) {
      console.log(`Blob ${i++}: ${blob.name} - ${JSON.stringify(blob.tags)}`);
    }
  }
}

En la salida de ejemplo de esta función se muestran los blobs coincidentes y sus etiquetas, en función del código console.log de la función anterior:

Response
Blob 1: set-tags-1650565920363-query-by-tag-blob-a-1.txt - {"createdOn":"2022-01","owner":"PhillyProject","project":"set-tags-1650565920363"}

Recursos

Para más información sobre cómo usar las etiquetas de índice para administrar y buscar datos mediante la biblioteca cliente de Azure Blob Storage para JavaScript, consulte los siguientes recursos.

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 biblioteca cliente para administrar y usar etiquetas de índice de blobs usan las siguientes operaciones de la API REST:

Ejemplos de código

Recursos de la biblioteca cliente

Consulte también