共用方式為


使用 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 操作

適用於 JavaScript 的 Azure SDK 包含建置在 Azure REST API 之上的程式庫,可讓您透過熟悉的 JavaScript 範例與 REST API 作業進行互動。 用來設定與擷取屬性和中繼資料的用戶端程式庫方法會使用下列 REST API 作業:

getProperties 方法會藉由呼叫取得 Blob 屬性作業和取得 Blob 中繼資料作業來擷取 Blob 容器和中繼資料。

程式碼範例

用戶端程式庫資源