この機能を使用して、バケットにアップロードされたオブジェクトを表示することができます。選択したバケットで最大1,000オブジェクトが一度に表示することができます。次の4つのパラメータが拡張された機能をユーザーに提供します。
名前 | 機能 |
---|---|
Delimiter | オブジェクト名の文字をグループ化するために使用されます。指定したプレフィックスから最初の Delimiter までの名前を持つオブジェクトはすべて要素のグループ (CommonPrefixes) として機能します。 |
Marker | アルファベット順で marker 後の最初のエントリから結果を返すように設定します。 |
MaxKeys | 1 件のリクエストに対して返されるオブジェクトの最大数を制限します。指定されていない場合のデフォルト値は 100 です。MaxKeys の値は 1,000 以下にする必要があります。 |
Prefix | 指定されたプレフィックスが Keys に含まれているオブジェクトだけが返されることを示します。プレフィックスを使用するクエリから返されるキーにはそのプレフィックスも含まれることに注意してください。 |
フォルダーのシミュレーション
OSS サービスでは、フォルダーを使用しません。すべての要素はオブジェクトとして格納されます。シミュレーションフォルダーを作成することは、サイズが 0 のオブジェクトを作成することを意味します。このオブジェクトはアップロードおよびダウンロードできます。コンソールには、”/“ で終わるオブジェクトがフォルダーとして表示されるため、 この方法でシミュレーションフォルダーを作成できます。
Delimiter と Prefix を組み合わせて、フォルダー機能をシミュレートできます。Delimiter と Prefix の組み合わせは、次の目的で使用されます。
- フォルダーの名前を Prefix として設定すると、そのプレフィックスで始まるファイルが列挙されて、そのフォルダーのすべてのファイルとサブフォルダー (ディレクトリ) が再帰的に返されます。ファイル名は Contents として示されます。
- Delimiter を “/“ に設定すると、返される値にはフォルダー内のファイルが列挙され、サブフォルダー (ディレクトリ) は CommonPrefixes セクションで返されます。サブフォルダー内のファイルとフォルダーは再帰的に表示されません。
例:
この例では、oss-sample という OSS バケットに以下のオブジェクトが含まれています。
File D
Directory A/File C
Directory A/File D
Directory A/Directory B/File B
Directory A/Directory B/Directory C/File A
Directory A/Directory C/File A
Directory A/Directory D/File B
Directory B/File A
1. 第 1 レベルのディレクトリおよびファイルをリストします。
API リクエストの規則に基づいて、Prefix を "" に、Delimiter を "/" に設定します。
返される結果は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult>
<Name>oss-sample</Name>
<Prefix></Prefix>
<Marker></Marker>
<MaxKeys>1000</MaxKeys>
<Delimiter>/</Delimiter>
<IsTruncated>false</IsTruncated>
<Contents>
<Key>File D</Key>
<LastModified>2015-11-06T10:07:11.000Z</LastModified>
<ETag>"8110930DA5E04B1ED5D84D6CC4DC9080"</ETag>
<Type>Normal</Type>
<Size>3340</Size>
<StorageClass>Standard</StorageClass>
<Owner>
<ID>oss</ID>
<DisplayName>oss</DisplayName>
</Owner>
</Contents>
<CommonPrefixes>
<Prefix>Directory A/</Prefix>
</CommonPrefixes>
<CommonPrefixes>
<Prefix>Directory B/</Prefix>
</CommonPrefixes>
</ListBucketResult>
次のことがわかります。
Contents は第 1 レベルのファイル "File D" を返します。
CommonPrefixes は第 1 レベルのディレクトリ "Directory A/" と "Directory B/" を返しますが、その中のファイルは示されません。
2. Directory A 内の第 2 レベルのディレクトリとファイルをリストします。
API リクエストの規則に基づいて、Prefix を "Directory A" に、Delimiter を "/" に設定します。
返される結果は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult>
<Name>oss-sample</Name>
<Prefix>Directory A/</Prefix>
<Marker></Marker>
<MaxKeys>1000</MaxKeys>
<Delimiter>/</Delimiter>
<IsTruncated>false</IsTruncated>
<Contents>
<Key>Directory A/File C</Key>
<LastModified>2015-11-06T09:36:00.000Z</LastModified>
<ETag>"B026324C6904B2A9CB4B88D6D61C81D1"</ETag>
<Type>Normal</Type>
<Size>2</Size>
<StorageClass>Standard</StorageClass>
<Owner>
<ID>oss</ID>
<DisplayName>oss</DisplayName>
</Owner>
</Contents>
<Contents>
<Key>Directory A/File D</Key>
<LastModified>2015-11-06T09:36:00.000Z</LastModified>
<ETag>"B026324C6904B2A9CB4B88D6D61C81D1"</ETag>
<Type>Normal</Type>
<Size>2</Size>
<StorageClass>Standard</StorageClass>
<Owner>
<ID>oss</ID>
<DisplayName>oss</DisplayName>
</Owner>
</Contents>
<CommonPrefixes>
<Prefix>Directory A/Directory B/</Prefix>
</CommonPrefixes>
<CommonPrefixes>
<Prefix>Directory A/Directory C/</Prefix>
</CommonPrefixes>
<CommonPrefixes>
<Prefix>Directory A/Directory D/</Prefix>
</CommonPrefixes>
</ListBucketResult>
次のことがわかります。
Contents は、第 2 レベルのファイル "Directory A/File C" と "Directory A/File D" を返します。
CommonPrefixes は第 2 レベルのディレクトリ "Directory A/Directory B/"、"Directory A/Directory C/"、"Directory A/Directory D/" を返します。これらのディレクトリ内のファイルの名前は示されません。
関数を使用する際のリファレンス:
- API: Get Bucket
- SDK: Java SDK - List objects in a bucket