はじめに
S3って安価なストレージなので、容量気にせずとりあえずなんでも格納して放置なんてことが多いですよね?
将来的に分析するかもってことでデータレイクに蓄積して結果使わないなんてことも多い。(my観測範囲)
で、新型コロナウィルスの影響で先行き不安な状況なので、収束まではどうにか支出を抑えて凌ぎたいという
人も多いと思い、要否判断(&不要であれば削除)しやすいように、S3バケットごとに使用量/概算コストを
一覧表示するツールを作ったので、紹介します。
ツール概要
一言で言えば、
全リージョン/全バケット別にオブジェクト数/使用バイト数/概算月額料金を出力するツール
です。(誰かが作ってそうなんですが探してもなかったので作りました)
CloudWatchからバケットサイズなど取得できるようになってるので、それを実行すればawscliでも取得できる
のですが、リージョン指定しないといけないとか、メトリクス/ディメンションを指定するのがダルイので
そこらへんうまくやってくれるツールが欲しいなぁと思ったのがモチベーションです。
あと、請求コンソールだとバケット別の使用量はわからないので。
補足(&免責事項)
- コスト算出について
- 実行時点の利用量を1ヶ月間継続した場合の概算請求額であり正確ではありません(ご利用は自己責任で)
- ストレージ保存量に対して課金される料金が対象であり、それ以外(リクエスト/転送量)のコストは含みません
- 概算請求額は東京リージョン料金(2020/04時点)で算出します
- 料金通貨は米ドル
- バージョニングについて
- 以前のバージョンのオブジェクトやそのサイズもカウントされます
- ツール結果と
aws s3 ls --recursive
等で得られるオブジェクト数は異なります
要はざっくりでいいのでバケットごとにかかる料金を知りたい
って人がターゲットです
実行方法
前提
- AWSクレデンシャル情報(~/.aws/credentials)が設置されていること
Go言語がインストールされている環境の場合
GO111MODULE=off go get -v github.com/miyaz/s3usage
cd $(go env GOPATH)/src/github.com/miyaz/s3usage
go run main.go
それ以外の環境
こちらから環境に応じたzipファイルをダウンロードし
展開後 s3usage
というバイナリを実行します
オプション
- -p {プロファイル名}
- ~/.aws/credentials に記載されているプロファイル名
- 指定なし時(デフォルト)は
default
- -v
- ストレージタイプ毎の使用量/概算コストも表示したい場合に指定
実行例
おわりに
コロナに負けるな!