ファイルプロパティをリストする
すべてのファイルをダウンロードすることなく、ファイルをリストできます。これは、Amplify Library for Storageのlist APIを使用して実行できます。
ファイルをリストする
次の例は、public/photos/パス内のすべてのオブジェクトをリストします:
StoragePagedListOptions options = StoragePagedListOptions.builder() .setPageSize(1000) .build();
Amplify.Storage.list( StoragePath.fromString("public/photos/"), options, result -> { for (StorageItem item : result.getItems()) { Log.i("MyAmplifyApp", "Item: " + item.getPath()); } Log.i("MyAmplifyApp", "Next Token: " + result.getNextToken()); }, error -> Log.e("MyAmplifyApp", "List failure", error););val options = StoragePagedListOptions.builder() .setPageSize(1000) .build()
Amplify.Storage.list(StoragePath.fromString("public/photos/"), options, { result -> result.items.forEach { item -> Log.i("MyAmplifyApp", "Item: ${item.path}") } Log.i("MyAmplifyApp", "Next Token: ${result.nextToken}") }, { Log.e("MyAmplifyApp", "List failure", it) })val options = StoragePagedListOptions.builder() .setPageSize(1000) .build()
try { val result = Amplify.Storage.list(StoragePath.fromString("public/photos/"), options) result.items.forEach { Log.i("MyAmplifyApp", "Item: $it") } Log.i("MyAmplifyApp", "next token: ${result.nextToken}")} catch (error: StorageException) { Log.e("MyAmplifyApp", "List failure", error)}StoragePagedListOptions options = StoragePagedListOptions.builder() .setPageSize(1000) .build();
RxAmplify.Storage.list(StoragePath.fromString("public/photos/"), options) .subscribe( result -> { for (StorageItem item : result.getItems()) { Log.i("MyAmplifyApp", "Item: " + item.getPath()); } Log.i("MyAmplifyApp", "Next Token: " + result.getNextToken()); }, error -> Log.e("MyAmplifyApp", "List failure", error); );指定されたバケットからファイルをリストする
bucketオプションを指定することで、特定のバケットに対してリスト操作を実行することもできます。Amplify Backendで割り当てられたターゲットバケット名を表す文字列を渡すことができます。
StorageBucket secondBucket = StorageBucket.fromOutputs("secondBucket");StoragePagedListOptions options = StoragePagedListOptions.builder() .setPageSize(1000) .bucket(secondBucket) .build();
Amplify.Storage.list( StoragePath.fromString("public/photos/"), options, result -> { for (StorageItem item : result.getItems()) { Log.i("MyAmplifyApp", "Item: " + item.getPath()); } Log.i("MyAmplifyApp", "Next Token: " + result.getNextToken()); }, error -> Log.e("MyAmplifyApp", "List failure", error););val secondBucket = StorageBucket.fromOutputs("secondBucket")val options = StoragePagedListOptions.builder() .setPageSize(1000) .bucket(secondBucket) .build()
Amplify.Storage.list(StoragePath.fromString("public/photos/"), options, { result -> result.items.forEach { item -> Log.i("MyAmplifyApp", "Item: ${item.path}") } Log.i("MyAmplifyApp", "Next Token: ${result.nextToken}") }, { Log.e("MyAmplifyApp", "List failure", it) })val secondBucket = StorageBucket.fromOutputs("secondBucket")val options = StoragePagedListOptions.builder() .setPageSize(1000) .bucket(secondBucket) .build()
try { val result = Amplify.Storage.list(StoragePath.fromString("public/photos/"), options) result.items.forEach { Log.i("MyAmplifyApp", "Item: $it") } Log.i("MyAmplifyApp", "next token: ${result.nextToken}")} catch (error: StorageException) { Log.e("MyAmplifyApp", "List failure", error)}StorageBucket secondBucket = StorageBucket.fromOutputs("secondBucket");StoragePagedListOptions options = StoragePagedListOptions.builder() .setPageSize(1000) .bucket(secondBucket) .build();
RxAmplify.Storage.list(StoragePath.fromString("public/photos/"), options) .subscribe( result -> { for (StorageItem item : result.getItems()) { Log.i("MyAmplifyApp", "Item: " + item.getPath()); } Log.i("MyAmplifyApp", "Next Token: " + result.getNextToken()); }, error -> Log.e("MyAmplifyApp", "List failure", error); );または、コンソールからバケット名とリージョンを指定することで、オブジェクトを渡すこともできます。
BucketInfo bucketInfo = new BucketInfo("second-bucket-name-from-console", "us-east-2");StorageBucket secondBucket = StorageBucket.fromBucketInfo(bucketInfo);StoragePagedListOptions options = StoragePagedListOptions.builder() .setPageSize(1000) .bucket(secondBucket) .build();
Amplify.Storage.list( StoragePath.fromString("public/photos/"), options, result -> { for (StorageItem item : result.getItems()) { Log.i("MyAmplifyApp", "Item: " + item.getPath()); } Log.i("MyAmplifyApp", "Next Token: " + result.getNextToken()); }, error -> Log.e("MyAmplifyApp", "List failure", error););val bucketInfo = BucketInfo("second-bucket-name-from-console", "us-east-2")val secondBucket = StorageBucket.fromBucketInfo(bucketInfo)val options = StoragePagedListOptions.builder() .setPageSize(1000) .bucket(secondBucket) .build()
Amplify.Storage.list(StoragePath.fromString("public/photos/"), options, { result -> result.items.forEach { item -> Log.i("MyAmplifyApp", "Item: ${item.path}") } Log.i("MyAmplifyApp", "Next Token: ${result.nextToken}") }, { Log.e("MyAmplifyApp", "List failure", it) })val bucketInfo = BucketInfo("second-bucket-name-from-console", "us-east-2")val secondBucket = StorageBucket.fromBucketInfo(bucketInfo)val options = StoragePagedListOptions.builder() .setPageSize(1000) .bucket(secondBucket) .build()
try { val result = Amplify.Storage.list(StoragePath.fromString("public/photos/"), options) result.items.forEach { Log.i("MyAmplifyApp", "Item: $it") } Log.i("MyAmplifyApp", "next token: ${result.nextToken}")} catch (error: StorageException) { Log.e("MyAmplifyApp", "List failure", error)}BucketInfo bucketInfo = new BucketInfo("second-bucket-name-from-console", "us-east-2");StorageBucket secondBucket = StorageBucket.fromBucketInfo(bucketInfo);StoragePagedListOptions options = StoragePagedListOptions.builder() .setPageSize(1000) .bucket(secondBucket) .build();
RxAmplify.Storage.list(StoragePath.fromString("public/photos/"), options) .subscribe( result -> { for (StorageItem item : result.getItems()) { Log.i("MyAmplifyApp", "Item: " + item.getPath()); } Log.i("MyAmplifyApp", "Next Token: " + result.getNextToken()); }, error -> Log.e("MyAmplifyApp", "List failure", error); );ネストされたサブパスから結果を除外する
デフォルトでは、list APIは、ネストされたサブパス内のオブジェクトを含む、指定されたパス内に含まれるすべてのオブジェクトを返します。
例えば、前のpublic/photos/パスには、これらのオブジェクトが含まれます:
Path: public/photos/photo1.jpgPath: public/photos/vacation/photo1.jpgPath: public/photos/thumbnails/photo1.jpgvacationおよびthumbnailsサブパス内のオブジェクトを除外するには、subpathStrategyオプションをSubpathStrategy.Exclude()に設定します:
StoragePagedListOptions options = StoragePagedListOptions.builder() .setPageSize(1000) .setSubpathStrategy(SubpathStrategy.Exclude()) .build();
Amplify.Storage.list( StoragePath.fromString("public/photos/"), options, result -> { for (StorageItem item : result.getItems()) { Log.i("MyAmplifyApp", "Item: " + item.getPath()); } Log.i("MyAmplifyApp", "Next Token: " + result.getNextToken()); }, error -> Log.e("MyAmplifyApp", "List failure", error););val options = StoragePagedListOptions.builder() .setPageSize(1000) .setSubpathStrategy(SubpathStrategy.Exclude()) .build()
Amplify.Storage.list(StoragePath.fromString("public/photos/"), options, { result -> result.items.forEach { item -> Log.i("MyAmplifyApp", "Item: ${item.path}") } Log.i("MyAmplifyApp", "Next Token: ${result.nextToken}") }, { Log.e("MyAmplifyApp", "List failure", it) })val options = StoragePagedListOptions.builder() .setPageSize(1000) .setSubpathStrategy(SubpathStrategy.Exclude()) .build()
try { val result = Amplify.Storage.list(StoragePath.fromString("public/photos/"), options) result.items.forEach { Log.i("MyAmplifyApp", "Item: $it") } Log.i("MyAmplifyApp", "next token: ${result.nextToken}")} catch (error: StorageException) { Log.e("MyAmplifyApp", "List failure", error)}StoragePagedListOptions options = StoragePagedListOptions.builder() .setPageSize(1000) .setSubpathStrategy(SubpathStrategy.Exclude()) .build();
RxAmplify.Storage.list(StoragePath.fromString("public/photos/"), options) .subscribe( result -> { for (StorageItem item : result.getItems()) { Log.i("MyAmplifyApp", "Item: " + item.getPath()); } Log.i("MyAmplifyApp", "Next Token: " + result.getNextToken()); }, error -> Log.e("MyAmplifyApp", "List failure", error); );レスポンスにはpublic/photos/パス内のオブジェクトのみが含まれ、除外されたサブパスのリストも提供します:
Path: public/photos/photo01.jpgSubpath: public/photos/vacation/Subpath: public/photos/thumbnails/デフォルトの区切り文字は"/"ですが、カスタム区切り文字を指定して変更できます:
StoragePagedListOptions options = StoragePagedListOptions.builder() .setPageSize(1000) .setSubpathStrategy(SubpathStrategy.Exclude("-")) .build();
Amplify.Storage.list( StoragePath.fromString("public/photos/"), options, result -> { for (StorageItem item : result.getItems()) { Log.i("MyAmplifyApp", "Item: " + item.getPath()); } Log.i("MyAmplifyApp", "Next Token: " + result.getNextToken()); }, error -> Log.e("MyAmplifyApp", "List failure", error););val options = StoragePagedListOptions.builder() .setPageSize(1000) .setSubpathStrategy(SubpathStrategy.Exclude("-")) .build()
Amplify.Storage.list(StoragePath.fromString("public/photos/"), options, { result -> result.items.forEach { item -> Log.i("MyAmplifyApp", "Item: ${item.path}") } Log.i("MyAmplifyApp", "Next Token: ${result.nextToken}") }, { Log.e("MyAmplifyApp", "List failure", it) })val options = StoragePagedListOptions.builder() .setPageSize(1000) .setSubpathStrategy(SubpathStrategy.Exclude("-")) .build()
try { val result = Amplify.Storage.list(StoragePath.fromString("public/photos/"), options) result.items.forEach { Log.i("MyAmplifyApp", "Item: $it") } Log.i("MyAmplifyApp", "next token: ${result.nextToken}")} catch (error: StorageException) { Log.e("MyAmplifyApp", "List failure", error)}StoragePagedListOptions options = StoragePagedListOptions.builder() .setPageSize(1000) .setSubpathStrategy(SubpathStrategy.Exclude("-")) .build();
RxAmplify.Storage.list(StoragePath.fromString("public/photos/"), options) .subscribe( result -> { for (StorageItem item : result.getItems()) { Log.i("MyAmplifyApp", "Item: " + item.getPath()); } Log.i("MyAmplifyApp", "Next Token: " + result.getNextToken()); }, error -> Log.e("MyAmplifyApp", "List failure", error); );レスポンスには、public/photos/パス内のオブジェクトのみが含まれ、区切り文字-でグループ化されません。
Path: public/photos/2023/photos01.jpgPath: public/photos/2024/photos02.jpgSubpath: public/photos/202-すべてのlistオプション
| オプション | 型 | 説明 |
|---|---|---|
| subpathStrategy | SubpathStrategy | サブパスからコンテンツをリストするときに使用する戦略。 |
| pageSize | int | サーバーからファイルリストを取得するときに取得するエントリ数の制限を示す1~1,000の間の数。 |
| bucket | StorageBucket | オブジェクトが保存されているバケット。 |
| nextToken | String | リストを再開するページオフセットを示す文字列。 |
pageSizeが利用可能な全ファイルサイズより低く設定されている場合、単一のlist呼び出しはすべてのファイルのサブセットのみを返します。複数の呼び出しですべてのファイルをリストするには、ユーザーは前のレスポンスからnextToken値を使用できます。