大量のファイルを削除した後で、Amazon Simple Storage Service (Amazon S3) バケットに対してリストコマンドを実行しようとしています。しかし、リストコマンドは応答せず、何も出力されませんでした。
解決策
大量のファイルを削除した後に ls コマンドまたは list-objects コマンドが応答しなくなった場合は、次のトラブルシューティング手順に従ってください。
期限切れのオブジェクト削除マーカーを削除する
バージョニングが有効になっているバケットでは、バージョニング対象オブジェクトに対して削除操作を行う際にバージョン ID を指定しないと、削除マーカーが作成されてしまいます。ライフサイクル設定ルールでオブジェクトの以前のバージョンが期限切れになるように設定されている場合、バケットには期限切れオブジェクトに関連付けられた削除マーカーが含まれます。削除マーカーが数千ある場合、リスト操作がタイムアウトする可能性があります。そのため、リスト操作のパフォーマンスを向上させるには期限切れのオブジェクト削除マーカーをバケットから削除することがベストプラクティスです。
期限切れのオブジェクト削除マーカーを効率的にクリーンアップするには、次のようなライフサイクルルールを使用してください。
- Amazon S3 コンソールを開きます。
- バケットのリストから、期限切れのオブジェクト削除マーカーが含まれるパケットを選択します。
- **[管理]**タブを選択します。
- [ライフサイクルルールの追加] を選択し、ルール名を入力します。次に、[次へ] を選択します。
- [ストレージクラスへの移行] のセクションはスキップし、[次へ] を選択します。
- [失効の設定] で、[期限切れのオブジェクト削除マーカーをクリーンアップする] を選択します。次に、[次へ] を選択します。
- ライフサイクルルール設定を確認し、[保存] を選択します。
list-objects-v2 コマンドまたは最新バージョンの AWS CLI を試す
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行時にエラーが発生した場合は、「Troubleshoot AWS CLI errors」をご参照ください。また、AWS CLI の最新バージョンを使用しているかどうかをご確認ください。
list-objects-v2 コマンド (または ListObjectsV2 API 呼び出し) はリスト操作の更新版であり、パフォーマンスが向上しています。次のコマンド例では、awsexamplebucket 内のオブジェクトのリストをリクエストします。
aws s3api list-objects-v2 --bucket awsexamplebucket
**注:**後方互換性を保つため、Amazon S3 では ListObjects API 呼び出しを引き続きサポートしています。
Amazon S3 インベントリレポートを使用する
リスト操作を実行する代わりに、Amazon S3 インベントリレポートを使用してオブジェクトのリストを取得します。何億ものオブジェクトを含むバケットに対して複数のリスト操作を実行すると、そのプロセスは難しく、コストがかかる場合があります。
バケットまたはプレフィックスの Amazon S3 インベントリレポートを毎日または毎週取得できます。また、レポートに追加のオブジェクトメタデータを含めることもできます。また、インベントリレポートをバッチ操作の入力として渡したり、Amazon Athena を使用してレポートに対してクエリを実行したりすることができます。
関連情報
Amazon S3 の料金