AWS S3 ストレージバケットまたはディレクトリのすべてのフォルダーのリストを抽出するにはどうすればよいですか?

AWS S3 ストレージバケットまたはディレクトリのすべてのフォルダーのリストを抽出するにはどうすればよいですか?

Amazon は、S3 バケットから 500 MB を超えるファイルを含むすべてのフォルダーのリストを簡単に抽出する方法を提供していますか? また、範囲を '/files/ftp_upload/' ディレクトリに制限したいのですが、これはコストなどを計算できるようにするためです。

私はこれを試したが、あまり役に立たなかった

aws s3 ls s3://YOUR_BUCKET/YOUR_FOLDER/ --recursive --human-readable --summarize

ここでの最善のアプローチは何ですか?

答え1

S3 には「フォルダ」という概念がないため、コンソールでは、オブジェクト キーをスラッシュ (「/」) で分割して、コンソールにフォルダのようなデータのみが表示されます。そのため、「フォルダ」ごとにデータを要約するには、各オブジェクトのキーを解析する必要があります。

キープレフィックスに一致するオブジェクトのすべてのデータを取得し、ロジックと計算を実行して合計することもできますが、これは大変な作業です。

リアルタイムのデータが必要ない場合は、S3 インベントリが適切なソリューションになる場合があります。基本的に、指定された S3 バケット出力内のオブジェクトのリストが、CSV、Apache ORC、Apache Parquet の 3 つの形式のいずれかで取得されます。その後、データに基づいてはるかに簡単な計算を行うことができます。

S3 インベントリの欠点は、レポートを取得するのに 1 日ほどかかり、リアルタイムではないことです。

https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-inventory.html

-- コストをより簡単に管理する方法をお探しの場合は、ユースケースを分割して、それぞれに 1 つの S3 バケットを使用することをお勧めします。その後、バケット レベルでコスト配分タグを利用できます。

また、S3 使用率レポートは、別のストレージ クラスを使用する必要があるかどうかを判断するのに役立ちます。

関連情報