Amazon Simple Storage Service
開発者ガイド (API バージョン 2006-03-01)

オブジェクトキーとメタデータ

Amazon S3 の各オブジェクトには、データ、キー、およびメタデータが含まれます。オブジェクトキー (またはキー名) によって、バケット内のオブジェクトは一意に識別されます。オブジェクトメタデータは名前と値のペアのセットです。オブジェクトメタデータは、オブジェクトをアップロードするときに設定できます。オブジェクトのアップロード後にはオブジェクトメタデータは変更できません。オブジェクトメタデータを変更する唯一の方法は、オブジェクトのコピーを作成し、メタデータを設定することです。

オブジェクトキー

オブジェクトを作成するときに、キー名を指定します。これにより、バケット内のオブジェクトは一意に識別されます。たとえば、Amazon S3 コンソール (「AWS マネジメントコンソール」を参照) では、バケットをハイライトすると、そのバケットに含まれるオブジェクトのリストが表示されます。表示される名前がオブジェクトキーです。キー名は一続きの Unicode 文字で、UTF-8 にエンコードすると最大で 1,024 バイト長になります。

Amazon S3 のデータモデルはフラットな構造です。バケットを作成し、そのバケットにオブジェクトが格納されます。サブバケットやサブフォルダの階層はありません。ただし、Amazon S3 コンソールで使用されているようなキー名のプレフィックスや区切り記号を使用して論理的な階層を暗示できます。Amazon S3 コンソールでは、フォルダの概念をサポートしています。バケット (admin-created) に、次のようなオブジェクトキーを持つ 4 つのオブジェクトがあるとします。

Development/Projects.xls

Finance/statement1.pdf

Private/taxdocument.pdf

s3-dg.pdf

コンソールでは、キー名のプレフィックス (Development/Finance/Private/) および区切り記号 ("/") を使用して、次のようにフォルダ構造を表します。


          Amazon S3 コンソールの Development、Finance、Private の各フォルダを示すスクリーンショット。

s3-dg.pdf キーにはプレフィックスがないため、そのオブジェクトはバケットのルートレベルに直接表示されます。Development/ フォルダを開くと、Projects.xlsx オブジェクトが表示されます。


          Development フォルダで Projects.xlsx ファイルが選択された Amazon S3 コンソールを示すスクリーンショット。

注記

Amazon S3 ではバケットとオブジェクトをサポートし、Amazon S3 では階層がありません。ただし、オブジェクトキー名のプレフィックスと区切り記号により、Amazon S3 コンソールや AWS SDK で階層を暗示し、フォルダの概念を導入できます。

オブジェクトキーの命名のガイドライン

オブジェクトキー名には UTF-8 文字を使用できます。ただし、キー名に特定の文字を使用すると、一部のアプリケーションやプロトコルで問題が発生することがあります。以下のガイドラインは、DNS、ウェブセーフ文字、XML パーサー、その他の API とのコンプライアンスを最大化するのに役立ちます。

セーフ文字

以下の文字セットは、一般的にキー名で使用しても安全です。

アルファベットの文字
  • 0-9

  • a~z

  • A~Z

特殊文字
  • !

  • _

  • .

  • *

  • '

  • (

  • )

有効なオブジェクトキー名の例を次に示します。

  • 4my-organization

  • my.great_photos-2014/jan/myvacation.jpg

  • videos/2014/birthday/video1.wmv

重要

オブジェクトキー名が単一のピリオド (.)、2 つのピリオド (.) で構成されている場合は、Amazon S3 コンソールを使用してオブジェクトをダウンロードすることはできません。キー名に「.」または「..」を含むオブジェクトをダウンロードするには、AWS CLI、AWS SDK、または REST API を使用する必要があります。

特殊な処理を必要とする可能性がある文字

キー名で以下の文字を使用すると、追加のコード処理が必要になる場合があり、16 進数として URL エンコードまたは参照することが必要になる可能性があります。これらの文字の一部は表示不可能な文字であり、ブラウザで処理されない場合があります。この場合も、特殊な処理が必要です。

  • アンパサンド ("&")

  • ドル記号 ("$")

  • 16 進数の 00 ~ 1F (10 進数の 0 ~ 31) の範囲および 7F (10 進数の 127) の ASCII 文字

  • アットマーク ("@")

  • 等号 ("=")

  • セミコロン (";")

  • コロン (":")

  • プラス記号 ("+")

  • スペース – いくつかの用途 (特に複数のスペース) では、スペースの重要なシーケンスが失われる可能性があります。

  • カンマ (",")

  • 疑問符 ("?")

使用しない方がよい文字

すべてのアプリケーションで一貫性を維持するには相当な量の特殊な処理が必要になるため、キー名には以下の文字を使用しないでください。

  • バックスラッシュ ("\")

  • 左中括弧 ("{")

  • 表示不可能な ASCII 文字 (10 進数の 128 ~ 255 の文字)

  • カレット ("^")

  • 右中括弧 ("}")

  • パーセント記号 ("%")

  • アクサングラーブ/バックティック ("`")

  • 右角括弧 ("]")

  • 引用符

  • 大なり記号 (">")

  • 左角括弧 ("[")

  • チルダ ("~")

  • 小なり記号 ("<")

  • シャープ記号 ("#")

  • 縦棒/パイプ ("|")

オブジェクトメタデータ

メタデータにはシステムメタデータとユーザー定義メタデータの 2 種類があります。

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

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

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

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

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

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

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

名前 説明 ユーザーが値を変更できるか
日付 現在の日付と時刻。 いいえ
Content-Length オブジェクトのサイズ (バイト単位)。 いいえ
Last-Modified

オブジェクト作成日または最終更新日のいずれか遅い方。

いいえ
Content-MD5 オブジェクトの base64 エンコードされた 128 ビット MD5 ダイジェスト。 いいえ
x-amz-server-side-encryption オブジェクトでサーバー側の暗号化が有効であるか、そして暗号化が AWS Key Management Service (KMS-AWS) または AWS で管理された暗号化 (SSE-S3) によるものかを示します。詳細については、「サーバー側の暗号化を使用したデータの保護」を参照してください。 はい
x-amz-version-id オブジェクトのバージョン。バケットのバージョニングを有効にすると、Amazon 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 x-amz-server-side-encryption が存在し、その値が aws:kms である場合、これはオブジェクトに使用された AWS Key Management Service (AWS KMS) マスター暗号化キーの ID を示します。 はい
x-amz-server-side-encryption-customer-algorithm お客様が用意した暗号化キーを使用したサーバー側の暗号化 (SSE-C) が有効であるかどうかを示します。詳細については、「お客様が用意した暗号化キーによるサーバー側の暗号化 (SSE-C) を使用したデータの保護」を参照してください。 はい

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

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

注記

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

REST API を介してメタデータを取得するとき、同じ名前を持つヘッダー (大文字と小文字は区別されません) は Amazon S3 によってコンマ区切りリストとして結合されます。出力不可能な文字が含まれているメタデータは返されません。その代わりに、x-amz-missing-meta ヘッダーが、出力不可能なメタデータエントリの数を示す値と共に返されます。

ユーザー定義メタデータはキーと値のペアのセットです。Amazon S3 はユーザー定義メタデータキーを小文字で保存します。キーと値の各ペアは、REST 使用時には US-ASCII に、SOAP の使用時または POST を介したブラウザベースでのアップロード時には UTF-8 に、それぞれ準拠する必要があります。

注記

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

アップロード後のオブジェクトにメタデータを追加する方法については、Amazon Simple Storage Service コンソールユーザーガイドにある「S3 オブジェクトにメタデータを追加する方法」を参照してください。