プレフィックスを使用してオブジェクトを整理する
プレフィックスを使用して、Amazon S3 バケットに保存するデータを整理できます。プレフィックスは、オブジェクトキー名の先頭にある文字列です。プレフィックスには、オブジェクトキー名の最大長 (1,024 バイト) を条件として、任意の長さを指定できます。プレフィックスは、ディレクトリと同様の方法でデータを整理する方法と考えることができます。ただし、プレフィックスはディレクトリではありません。
プレフィックスで検索すると、指定されたプレフィックスで始まるキーだけに結果が限定されます。区切り記号を使用すると、リストオペレーションによって、共通のプレフィックスを共有するすべてのキーが単一の要約リスト結果にまとめられます。
プレフィックスと区切り記号のパラメータの目的は、キーを階層的に構成および参照できるようにすることです。そのためには、まずバケットで使用する区切り記号を選択します。スラッシュ (/) など、キーの名前には使われないような記号を使用します。別の文字を区切り文字として使用できます。スラッシュ (/) 文字に特徴はありませんが、非常に一般的なプレフィックスの区切り文字です。次に、階層に含まれるすべてのレベルを連結し、各レベルを区切り記号で区切ることで、キーの名前を構成します。
例えば、都市に関する情報を格納するとしたら、大陸、国、州または県の順に情報を整理するのが自然でしょう。通常、これらの名前には句読点が含まれないため、区切り記号としてスラッシュ (/) を使用できます。以下の例ではスラッシュ (/) 区切り記号を使用しています。
-
Europe/France/Nouvelle−Aquitaine/Bordeaux
-
North America/Canada/Quebec/Montreal
-
北米/米国/ワシントン州/ベルビュー
-
北米/米国/ワシントン州/シアトル
世界中の全都市のデータをこの方法で格納した場合、階層のないフラットなキーネームスペースは管理しにくくなります。リストオペレーションで Prefix
と Delimiter
を使用することで、データをリストするために作成した階層を利用できます。例えば、米国のすべての州をリストするには、Delimiter='/'
および Prefix='North America/USA/'
をセットします。データが存在するカナダのすべての州をリストするには、Delimiter='/'
および Prefix='North
America/Canada/'
をセットします。
区切り文字、プレフィックス、ネストフォルダの詳細については、「プレフィックスとネストされたフォルダの違い
プレフィックスと区切り記号を使用したオブジェクトのリスト化
区切り記号付きのリストリクエストを発行すると、1 レベルの階層だけを参照でき、それより深いレベルで入れ子にされている (場合によっては数百万もの) キーはスキップおよび集約されます。例えば、次のキーを持つバケット (amzn-s3-demo-bucket
) があるとします。
sample.jpg
photos/2006/January/sample.jpg
photos/2006/February/sample2.jpg
photos/2006/February/sample3.jpg
photos/2006/February/sample4.jpg
このサンプルバケットはルートレベルに sample.jpg
オブジェクトだけを持ちます。バケット内のルートレベルオブジェクトだけを一覧表示するには、バケットに対する GET リクエストをスラッシュ (/
) の区切り文字と共に送信します。Simple Storage Service (Amazon S3) からのレスポンスでは sample.jpg
オブジェクトキーが返されます。このキーには /
の区切り文字が含まれないためです。その他すべてのキーには区切り文字が含まれます。Amazon S3 によってこれらのキーがグループ化され、特定のプレフィックス値を持つ 1 つの CommonPrefixes
要素が返されます。この場合のプレフィックス値は photos/
であり、これはキーの先頭から、指定した区切り文字の最初の出現までのサブ文字列です。
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>
amzn-s3-demo-bucket
</Name> <Prefix></Prefix> <Marker></Marker> <MaxKeys>1000</MaxKeys> <Delimiter>/</Delimiter> <IsTruncated>false</IsTruncated> <Contents> <Key>sample.jpg</Key> <LastModified>2011-07-24T19:39:30.000Z</LastModified> <ETag>"d1a7fb5eab1c16cb4f7cf341cf188c3d"</ETag> <Size>6</Size> <Owner> <ID>75cc57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID> <DisplayName>displayname</DisplayName> </Owner> <StorageClass>STANDARD</StorageClass> </Contents> <CommonPrefixes> <Prefix>photos/</Prefix> </CommonPrefixes> </ListBucketResult>
プログラムによるオブジェクトキーのリスト化の詳細については、「プログラムによるオブジェクトキーのリスト化」を参照してください 。