オブジェクト コンテキストを使用する

このページでは、Cloud Storage オブジェクトに Key-Value ペアの形式でコンテキストを関連付けて管理する方法について説明します。

必要なロールを取得する

オブジェクト コンテキストの作成と管理に必要な権限を取得するには、オブジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

これらの事前定義ロールには、オブジェクト コンテキストの作成と管理に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

オブジェクト コンテキストの作成と管理には、次の権限が必要です。

  • オブジェクト コンテキストを使用したオブジェクトの作成:
    • storage.objects.create
    • storage.objects.createContext
  • オブジェクト コンテキストの関連付け、更新、削除:
    • storage.objects.update
    • storage.objects.createContext
    • storage.objects.updateContext
    • storage.objects.deleteContext
  • オブジェクト コンテキストの表示:
    • storage.objects.get
    • storage.objects.list

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

新しいオブジェクトにコンテキストを関連付ける

新しいオブジェクトを Cloud Storage バケットにアップロードするときに、オブジェクトにコンテキストを関連付けます。各コンテキストはキーと値で構成されます。

JSON API

新しいオブジェクトをアップロードするときにコンテキストをオブジェクトに関連付けるには、次のいずれかの方法を使用します。

既存のオブジェクトにコンテキストを関連付ける、またはコンテキストを変更する

Cloud Storage バケット内の既存のオブジェクトに新しいコンテキストを関連付けることができます。

JSON API

  1. gcloud CLI のインストールと初期化を行います。これにより、Authorization ヘッダーのアクセス トークンを生成できます。

  2. オブジェクトの設定を含む JSON ファイルを作成します。この設定には、オブジェクトの contexts 構成フィールドを含める必要があります。

    既存のコンテキストを追加、変更、または上書きするには、次の形式を使用します。

      {
        "contexts": {
          "custom": {
            "KEY": {
              "value": "VALUE"
            },
            ...
          }
        }
      }

    ここで

    • KEY は、オブジェクトに付加するコンテキスト キーです。例: Departmentcustom オブジェクトには複数の Key-Value ペアを指定できます。
    • VALUE は、コンテキスト キーに関連付ける値です。例: Human resources

      既存のコンテキストをすべて削除するには、次の形式を使用します。

      {
        "contexts": {
          "custom": null
        }
      }

      コンテキストから特定のキーを削除するには、次の形式を使用します。

      {
        "contexts": {
          "custom": {
            "KEY": null,
            ...
          }
        }
      }

      ここで

      KEY は、オブジェクトから削除するコンテキスト キーです。例: Departmentcustom オブジェクトから削除する複数のキーを指定できます。

  3. cURL使用して PATCH Object リクエストで JSON API を呼び出します。

    curl -X PATCH --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME"

    ここで

    • JSON_FILE_NAME は、オブジェクト コンテキスト情報を含むファイルへのパスです。
    • BUCKET_NAME は、コンテキストを編集するオブジェクトを含むバケットの名前です。例: my-bucket
    • OBJECT_NAME は、オブジェクトの URL エンコードされた名前です。たとえば、pets/dog.pngpets%2Fdog.png として URL エンコードされます。

または、オブジェクトのコンテキストを PUT Object リクエストで置き換えることもできます。PUT Object リクエストは、他のオブジェクト メタデータも置き換えます。そのため、PUT Object リクエストの使用はおすすめしません。

オブジェクト コンテキストを表示する

オブジェクトのコンテキストを表示するには、オブジェクトのメタデータを一覧表示するか、特定のオブジェクトを記述します。

JSON API

  1. gcloud CLI をインストールして初期化します。これにより、Authorization ヘッダーのアクセス トークンを生成できます。

  2. cURL使用して、GET Object リクエストで JSON API を呼び出します。

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME"

    ここで

    • BUCKET_NAME は、コンテキストを表示するオブジェクトが含まれるバケットの名前です。例: my-bucket
    • OBJECT_NAME は、コンテキストを表示するオブジェクトの URL エンコード名です。たとえば、pets%2Fdog.png と URL エンコードした pets/dog.png です。

    正常に終了すると、レスポンスは次の例のようになります。

      {
        "kind": "storage#object",
        "name": "employees.txt",
        "bucket": "my-bucket",
        "contexts": {
          "custom": {
            "Department": {
              "value": "HR",
              "createTime": "2023-01-01T00:00:00.000Z",
              "updateTime": "2023-01-01T00:00:00.000Z"
            },
            "DataClassification": {
              "value": "Confidential",
              "createTime": "2023-01-01T00:00:00.000Z",
              "updateTime": "2023-01-01T00:00:00.000Z"
            }
          }
        }
      }
      

コンテキストでオブジェクトをフィルタする

オブジェクト コンテキスト キーの存在またはその特定の値でオブジェクトをフィルタします。コンテキストでオブジェクトをフィルタすると、特定のオブジェクト グループを効率的に見つけて管理できます。詳細については、オブジェクト コンテキストでフィルタするをご覧ください。

オブジェクト オペレーション時にオブジェクト コンテキストを管理する

オブジェクトをコピー、書き換え、作成、移動、復元すると、オブジェクト コンテキストはデフォルトで保持されます。コピー、書き換え、作成のオペレーション中にコンテキストを変更することもできます。

JSON API

  • コピーまたは書き換えのオブジェクト オペレーション中にコンテキストを変更するには、リクエストの本文に contexts.custom プロパティを含めます。このプロパティを含めない場合、ソース オブジェクトのコンテキストはデフォルトで保持されます。

  • オブジェクトを作成すると、デフォルトでソース オブジェクトのコンテキストが宛先オブジェクトにマージされます。Cloud Storage は、後で処理されたソース オブジェクトのコンテキストを優先することで、競合を解決します。作成オペレーション中のオブジェクト コンテキストの動作について詳しくは、複合オブジェクト コンテキストをご覧ください。destination.contexts.custom プロパティで、宛先オブジェクトの新しいコンテキストを指定することもできます。

次のステップ