オブジェクトメタデータの使用 - Amazon Simple Storage Service

オブジェクトメタデータの使用

Amazon S3 では、オブジェクトをアップロードする時にオブジェクトメタデータを設定できます。オブジェクトメタデータは、名前と値のペアのセットです。オブジェクトのアップロード後にはオブジェクトメタデータは変更できません。オブジェクトメタデータを変更する唯一の方法は、オブジェクトのコピーを作成し、メタデータを設定することです。

オブジェクトを作成するときに、キー名も指定します。これにより、バケット内のオブジェクトは一意に識別されます。オブジェクトキー (またはキー名) によって、Amazon S3 バケット内のオブジェクトは一意に識別されます。詳細については、オブジェクトキー名の作成 を参照してください。

Amazon S3 には、システム定義メタデータとユーザー定義メタデータの 2 種類のメタデータがあります。以下のセクションでは、システム定義メタデータとユーザー定義のメタデータについて詳しく説明します。Amazon S3 コンソールを使用したメタデータの編集の詳細については、Amazon S3 コンソールでのオブジェクトメタデータの編集 を参照してください。

システムで定義されたオブジェクトメタデータ

Amazon S3 では、バケットに格納されるオブジェクトごとに、一連のシステムメタデータが維持されます。Amazon S3 はこのシステムメタデータを必要に応じて処理します。例えば、Amazon S3 ではオブジェクトの作成日とサイズに関するメタデータが維持され、オブジェクト管理の目的でこの情報が使用されます。

システムメタデータには 2 つのカテゴリがあります。

  • システム制御 – オブジェクトの作成日などのメタデータはシステムによって制御され、Amazon S3 だけがその値を変更できることを意味します。

  • ユーザー制御 – 他のシステムメタデータ (オブジェクトに設定済みのストレージクラスや、オブジェクトでサーバー側の暗号化が有効になっているかどうかなど) は、ユーザーが値を制御するシステムメタデータの例です。バケットをウェブサイトとして設定している場合、ページリクエストを別のページや外部 URL にリダイレクトしたいことがあります。この場合、ウェブページはバケット内のオブジェクトです。Amazon S3 は、ページリダイレクト値をシステムメタデータとして保存し、ユーザーがその値を制御します。

    オブジェクトを作成するときに、このようなシステムメタデータ項目の値を設定したり、必要に応じてその値を更新したりできます。ストレージクラスの詳細については、「Amazon S3 ストレージクラスを使用する」を参照してください。

    Amazon S3 は Amazon S3 オブジェクトを暗号化する AWS KMS キーを使用します。AWS KMS はオブジェクトデータのみを暗号化します。チェックサムは、指定されたアルゴリズムとともに、オブジェクトのメタデータの一部として保存されます。サーバー側でオブジェクトに対する暗号化が要求された場合、チェックサムは暗号化された形式で保存されます。サーバーサイドの暗号化の詳細については、「暗号化によるデータの保護」を参照してください。

注記

PUT リクエストヘッダーのサイズは 8 KB に制限されています。PUT リクエストヘッダー内のシステム定義メタデータのサイズは 2 KB に制限されています。システム定義メタデータのサイズは、キーと値の各ペアを US−ASCII にエンコードしたバイト数の合計に基づいて測定されます。

次の表は、システム定義のメタデータのリストとユーザーがそれを更新できるかどうかをまとめたものです。

名前 説明 ユーザーが値を変更することはできますか?
Date 現在の日付と時刻。 なし
Cache-Control キャッシュポリシーを指定するために使用される一般的なヘッダーフィールド。 あり
Content-Disposition オブジェクトのプレゼンテーション情報。 あり
Content-Length オブジェクトのサイズ (バイト単位)。 なし
Content-Type オブジェクトのタイプ。 あり
Last-Modified

オブジェクト作成日または最終更新日のいずれか遅い方。マルチパートアップロードの場合、オブジェクトの作成日はマルチパートアップロードの開始日です。

なし
ETag オブジェクトのエンティティタグ (ETag) は、そのオブジェクトの特定のバージョンを表します。マルチパートアップロードとしてアップロードされず、暗号化されていない、または Simple Storage Service (Amazon S3) 管理キー (SSE-S3) を使用したサーバー側の暗号化によって暗号化されているオブジェクトの場合、ETag はデータの MD5 ダイジェストです。 なし
x-amz-server-side-encryption オブジェクトでサーバー側の暗号化が有効であるか、そして暗号化が AWS Key Management Service (AWS KMS) または Amazon S3 で管理された暗号化 (SSE−S3) によるものかを示すヘッダー。詳細については、「サーバー側の暗号化によるデータの保護」を参照してください。 あり
x-amz-checksum-crc32, x-amz-checksum-crc32c, x-amz-checksum-sha1, x-amz-checksum-sha256 オブジェクトのチェックサムまたはダイジェストが含まれるヘッダー。Amazon S3 に使用するように指示したチェックサムアルゴリズムに応じて、これらのヘッダーの最大 1 つが一度に設定されます。チェックサムアルゴリズムの選択の詳細については、「オブジェクトの整合性をチェックする」を参照してください。 なし
x-amz-version-id オブジェクトのバージョン。バケットのバージョニングを有効にすると、Amazon S3 ではバケットに追加されたオブジェクトにバージョン ID が割り当てられます。詳細については、「S3 バケットでのバージョニングの使用」を参照してください。 なし
x-amz-delete-marker オブジェクトが削除マーカーであるかどうかを示すブール値マーカー。このマーカーは、バージョニングが有効になっているバケットでのみ使用されます。 なし
x-amz-storage-class オブジェクトの保存に使われるストレージクラス。詳細については、「Amazon S3 ストレージクラスを使用する」を参照してください。 あり
x-amz-website-redirect-location 関連付けられたオブジェクトのリクエストを同じバケット内の別のオブジェクトまたは外部 URL にリダイレクトするヘッダー。詳細については、「(オプション) ウェブページリダイレクトの設定」を参照してください。 あり
x-amz-server-side-encryption-aws-kms-key-id オブジェクトの暗号化に使用された AWS KMS 対称暗号化 KMS キーの ID を示すヘッダー。このヘッダーは、x-amz-server-side-encryption ヘッダーが存在し、値が aws:kms である場合にのみ使用されます。 あり
x-amz-server-side-encryption-customer-algorithm お客様が用意した暗号化キーを使用したサーバー側の暗号化 (SSE−C) が有効であるかどうかを示すヘッダー。詳細については、「お客様が指定したキーによるサーバー側の暗号化 (SSE−C) の使用」を参照してください。 あり
x-amz-tagging オブジェクトのタグセット。タグセットは URL クエリパラメータとしてエンコードする必要があります。 あり

ユーザー定義のオブジェクトメタデータ

オブジェクトをアップロードするときに、そのオブジェクトにメタデータを割り当てることもできます。このオプション情報は、オブジェクトを作成するための PUT リクエストまたは POST リクエストを送信するときに、名前と値 (キーと値) のペアとして指定します。REST API を使用してオブジェクトをアップロードするときは、オプションのユーザー定義メタデータ名を「x-amz-meta-」で始め、他の HTTP ヘッダーと区別する必要があります。REST API を使用してオブジェクトを取得するときは、このプレフィックスが返されます。SOAP API を使用してオブジェクトをアップロードする場合、このプレフィックスは不要です。SOAP API を使用してオブジェクトを取得するときは、オブジェクトのアップロードに使用した API にかかわらず、プレフィックスは削除されます。

注記

SOAP のサポートは HTTP 経由では廃止されましたが、HTTPS 経由では引き続き利用可能です。Amazon S3 の新機能は SOAP でサポートされていません。SOAP の代わりに、REST API か AWS SDK を使用することをお勧めします。

REST API を介してメタデータを取得するとき、同じ名前を持つヘッダー (大文字と小文字は区別されません) は Amazon S3 によってカンマ区切りリストに結合されます。出力不可能な文字が含まれているメタデータは返されません。その代わりに、x-amz-missing-meta ヘッダーが、出力不可能なメタデータエントリの数を示す値と共に返されます。HeadObject アクションは、オブジェクト自体を返さずに、オブジェクトからメタデータを取得します。このオペレーションは、オブジェクトのメタデータのみに関心がある場合に役立ちます。HEAD を使用するには、オブジェクトへの READ アクセス権が必要です。詳細については、Amazon Simple Storage Service API リファレンスの「HeadObject」を参照してください。

ユーザー定義メタデータはキーと値のペアのセットです。Amazon S3 はユーザー定義メタデータキーを小文字で保存します。

Amazon S3 では、任意の Unicode 文字をメタデータ値で使用できます。

これらのメタデータ値の表示に伴う問題を回避するために、REST を使用する場合は US−ASCII 文字を使用してください。SOAP またはブラウザベースのアップロードを POST 経由で使用する場合は UTF−8 を使用してください。

US−ASCII 以外の文字をメタデータ値で使用すると、指定した Unicode 文字列に US−ASCII 以外の文字が含まれていないかどうか調べられます。そのようなヘッダーの値は、保存される前に RFC 2047 に従って文字デコードされます。さらに、RFC 2047 に従ってエンコードされ、メールセーフになってから返されます。文字列に US−ASCII 文字のみが含まれている場合は、そのまま表示されます。

次に例を示します。

PUT /Key HTTP/1.1 Host: amzn-s3-demo-bucket1.s3.amazonaws.com x-amz-meta-nonascii: ÄMÄZÕÑ S3 HEAD /Key HTTP/1.1 Host: amzn-s3-demo-bucket1.s3.amazonaws.com x-amz-meta-nonascii: =?UTF-8?B?w4PChE3Dg8KEWsODwpXDg8KRIFMz?= PUT /Key HTTP/1.1 Host: amzn-s3-demo-bucket1.s3.amazonaws.com x-amz-meta-ascii: AMAZONS3 HEAD /Key HTTP/1.1 Host: amzn-s3-demo-bucket1.s3.amazonaws.com x-amz-meta-ascii: AMAZONS3
注記

PUT リクエストヘッダーのサイズは 8 KB に制限されています。PUT リクエストヘッダー内のユーザー定義メタデータのサイズは 2 KB に制限されています。ユーザー定義メタデータのサイズは、キーと値それぞれの UTF−8 エンコーディングの合計バイト数を使用して測定されます。

アップロード済みオブジェクトのメタデータの変更 (オブジェクトのコピーを作成し、それを変更して古いオブジェクトと置き換える場合、または新しいバージョンを作成する場合) については、Amazon S3 コンソールでのオブジェクトメタデータの編集 を参照してください。