メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

オブジェクトのタグ付け

オブジェクトのタグ付けによりストレージを分類できます。各タグはキーと値のペアです。次のタグ付けの例について説明します。

  • 保護されるべき医療情報 (PHI) データがオブジェクトに含まれているとします。このオブジェクトは次に示すキーと値のペアを使用してタグ付けできます。

    Copy
    PHI=True

    または

    Copy
    Classification=PHI
  • プロジェクトファイルを S3 バケットに保存するとします。このようなオブジェクトは、Project というキーと値を使用して次のようにタグ付けします。

    Copy
    Project=Blue
  • 次に示すように複数のタグを 1 つのオブジェクトに付けることができます。

    Copy
    Project=x Classification=confidential

新しいオブジェクトのアップロード時のタグ付け、または既存のオブジェクトのタグ付けを行うことができます次の点に注意してください。

  • 1 つのオブジェクトに最大 10 個のタグを関連付けることができます。オブジェクトに関連付けるタグには一意のタグキーが必要です。

  • タグキーには最大 128 個の Unicode 文字、タグ値には最大 256 個の Unicode 文字を使用できます。

  • キーと値は大文字と小文字が区別されます。

オブジェクトキー名のプレフィックスを使用してストレージを分類することもできますが、プレフィックスに基づく分類のディメンションは 1 つです。次のオブジェクトキー名について説明します。

Copy
photos/photo1.jpg project/projectx/document.pdf project/projecty/document2.pdf

これらのキー名には、プレフィックスとして photos/project/projectx/、および project/projecty/ が付いています。このプレフィックスによって 1 つのディメンションでの分類が行われます。つまり、1 つのプレフィックスのオブジェクトすべてが 1 つのカテゴリになります。たとえば、プレフィックス project/projectx はプロジェクト x に関連するすべてのドキュメントを識別します。

タグ付けによってもう 1 つのディメンションを設定できます。プロジェクト x カテゴリ内に photo1 が必要な場合、そのようにオブジェクトにタグ付けできます。データの分類だけでなくタグ付けには他の利点もあります。たとえば、

  • オブジェクトのタグを使用するとアクセス許可をきめ細かく制御できます。たとえば、特定のタグが付けられたオブジェクトの限み取り専用権限を IAM ユーザーに許可することができます。

  • オブジェクトのタグを使用すると、ライフサイクルルールでキー名プレフィックスに加えてタグに基づくフィルタを指定でき、オブジェクトライフサイクルをきめ細かく管理できます。

  • また、Amazon CloudWatch メトリクスおよび AWS CloudTrail ログをカスタマイズして、特定のタグフィルタごとに情報を表示することもできます。詳細については次のセクションで説明します。

重要

機密データ (個人を特定できる情報 (PII) または保護すべき医療情報 (PHI)) を含むオブジェクトのラベルとしてタグを使用できますが、タグそのものに機密情報を含めることはできません。

オブジェクトのタグ付けに関連する API オペレーション

Amazon S3 では、特にオブジェクトのタグ付けについて次の API オペレーションがサポートされています。

オブジェクトの API オペレーション

  • PUT Object tagging – オブジェクトのタグを置換します。リクエスト本文にタグを指定します。 この API を使用したオブジェクトタグ管理の 2 つのシナリオは次のとおりです。

    • オブジェクトにタグがない – この API を使用して一連のタグをオブジェクトに付けることができます (オブジェクトには事前にタグが付いていない)。

    • オブジェクトに既存のタグセットがある – 既存のタグセットを変更するには、最初に既存のタグセットを取得してクライアント側で変更してから、この API を使用してタグセットを置換する必要があります。タグセットを空にしてこのリクエストを送信すると、S3 によってオブジェクトの既存のタグセットが削除されます。

     

  • GET Object tagging – オブジェクトに関連付けられているタグセットを返します。Amazon S3 によってレスポンス本文でオブジェクトタグが返されます。

     

  • DELETE Object tagging – オブジェクトに関連付けられているタグセットを削除します。

タグ付けをサポートする他の API オペレーション

  • PUT Object – オブジェクトを作成するときにタグを指定できます。x-amz-tagging リクエストヘッダーを使用してタグを指定します。

     

  • GET Object – Amazon S3 はタグセットを返さずに、x-amz-tag-count ヘッダーでオブジェクトのタグ数を返します (リクエスト側にタグの読み取り権限がある場合のみ)。これは、ヘッダーのレスポンスサイズが 8 KB に制限されるためです。タグを表示するには、GET Object tagging API オペレーションで別のリクエストを作成します。

     

  • POST Object – POST リクエストでタグを指定できます。

    リクエスト内のタグが 8 KB の HTTP リクエストヘッダーサイズ制限を超えない場合は、PUT Object API を使用してタグ付きのオブジェクトを作成できます。指定するタグがヘッダーサイズ制限を超える場合は、この POST メソッドを使用して本文にタグを指定できます。

     

  • PUT Object - Copy – リクエストに x-amz-tagging-directive を指定し、タグをコピー (デフォルト動作) するか、リクエストに指定された新しいタグセットでタグを置換するように Amazon S3 に指示します。

次の点に注意してください。

  • タグ付けは結果整合性モデルに従います。つまり、タグをオブジェクトに付けてからすぐにタグを取得しようとすると、そのオブジェクトの古いタグ (ある場合) を取得することがあります。ただし、その後の呼び出しでは更新されたタグが取得される可能性が高くなります。

オブジェクトのタグ付けと追加情報

このセクションでは、オブジェクトのタグ付けが他の設定にどのように関連するかを説明します。

オブジェクトのタグ付けとライフサイクル管理

バケットライフサイクル設定では、ルールを適用するオブジェクトのサブセットを選択するためにフィルタを指定できます。キー名プレフィックスまたはオブジェクトタグ (あるいは両方) に基づいてフィルタを指定できます。

Amazon S3 バケットに写真 (RAW 形式および完成形式) を保存するとします。このようなオブジェクトには次のようにタグ付けできます。

Copy
phototype=raw or phototype=finished

作成した後でしばらくして RAW 写真の Amazon Glacier へのアーカイブを検討するかもしれません。特定のタグ (phototype=raw) を持つキー名プレフィックス (photos/) でオブジェクトのサブセットを特定するフィルタを使用して、ライフサイクルルールを設定できます。

詳細については、「オブジェクトのライフサイクル管理」を参照してください。

オブジェクトのタグ付けとクロスリージョンレプリケーション (CRR)

クロスリージョンレプリケーション (CRR) をバケットで設定した場合、タグを読み取る権限を S3 に許可すると、Amazon S3 によってタグがレプリケートされます。詳細については、「クロスリージョンレプリケーションのセットアップ方法」を参照してください。

オブジェクトのタグ付けとマルチパートアップロード

マルチパートアップロード API オペレーションを使用してオブジェクトを作成するとき、オブジェクトにタグを付けることができるのは、マルチパートアップロードが完了してからです (つまりオブジェクトの作成後)。その後、PUT Object tagging API オペレーションを使用して、既存のオブジェクトにタグを付けることができます。

オブジェクトのタグ付けとアクセスコントロールポリシー

アクセス許可ポリシー (バケットポリシーとユーザーポリシー) を使用して、アクセス許可に関連するオブジェクトのタグ付けを管理することもできます。ポリシーアクションについては次のトピックを参照してください。

オブジェクトのタグを使用して、アクセス許可を管理するためのきめ細かいアクセスコントロールが可能になります。オブジェクトタグに基づいて条件付きアクセス許可を与えることができます。Amazon S3 でサポートされる次の条件キーを使用して、オブジェクトタグに基づく条件付きアクセス許可を与えられます。

  • s3:ExistingObjectTag/<tag-key> – この条件キーを使用して、既存のオブジェクトタグに特定のタグキーと値があることを確認します。

     

    注記

    PUT Object オペレーションおよび DELETE Object オペレーションのアクセス許可を与える場合、この条件キーはサポートされません。つまり、既存のオブジェクトをその既存のタグに基づいて削除またはオーバーライドするアクセス許可を、ユーザーに許可または拒否するポリシーは作成できません。

     

  • s3:RequestObjectTagKeys – この条件キーを使用して、オブジェクトに指定できるタグキーを制限します。これが役立つのは、PutObjectTagging、PutObject および POST Object リクエストを使用してオブジェクトにタグを付けるときです。

     

  • s3:RequestObjectTag/<tag-key> – この条件キーを使用して、オブジェクトに指定できるタグキーと値を制限します。これが役立つのは、PutObjectTagging、PutObject、および POST Bucket リクエストを使用してオブジェクトにタグを付けるときです。

Amazon S3 サービス固有の条件キーの詳細なリストについては、「使用できる条件キー」を参照してください。次のアクセス許可ポリシーを使用して、オブジェクトのタグ付けによってきめ細かいアクセス許可管理がどのように実現するかを説明します。

例 1: 特定のタグが設定されたオブジェクトの読み取りのみをユーザーに許可する

次のアクセス許可ポリシーは、オブジェクトの読み取り専用権限をユーザーに許可しますが、条件によって、その読み取り権限は次のタグキーと値を持つオブジェクトのみに限定されます。

Copy
security : public

このポリシーではキーと値を指定するために Amazon S3 条件キー s3:ExistingObjectTag/<tag-key> が使用されていることに注意してください。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::examplebucket/*" ], "Condition": { "StringEquals": { "s3:ExistingObjectTag/security": "public" } } } ] }

例 2: 許可されるタグキーを制限してオブジェクトタグの追加をユーザーに許可する

次のアクセス許可ポリシーは、s3:PutObjectTagging アクションを実行する権限をユーザーに許可します (ユーザーが既存のオブジェクトにタグを付けることができます)。条件によって、ユーザーが使用できるタグキーが制限されます。この条件は s3:RequestObjectTagKeys 条件キーを使用して、一連のタグキーを指定します。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::examplebucket/*" ], "Condition": { "ForAllValues:StringLike": { "s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }

このポリシーにより、タグセットがリクエストに指定された場合に、指定のキーを含むことが保証されます。このポリシーによって認められているため、ユーザーは PutObjectTagging で空のタグセットを送信できます (リクエストに空のタグセットを指定すると、オブジェクトの既存のタグが削除されます)。ユーザーがタグセットを削除しないようにするには、ユーザーが少なくとも 1 つの値を指定するように別の条件を追加できます。条件の ForAnyValue によって、指定した値の少なくとも 1 つがリクエストに存在することが保証されます。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::examplebucket/*" ], "Condition": { "ForAllValues:StringLike": { "s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] }, "ForAnyValue:StringLike": { "s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }

詳細については、IAM ユーザーガイドの「複数のキー値をテストする条件を作成する (オペレーションの設定)」を参照してください。

例 3: 特定のタグキーと値を含むオブジェクトタグの追加をユーザーに許可する

次のユーザーポリシーは、s3:PutObjectTagging アクションを実行する権限をユーザーに許可します (ユーザーが既存のオブジェクトにタグを付けることができます)。条件により、値が X に設定された特定のタグ (Project) をユーザーが含めることが求められます。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::examplebucket/*" ], "Condition": { "StringEquals": { "s3:RequestObjectTag/Project": "X" } } } ] }

関連トピック

オブジェクトタグの管理