TypeScript を使ってコンテナーのプロパティとメタデータを管理する

BLOB コンテナーは、そこに含まれているデータに加えて、システム プロパティとユーザー定義メタデータをサポートしています。 この記事では、JavaScript 用 Azure Storage クライアント ライブラリを使用して、システム プロパティとユーザー定義メタデータを管理する方法について説明します。

前提条件

  • この記事の例では、JavaScript 用の Azure Blob Storage クライアント ライブラリを操作するための設定が済んだプロジェクトが、既にあることを前提としています。 パッケージのインストール、モジュールのインポート、データ ソースを操作するために認可されたクライアント オブジェクトの作成など、プロジェクトの設定については、「Azure Blob Storage と TypeScript の概要」を参照してください。
  • 認可メカニズムには、コンテナーのプロパティまたはメタデータを操作するためのアクセス許可が必要です。 詳細については、次の REST API 操作の認可ガイダンスを参照してください。

プロパティとメタデータについて

  • システムのプロパティ:システム プロパティは、各 BLOB ストレージ リソース上に存在します。 このようなプロパティには、読み取りまたは設定可能なものもありますが、読み取り専用のものもあります。 実際には、システムのプロパティの一部は、特定の標準 HTTP ヘッダーに対応しています。 JavaScript 用 Azure Storage クライアント ライブラリでは、これらのプロパティがユーザーに代わって保持されます。

  • ユーザー定義のメタデータ: ユーザー定義メタデータは、BLOB ストレージ リソースに対して指定された 1 つ以上の名前と値のペアで構成されます。 メタデータを使用すると、リソースに関する追加の値を格納できます。 メタデータ値は独自の目的にのみ使用され、リソースの動作には影響しません。

    メタデータ名/値ペアは有効な 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);
}

メタデータを取得するには、コンテナーのプロパティを取得した後、返された metadata プロパティを使用します。

リソース

JavaScript 用 Azure Blob Storage クライアント ライブラリを使用してコンテナーのプロパティとメタデータを設定および取得する方法の詳細については、次のリソースを参照してください。

REST API の操作

Azure SDK for JavaScript には Azure REST API に基づいて構築されたライブラリが含まれるため、使い慣れた JavaScript パラダイムを通じて REST API 操作を利用できます。 プロパティとメタデータを設定および取得するためのクライアント ライブラリ メソッドでは、次の REST API 操作が使用されます。

getProperties メソッドは、Get Blob Properties 操作と Get Blob Metadata 操作の両方を呼び出すことによって、コンテナーのプロパティとメタデータを取得します。

コード サンプル

クライアント ライブラリのリソース