プレフィックスを使用してオブジェクトを整理する - Amazon Simple Storage Service

プレフィックスを使用してオブジェクトを整理する

プレフィックスを使用して、Amazon S3 バケットに保存するデータを整理できます。プレフィックスは、オブジェクトキー名の先頭にある文字列です。プレフィックスには、オブジェクトキー名の最大長 (1,024 バイト) を条件として、任意の長さを指定できます。プレフィックスは、ディレクトリと同様の方法でデータを整理する方法と考えることができます。ただし、プレフィックスはディレクトリではありません。

プレフィックスで検索すると、指定されたプレフィックスで始まるキーだけに結果が限定されます。区切り記号を使用すると、リストオペレーションによって、共通のプレフィックスを共有するすべてのキーが単一の要約リスト結果にまとめられます。

プレフィックスと区切り記号のパラメータの目的は、キーを階層的に構成および参照できるようにすることです。そのためには、まずバケットで使用する区切り記号を選択します。スラッシュ (/) など、キーの名前には使われないような記号を使用します。別の文字を区切り文字として使用できます。スラッシュ (/) 文字に特徴はありませんが、非常に一般的なプレフィックスの区切り文字です。次に、階層に含まれるすべてのレベルを連結し、各レベルを区切り記号で区切ることで、キーの名前を構成します。

例えば、都市に関する情報を格納するとしたら、大陸、国、州または県の順に情報を整理するのが自然でしょう。通常、これらの名前には句読点が含まれないため、区切り記号としてスラッシュ (/) を使用できます。以下の例ではスラッシュ (/) 区切り記号を使用しています。

  • Europe/France/Nouvelle−Aquitaine/Bordeaux

  • North America/Canada/Quebec/Montreal

  • 北米/米国/ワシントン州/ベルビュー

  • 北米/米国/ワシントン州/シアトル

世界中の全都市のデータをこの方法で格納した場合、階層のないフラットなキーネームスペースは管理しにくくなります。リストオペレーションで PrefixDelimiter を使用することで、データをリストするために作成した階層を利用できます。例えば、米国のすべての州をリストするには、Delimiter='/' および Prefix='North America/USA/' をセットします。データが存在するカナダのすべての州をリストするには、Delimiter='/' および Prefix='North America/Canada/' をセットします。

プレフィックスと区切り記号を使用したオブジェクトのリスト化

区切り記号付きのリストリクエストを発行すると、1 レベルの階層だけを参照でき、それより深いレベルで入れ子にされている (場合によっては数百万もの) キーはスキップおよび集約されます。例えば、次のキーを持つバケット (DOC-EXAMPLE-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>DOC-EXAMPLE-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>&quot;d1a7fb5eab1c16cb4f7cf341cf188c3d&quot;</ETag> <Size>6</Size> <Owner> <ID>75cc57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID> <DisplayName>displayname</DisplayName> </Owner> <StorageClass>STANDARD</StorageClass> </Contents> <CommonPrefixes> <Prefix>photos/</Prefix> </CommonPrefixes> </ListBucketResult>

プログラムによるオブジェクトキーのリスト化の詳細については、「プログラムによるオブジェクトキーのリスト化」を参照してください 。