

# プログラムによるオブジェクトキーのリスト化
<a name="ListingKeysUsingAPIs"></a>

Amazon S3 では、キーはプレフィックス別に一覧表示できます。関連するキーの名前に共通のプレフィックスを選択し、階層を区切る特殊文字でこれらのキーをマークすることができます。その後、リストオペレーションを使用して、キーを階層的に選択および参照できます。これは、ファイルシステムにおいてディレクトリ内にファイルを格納するしくみに似ています。

Amazon S3 では、バケット内のキーを列挙するためのリストオペレーションを公開します。キーはバケット別またはプレフィックス別にリストされます。例えば、すべての英単語のキーを含む「`dictionary`」という名前のバケットがあるとします。そして、そのバケット内の文字「q」で始まるキーをすべてリストするための呼び出しを行うとします。リストの結果は常に UTF−8 バイナリ順で返されます。

 SOAP および REST のリストオペレーションではいずれも、条件に一致するキーの名前と、各キーによって識別されるオブジェクトに関する情報を含む XML ドキュメントが返されます。

**注記**  
 SOAP API for Amazon S3 は新規顧客には利用できず、2025 年 8 月 31 日にサポート終了 (EOL) となります。REST API か AWS SDK を使用することをお勧めします。

特殊な区切り記号で終わるプレフィックスを共有するキーのグループは、リストの目的で、その共通のプレフィックスによってロールアップできます。このような機能によりアプリケーションでは、キーを階層的に構成および参照できるようになります。ファイルシステムにおいてファイルをディレクトリに分けて整理するのに似ています。

例えば、英語以外の単語も含まれるように dictionary バケットを拡張するには、各単語にその言語と区切り記号のプレフィックスを付けることでキーを形成できます (「`French/logical`」など)。この命名スキームと階層リスト機能を使用すれば、フランス語の単語のリストだけを取得することもできます。また、対応している言語の最上位レベルのリストを参照することで、それより下の階層間に介在するすべてのキーを反復処理する必要もなくなります。リスト化における階層の役割については、[プレフィックスを使用してオブジェクトを整理する](using-prefixes.md) を参照してください。

**REST API**  
アプリケーションで必要な場合は、REST リクエストを直接送信できます。GET リクエストを送信して、バケット内の一部またはすべてのオブジェクトを返すことができます。または選択条件を使用して、バケット内のオブジェクトのサブセットを返すことができます。詳細については、*Amazon Simple Storage Service API リファレンス*の [GET バケット (オブジェクトのリスト化) バージョン 2](https://docs.aws.amazon.com/AmazonS3/latest/API/v2-RESTBucketGET.html) を参照してください。

**リスト実装の効率性**  
リスト化のパフォーマンスは、バケット内のキーの総数によって大きく影響されることはありません。`prefix`、`marker`、`maxkeys` または `delimiter` 引数の有無によって影響されることもありません。

**複数ページの結果に対する反復処理**  
バケットに入れることのできるキーの数は実質的に無制限であるため、リストのクエリによっては結果が膨大な量になる可能性があります。大規模な結果セットを管理するため、Amazon S3 API ではページ分割をサポートして結果セットを複数のレスポンスに分割します。キーリストのレスポンスごとに最大 1,000 個のキーを含むページと、レスポンスが切り捨てられているかどうかを示すインジケータが返されます。すべてのキーを受信するまで、一連のキーリストリクエストを送信します。AWSこのページ分割は、SDK ラッパーライブラリでも行うことができます。

## 例
<a name="ListingKeysUsingAPIs_examples"></a>

バケット内のすべてのオブジェクトを一覧表示するときは、`s3:ListBucket` 権限が必要であることに注意してください。

------
#### [ CLI ]

**list-objects**  
次の例は、`list-objects` コマンドを使用して、指定されたバケット内のすべてのオブジェクトの名前を表示します。  

```
aws s3api list-objects --bucket text-content --query 'Contents[].{Key: Key, Size: Size}'
```
この例では、`--query` 引数を使用して `list-objects` の出力を各オブジェクトのキー値とサイズでフィルタリングしています。  
オブジェクトの詳細については、[Amazon S3 オブジェクトの使用](uploading-downloading-objects.md) を参照してください。  
+  API の詳細については、「*AWS CLI コマンドリファレンス*」の「[ListObjects](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/list-objects.html)」を参照してください。

**ls**  
次の例では、`ls` コマンドを使用してバケット内のすべてのオブジェクトとプレフィックスを一覧表示します。  
この例のコマンドを使うには、**amzn-s3-demo-bucket** を自分のバケットの名前に置き換えます。  

```
$ aws s3 ls s3://amzn-s3-demo-bucket
```
+  高レベルコマンド `ls` の詳細については、「*AWS Command Line Interface ユーザーガイド*」の「[バケットとオブジェクトの一覧表示](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html#using-s3-commands-listing-buckets)」を参照してください。

------
#### [ PowerShell ]

**Tools for PowerShell V4**  
**例 1: このコマンドは、バケット「test-files」内のすべての項目に関する情報を取得します。**  

```
Get-S3Object -BucketName amzn-s3-demo-bucket
```
**例 2: このコマンドは、バケット「test-files」内の項目「sample.txt」に関する情報を取得します。**  

```
Get-S3Object -BucketName amzn-s3-demo-bucket -Key sample.txt
```
**例 3: このコマンドは、バケット「test-files」からプレフィックス「sample」を持つすべての項目に関する情報を取得します。**  

```
Get-S3Object -BucketName amzn-s3-demo-bucket -KeyPrefix sample
```
+  API の詳細については、「*AWS Tools for PowerShell Cmdlet Reference(V4)*」の「[ListObjects](https://docs.aws.amazon.com/powershell/v4/reference)」を参照してください。

**Tools for PowerShell V5**  
**例 1: このコマンドは、バケット「test-files」内のすべての項目に関する情報を取得します。**  

```
Get-S3Object -BucketName amzn-s3-demo-bucket
```
**例 2: このコマンドは、バケット「test-files」内の項目「sample.txt」に関する情報を取得します。**  

```
Get-S3Object -BucketName amzn-s3-demo-bucket -Key sample.txt
```
**例 3: このコマンドは、バケット「test-files」からプレフィックス「sample」を持つすべての項目に関する情報を取得します。**  

```
Get-S3Object -BucketName amzn-s3-demo-bucket -KeyPrefix sample
```
+  API の詳細については、「*AWS Tools for PowerShell Cmdlet Reference(V5)*」の「[ListObjects](https://docs.aws.amazon.com/powershell/v5/reference)」を参照してください。

------