オブジェクトキー (またはキー名) によって、Amazon S3 バケット内のオブジェクトは一意に識別されます。オブジェクトの作成時にキー名を指定できます。例えば、Amazon S3 コンソール
オブジェクトキー名は一連の Unicode 文字で、UTF-8 にエンコードすると最大で 1,024 バイト長、または 1,204 ラテン文字になります。ロケールによっては、1 文字が 2 バイトに等しくなる場合があります。オブジェクトに名前を付けるときは、次の点に注意してください。
-
オブジェクトキー名では大文字と小文字が区別されます。
-
オブジェクトキー名には、プレフィックス (コンソールではフォルダと呼ばれます) が含まれます。例えば、
Development/Projects.xls
はDevelopment
プレフィックス (またはフォルダ) 内にあるProjects.xls
オブジェクトのフルオブジェクトキー名です。プレフィックス、区切り記号 (/
)、およびオブジェクトの名前は、オブジェクトキー名の 1,024 バイトの制限に含まれます。プレフィックスとフォルダの詳細については、「オブジェクトキー名の選択」を参照してください。 -
特定の文字をオブジェクトキー名で使用する際には、特別な処理が必要になる場合があります。詳細については、「オブジェクトキーの命名のガイドライン」を参照してください。
注記
値 "soap"
を持つオブジェクトキー名は、仮想ホスト形式のリクエストではサポートされていません。"soap"
が使用されるオブジェクトキー名値の場合、代わりにパス形式の URL を使用する必要があります。
オブジェクトキー名の選択
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 |
|
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、または Amazon S3 REST API を使用する必要があります。
また、以下のプレフィックスの制約についても注意してください。
-
プレフィックスが
./
のオブジェクトは、AWS CLI、AWS SDK、または REST API を使用してアップロードまたはダウンロードします。Amazon S3 コンソールを使用してこれらのオブジェクトをアップロードすることはできません。 -
相対パス要素を含むオブジェクトキー (例:
../
) は、左から右に解析したときに、相対パスセグメントの累積数が、検出された非相対パス要素の数を超えない場合に有効です。このルールは、Amazon S3 コンソール、Amazon S3 REST API、AWS CLI、および AWS SDK を使用して行われたすべてのリクエストに適用されます。例:
videos/2014/../../video1.wmv
は有効です。videos/../../video1.wmv
は無効です。videos/../../2014/video1.wmv
は無効です。
特殊な処理を必要とする可能性がある文字
キー名で以下の文字を使用すると、追加のコード処理が必要になる場合があり、ほとんどの場合、16 進数として URL エンコードまたは参照することが必要になります。これらの文字の一部は表示不可能な文字であり、ブラウザで処理されない場合があります。この場合も、特殊な処理が必要です。
-
アンパサンド (
&
) -
ドル記号 (
$
) -
16 進数の 00~1F (10 進数の 0~31) の範囲および 7F (10 進数の 127) の ASCII 文字
-
アットマーク (
@
) -
等号 (
=
) -
セミコロン (
;
) -
スラッシュ (
/
) -
コロン (
:
) -
プラス記号 (
+
) -
スペース – 場合によっては、大幅に連続しているスペースが失われる可能性があります (特に複数のスペース)。
-
カンマ (
,
) -
疑問符 (
?
)
使用しない方がよい文字
すべてのアプリケーションで一貫性を維持するには相当な量の特殊な処理が必要になるため、キー名には以下の文字を使用しないことをお勧めします。
-
バックスラッシュ (
\
) -
左中括弧 (
{
) -
表示不可能な ASCII 文字 (10 進数の 128 ~ 255 の文字)
-
キャレットまたはサーカムフレックス (
^
) -
右中括弧 (
}
) -
パーセント記号 (
%
) -
重アクセントまたはバックティック (
`
) -
右角括弧 (
]
) -
引用符 (
"
) -
大なり記号 (
>
) -
左角括弧 (
[
) -
チルダ (
~
) -
小なり記号 (
<
) -
シャープ記号 (
#
) -
縦棒またはパイプ (
|
)
XML 関連のオブジェクトキーの制約
行末処理に関する XML 標準
以下では、当該特殊文字とそれに相当する XML エンティティコードのリストを示しています。
アポストロフィ (
'
) は'
に置き換える必要があります引用符 (
"
) は"
に置き換える必要がありますアンパサンド (
&
) は&
に置き換える必要があります小なり記号 (
<
) は<
に置き換える必要があります大なり記号 (>
>
) は>
に置き換える必要がありますキャリッジリターン (
\r
) は
または
に置き換える必要があります改行 (
\n
) は
または

に置き換える必要があります
次の例では、キャリッジリターンの代わりに XML エンティティコードを使用する方法を示しています。この DeleteObjects
リクエストにより、key
パラメータ /some/prefix/objectwith\rcarriagereturn
(\r
はキャリッジリターン) を持つオブジェクトが削除されます。
<Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Object>
<Key>/some/prefix/objectwith carriagereturn</Key>
</Object>
</Delete>