このページでは、Cloud Storage オブジェクトに Key-Value ペアの形式でコンテキストを関連付けて管理する方法について説明します。
必要なロールを取得する
オブジェクト コンテキストの作成と管理に必要な権限を取得するには、オブジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
コンテキストを使用してオブジェクトを作成する: Storage オブジェクト作成者(
roles/storage.objectCreator) -
オブジェクトのコンテキストの追加、更新、表示、削除: Storage オブジェクト ユーザー(
roles/storage.objectUser) -
オブジェクトに付加されたコンテキスト キーと値を表示する: Storage オブジェクト閲覧者(
roles/storage.objectViewer)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、オブジェクト コンテキストの作成と管理に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
オブジェクト コンテキストの作成と管理には、次の権限が必要です。
-
オブジェクト コンテキストを使用したオブジェクトの作成:
-
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
gcloud CLI のインストールと初期化を行います。これにより、
Authorizationヘッダーのアクセス トークンを生成できます。オブジェクトの設定を含む JSON ファイルを作成します。この設定には、オブジェクトの
contexts構成フィールドを含める必要があります。既存のコンテキストを追加、変更、または上書きするには、次の形式を使用します。
{ "contexts": { "custom": { "KEY": { "value": "VALUE" }, ... } } }
ここで
KEYは、オブジェクトに付加するコンテキスト キーです。例:Departmentcustomオブジェクトには複数の Key-Value ペアを指定できます。VALUEは、コンテキスト キーに関連付ける値です。例:Human resources既存のコンテキストをすべて削除するには、次の形式を使用します。
{ "contexts": { "custom": null } }
コンテキストから特定のキーを削除するには、次の形式を使用します。
{ "contexts": { "custom": { "KEY": null, ... } } }
ここで
KEYは、オブジェクトから削除するコンテキスト キーです。例:Departmentcustomオブジェクトから削除する複数のキーを指定できます。
cURLを使用してPATCHObject リクエストで 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./storage/v1/b/BUCKET_NAME/o/OBJECT_NAME"
ここで
JSON_FILE_NAMEは、オブジェクト コンテキスト情報を含むファイルへのパスです。BUCKET_NAMEは、コンテキストを編集するオブジェクトを含むバケットの名前です。例:my-bucketOBJECT_NAMEは、オブジェクトの URL エンコードされた名前です。たとえば、pets/dog.pngはpets%2Fdog.pngとして URL エンコードされます。
または、オブジェクトのコンテキストを PUT Object リクエストで置き換えることもできます。PUT Object リクエストは、他のオブジェクト メタデータも置き換えます。そのため、PUT Object リクエストの使用はおすすめしません。
オブジェクト コンテキストを表示する
オブジェクトのコンテキストを表示するには、オブジェクトのメタデータを一覧表示するか、特定のオブジェクトを記述します。
JSON API
gcloud CLI をインストールして初期化します。これにより、
Authorizationヘッダーのアクセス トークンを生成できます。cURLを使用して、GETObject リクエストで JSON API を呼び出します。curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage./storage/v1/b/BUCKET_NAME/o/OBJECT_NAME"
ここで
BUCKET_NAMEは、コンテキストを表示するオブジェクトが含まれるバケットの名前です。例:my-bucketOBJECT_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プロパティで、宛先オブジェクトの新しいコンテキストを指定することもできます。
次のステップ
- オブジェクト コンテキスト プロパティについては、Cloud Storage API ドキュメントをご覧ください。