オブジェクトキー名の作成 - Amazon Simple Storage Service

オブジェクトキー名の作成

オブジェクトキー (またはキー名) によって、Amazon S3 バケット内のオブジェクトは一意に識別されます。オブジェクトメタデータは、名前と値のペアのセットです。オブジェクトメタデータの詳細については、オブジェクトメタデータの使用 を参照してください。

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

Amazon S3 のデータモデルはフラットな構造をしています。バケットを作成し、バケットにオブジェクトを保存します。サブバケットやサブフォルダの階層はありません。ただし、Amazon S3 コンソールで使用されているようなキー名のプレフィックスや区切り記号を使用して論理的な階層を暗示できます。Amazon S3 コンソールでは、フォルダの概念をサポートしています。Amazon S3 コンソールからメタデータを編集する方法の詳細については、「Amazon S3 コンソールでのオブジェクトメタデータの編集」を参照してください。

バケット (admin-created) に、次のようなオブジェクトキーを持つ 4 つのオブジェクトがあるとします。

Development/Projects.xls

Finance/statement1.pdf

Private/taxdocument.pdf

s3-dg.pdf

コンソールでは、キー名のプレフィックス (Development/Finance/Private/) および区切り記号 ("/") を使用して、フォルダ構造を表します。s3-dg.pdf キーにはプレフィックスがないため、そのオブジェクトはバケットのルートレベルに直接表示されます。Development/ フォルダを開くと、Projects.xlsx オブジェクトが表示されます。

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

  • Amazon S3 コンソールは、フォルダーのプレフィックスと区切り記号の値をキーとしてゼロバイトのオブジェクトを作成することにより、フォルダーオブジェクトの作成を実装します。これらのフォルダオブジェクトはコンソールに表示されません。それ以外の場合は、他のオブジェクトと同様に動作し、REST API、AWS CLI、および AWS SDK を使用して表示および操作できます。

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

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

セーフ文字

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

Alphanumeric characters
  • 0-9

  • a~z

  • A~Z

Special characters
  • スラッシュ (/)

  • 感嘆符 (!)

  • ハイフン (-)

  • 下線 (_)

  • ピリオド (.)

  • アスタリスク (*)

  • 一重引用符 (')

  • 丸かっこ開き (()

  • 丸かっこ閉じ ())

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

  • 4my-organization

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

  • videos/2014/birthday/video1.wmv

注記

Amazon S3 コンソールを使用してダウンロードしたキー名がピリオド「.」で終わるオブジェクトは、ダウンロードしたオブジェクトのキー名からピリオド「.」が削除されます。ダウンロードしたオブジェクトのキー名の末尾をピリオド「.」に保持したままダウンロードするには、AWS Command Line Interface (AWS CLI)、AWS SDK、または REST API を使用します。

また、以下のプレフィックスの制約についても注意してください。

  • プレフィックスが「./」のオブジェクトは、AWS Command Line Interface(AWS CLI)、AWS SDK、または REST API を使用してアップロードまたはダウンロードします。Amazon S3 コンソールを使用することはできません。

  • プレフィックスが「../」のオブジェクトは、AWS Command Line Interface (AWS CLI) または Amazon S3 コンソールを使用してアップロードすることはできません。

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

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

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

  • ドル記号 ("$")

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

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

  • 等号 ("=")

  • セミコロン (";")

  • コロン (":")

  • プラス記号 ("+")

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

  • カンマ (",")

  • 疑問符 ("?")

使用しない方がよい文字

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

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

  • 左中括弧 ("{")

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

  • カレット ("^")

  • 右中括弧 ("}")

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

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

  • 右角括弧 ("]")

  • 引用符

  • 大なり記号 (">")

  • 左角括弧 ("[")

  • チルダ ("~")

  • 小なり記号 ("<")

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

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

行末処理に関する XML 標準で規定されているとおり、すべての XML テキストは正規化され、1 つのキャリッジリターン (ASCII コード 13) と改行の直後のキャリッジリターン (ASCII コード 10) が単一の改行文字に置き換えられます。XML リクエストでオブジェクトキーを正しく解析するには、キャリッジリターンやその他の特殊文字を XML タグ内に挿入するときに、同等の XML エンティティコードに置き換える必要があります。以下では、当該特殊文字とそれに相当するエンティティコードのリストを示しています。

  • ' (&apos;)

  • ” (&quot;)

  • & (&amp;)

  • < (&lt;)

  • > (&gt;)

  • \r (&#13; または &#x0D;)

  • \n (&#10; または &#x0A;)

次の例では、キャリッジリターンの代わりに XML エンティティコードを使用する方法を示しています。この DeleteObjects リクエストにより、key パラメータ: /some/prefix/objectwith\rcarriagereturn (\r はキャリッジリターン) を持つオブジェクトが削除されます。

<Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Object> <Key>/some/prefix/objectwith&#13;carriagereturn</Key> </Object> </Delete>