Compartir vía


Administración de propiedades y metadatos de blobs con TypeScript

Además de los datos que contienen, los blobs admiten propiedades del sistema y metadatos definidos por el usuario. En este artículo se muestra cómo administrar propiedades del sistema y metadatos definidos por el usuario 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 trabajar con propiedades o metadatos blob. Para obtener más información, consulte la guía de autorización para las siguientes operaciones de la API de REST:

Acerca de las propiedades y los metadatos

  • Propiedades del sistema: en cada recurso de almacenamiento de blobs existen propiedades del sistema. Algunas se pueden leer o establecer, mientras que otras son de solo lectura. En segundo plano, algunas propiedades del sistema corresponden a ciertos encabezados HTTP estándar. La biblioteca cliente de Azure Storage para JavaScript mantiene estas propiedades automáticamente.

  • Metadatos definidos por el usuario: los metadatos definidos por el usuario se componen de uno o más pares nombre-valor que especifica para un recurso de almacenamiento de blobs. Puede usar metadatos para almacenar valores adicionales con el recurso. Los valores de metadatos se proporcionan para uso personal y no afectan a cómo se comporta el recurso.

    Los pares de nombre/valor de metadatos son encabezados HTTP válidos y deben cumplir todas las restricciones que gobiernan los encabezados HTTP. Para obtener más información sobre los requisitos de nomenclatura de metadatos, consulte Nombres de metadatos.

Nota:

Las etiquetas del índice de blobs ofrecen la capacidad de almacenar atributos arbitrarios de clave-valor definidas por el usuario junto con un recurso de Azure Blob Storage. De manera similar a los metadatos, solo las etiquetas del índice de blobs se indexan automáticamente y son objeto de búsquedda mediante el Blob service nativo. Los metadatos no se pueden indexar ni consultar, a menos que se use un servicio independiente, como Azure Search.

Para obtener más información sobre esta característica, vea Administración y búsqueda de datos en Azure Blob Storage con el índice de blobs (versión preliminar).

Definición de encabezados HTTP de blob

En el ejemplo de código siguiente se definen las propiedades del sistema HTTP de blob en un blob.

Para establecer las propiedades HTTP de un blob, cree un BlobClient y llame a BlobClient.setHTTPHeaders. Revise las propiedades de BlobHTTPHeaders para saber qué propiedades HTTP quiere establecer. Se borran todas las propiedades HTTP no establecidas explícitamente.

async function setHTTPHeaders(blobClient: BlobClient, headers): Promise<void> {
  /*
  headers= {
      blobContentType: 'text/plain',
      blobContentLanguage: 'en-us',
      blobContentEncoding: 'utf-8',
      // all other http properties are cleared
    }
  */

  const headerResults = await blobClient.setHTTPHeaders(headers);

  if (!headerResults.errorCode) {
    console.log(`headers set successfully ${headerResults.date}`);
  }
}

Definición de metadatos

Puede especificar metadatos como uno o más pares nombre-valor en un recurso de blob o contenedor. Para definir metadatos, cree un BlobClient y envíe un objeto JSON de pares nombre-valor con

El ejemplo de código siguiente establece los metadatos en un blob.

async function setBlobMetadata(
  blobClient: BlobClient,
  metadata: Metadata
): Promise<void> {
  /*
    metadata= {
        reviewedBy: 'Bob',
        releasedBy: 'Jill',
    }
*/
  const metadataResults = await blobClient.setMetadata(metadata);

  if (!metadataResults.errorCode) {
    console.log(`metadata set successfully ${metadataResults.date}`);
  }
}

Para leer los metadatos, obtenga las propiedades del blob (que se muestran a continuación) y haga referencia específicamente a la propiedad metadata.

Obtención de propiedades del blob

En el ejemplo de código siguiente se obtienen las propiedades del sistema de un blob, incluidos los encabezados HTTP y los metadatos, y se muestran esos valores.

async function getProperties(blobClient: BlobClient): Promise<void> {
  const propertiesResponse: BlobGetPropertiesResponse =
    await blobClient.getProperties();

  if (!propertiesResponse.errorCode) {
    console.log(blobClient.name + ' properties: ');

    for (const property in propertiesResponse) {
      switch (property) {
        // nested properties are stringified and returned as strings
        case 'metadata':
        case 'objectReplicationRules':
          console.log(
            `    ${property}: ${JSON.stringify(propertiesResponse[property])}`
          );
          break;
        default:
          console.log(`    ${property}: ${propertiesResponse[property]}`);
          break;
      }
    }
  }
}

Las propiedades de blob pueden incluir:

lastModified: Mon Mar 20 2023 11:04:17 GMT-0700 (Pacific Daylight Time)
createdOn: Mon Mar 20 2023 11:04:17 GMT-0700 (Pacific Daylight Time)
metadata: {"releasedby":"Jill","reviewedby":"Bob"}
objectReplicationPolicyId: undefined
objectReplicationRules: {}
blobType: BlockBlob
copyCompletedOn: undefined
copyStatusDescription: undefined
copyId: undefined
copyProgress: undefined
copySource: undefined
copyStatus: undefined
isIncrementalCopy: undefined
destinationSnapshot: undefined
leaseDuration: undefined
leaseState: available
leaseStatus: unlocked
contentLength: 19
contentType: text/plain
etag: "0x8DB296D85EED062"
contentMD5: undefined
isServerEncrypted: true
encryptionKeySha256: undefined
encryptionScope: undefined
accessTier: Hot
accessTierInferred: true
archiveStatus: undefined
accessTierChangedOn: undefined
versionId: undefined
isCurrentVersion: undefined
tagCount: undefined
expiresOn: undefined
isSealed: undefined
rehydratePriority: undefined
lastAccessed: undefined
immutabilityPolicyExpiresOn: undefined
immutabilityPolicyMode: undefined
legalHold: undefined
errorCode: undefined
body: true
_response: [object Object]
objectReplicationDestinationPolicyId: undefined
objectReplicationSourceProperties:

Recursos

Para obtener más información sobre cómo administrar las propiedades del sistema y los metadatos definidos por el usuario usando 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 la biblioteca cliente para administrar las propiedades del sistema y los metadatos definidos por el usuario usan las siguientes operaciones de la API de REST:

Ejemplos de código

Recursos de la biblioteca cliente