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

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

プレフィックスを使用して、Amazon S3 バケットに保存するデータを整理できます。プレフィックスの値は、バケット内の類似オブジェクトをグループ化できるディレクトリ名に似ています。プログラムでオブジェクトをアップロードする場合は、プレフィックスを使用してデータを整理できます。

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

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

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

  • Europe/France/Nouvelle-Aquitaine/Bordeaux

  • North America/Canada/Quebec/Montreal

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

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

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

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

リストリクエストで区切り記号を使用すると、1 レベルの階層だけを参照でき、それより深いレベルで入れ子にされている (おそらく数百万もの) キーはスキップおよび集約されます。たとえば、以下のキーを持つバケット (ExampleBucket) があるとします。

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 リクエストを「/」の区切り文字と共に送信します。Amazon S3 からのレスポンスでは sample.jpg オブジェクトキーが返されます。このキーには「/」の区切り文字が含まれないためです。その他すべてのキーには区切り文字が含まれます。Amazon S3 によってこれらのキーがグループ化され、特定のプレフィックス値を持つ 1 つの CommonPrefixes 要素が返されます。この場合のプレフィックス値は photos/ であり、これはキーの先頭から、指定した区切り文字の最初の出現までのサブ文字列です。

<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>ExampleBucket</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>

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