使用 TypeScript 管理容器属性和元数据

除 Blob 容器包含的数据外,它们还支持系统属性和用户定义的元数据。 本文介绍如何使用用于 JavaScript 的 Azure 存储客户端库管理系统属性和用户定义元数据。

先决条件

关于属性和元数据

  • 系统属性:系统属性存在于每个 Blob 存储资源上。 其中一些属性是可以读取或设置的,而另一些属性是只读的。 事实上,有些系统属性与某些标准 HTTP 标头对应。 用于 JavaScript 的 Azure 存储客户端库将维护这些属性。

  • 用户定义的元数据:用户定义元数据包含一个或多个你为 Blob 存储资源指定的名称/值对对。 可以使用元数据存储资源的其他值。 元数据值仅用于你自己的目的,不会影响资源的行为方式。

    元数据名称/值对是有效的 HTTP 标头,因此应当遵循所有控制 HTTP 标头的限制。 有关元数据命名要求的详细信息,请参阅元数据名称

检索容器属性

若要检索容器属性,请创建 ContainerClient 对象,然后使用以下方法:

以下代码示例提取容器的属性并将属性值写入到控制台窗口:

async function getContainerProperties(
  containerClient: ContainerClient
): Promise<void> {
  const properties: ContainerGetPropertiesResponse =
    await containerClient.getProperties();

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

  console.log(containerClient.containerName + ' properties: ');

  for (const property in properties) {
    switch (property) {
      // nested properties are stringified
      case 'metadata':
        //case 'objectReplicationRules':
        console.log(`    ${property}: ${JSON.stringify(properties[property])}`);
        break;
      default:
        console.log(`    ${property}: ${properties[property]}`);
        break;
    }
  }
}
/* Example output: 
{
    "metadata": {
        "lastfilereview": "3/20/2023",
        "reviewer": "johnh"
    },
    "etag": "\"0x8DB295348CDCD54\"",
    "lastModified": "2023-03-20T14:56:28.000Z",
    "leaseState": "available",
    "leaseStatus": "unlocked",
    "clientRequestId": "0bc8c31a-c607-477e-9846-f2121b10297a",
    "requestId": "1e4ee737-b01e-0042-4e3c-5b2207000000",
    "version": "2021-12-02",
    "date": "2023-03-20T14:56:28.000Z",
    "blobPublicAccess": "container",
    "hasImmutabilityPolicy": false,
    "hasLegalHold": false,
    "defaultEncryptionScope": "$account-encryption-key",
    "denyEncryptionScopeOverride": false,
    "isImmutableStorageWithVersioningEnabled": false
}
*/

设置和检索元数据

可以为容器资源指定元数据作为一个或多个名称/值对。 若要设置元数据,请创建 ContainerClient 对象,然后使用以下方法:

以下代码示例在容器上设置元数据。

/*
const metadata = {
  // values must be strings
  lastFileReview: currentDate.toString(),
  reviewer: `johnh`
}
*/
async function setContainerMetadata(
  containerClient: ContainerClient,
  metadata: Metadata
) {
  await containerClient.setMetadata(metadata);
}

若要检索元数据,请获取容器属性,然后使用返回的元数据属性。

资源

若要详细了解如何使用适用于 JavaScript 的 Azure Blob 存储客户端库来设置和检索容器属性与元数据,请参阅以下资源。

REST API 操作

Azure SDK for JavaScript 包含基于 Azure REST API 而生成的库,允许你通过熟悉的 JavaScript 范例与 REST API 操作进行交互。 用于设置和检索属性和元数据的客户端库方法使用以下 REST API 操作:

getProperties 方法通过调用获取 Blob 属性操作和获取 Blob 元数据操作来检索容器属性和元数据。

代码示例

客户端库资源