カピバラ好きなエンジニアブログ

興味ある技術とか検証した内容を赴くままに書いていきます。カピバラの可愛さこそ至高。

AWS CLIを使用してS3のサイズとオブジェクト数を取得してみた

経緯

S3のストレージ費用ってバケット単位で確認するのであれば、CloudWatchを使用すれば確認できますが、フォルダ単位で確認しようと思うとどうやって確認するかわからないことがあります。
今回はAWS CLIにコマンド一発で指定したS3バケット、フォルダ配下のデータサイズとオブジェクト数が取得できるコマンドを実行してみました。

公式の説明はこちら
docs.aws.amazon.com


実施内容

最初に記載しまいますが、以下のコマンドを実行しました。

aws s3 ls s3://test-tmp-inventory/test-cloudberry/ --recursive --human-readable --sum


各オプションの説明はこんな感じです。

オプション 説明
--recursive 指定したディレクトリ、プレフィックス配下のオブジェクトまで再帰的に実行する
--human-readable ファイルサイズを人が見やすい形式で表示
--sum オブジェクト数や合計サイズなどの要約情報の表示



実施作業

コマンド実行

EC2でもローカルPCでもどこでも良いのですが、AWS CLIが実行可能かつS3へアクセス可能な端末からコマンドを実行します。

指定したフォルダ配下のオブジェクトの一覧が表示され、最後にオブジェクト数の合計とサイズが出力されているのがわかります。
f:id:live-your-life-dd18:20191029151835p:plain

コマンド自体は凄い簡単ですが、裏ではS3オブジェクトに対してLISTリクエストが実行されているので、S3に大量のオブジェクトが格納されている場合には費用面に気を付けてください。

一々オブジェクトの一覧を出力したくないという場合は、以下のコマンドでオブジェクト数、データサイズのみを出力できます。(ただのPowerShellですが)

aws s3 ls s3://test-tmp-inventory/test-cloudberry/ --recursive --human-readable --sum | Select-String "Total Size" | % { $($_ -split ",") } | % { $_.TrimStart() }
aws s3 ls s3://test-tmp-inventory/test-cloudberry/ --recursive --human-readable --sum | Select-String "Total Objects" | % { $($_ -split ",") } | % { $_.TrimStart() }


f:id:live-your-life-dd18:20191029152400p:plain


感想及び所感

シンプルに今S3上にどれだけのオブジェクトがあって、データサイズがどれぐらいかを知りたいときには有用なコマンドですね。
恒常的に取得して確認したいという場合には、ファイル出力してS3にアップしたりLambda経由でRedshiftに保存したりする必要があるかもしれません。

参考

今回はAWS CLIで取得するやり方でしたが、それ以外のコマンドでも確認できるようです。
qiita.com