OpsWorksやらAutoscale等々、検証でEC2をぽんぽこ立てたり消していると何だかんだで溜まっていくavailableのEBS......
そういやどうだったかなと調べてみるとなんと100台以上も!!
どうせ使ってないしそもそもこれはヤバいということでawsコマンドを使用して使っていないEBS一覧を取得し、それをforで回してパワーで消していくのが本題です。
ではまずは使っていないEBS一覧の取得の前にavailableになっているEBSの数を確認してみます。
この辺のドキュメントを参考にしていきながらコマンドを考えていきます。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/ebs-volume-snapshot-ec2-instance/
statusがavailableのEBSをすべて削除したいので使用コマンドは以下
$ aws --profile hogehoge --region ap-northeast-1 ec2 describe-volumes --filter "Name=status,Values=available" | jq -r '.Volumes[].VolumeId' | wc -l
これで台数が出せました。
profileとregionを環境に合わせて指定していただければコピペで出せるはず。
ホントは検証用を判別させるためにtagを付けておけばこんなことしなくて済むのですが今更仕方なし。
今度はID一覧を適当なファイルに出力します。
aws --profile hogehoge --region ap-northeast-1 ec2 describe-volumes --filter "Name=status,Values=available" | jq -r '.Volumes[].VolumeId' > hugahuga.txt
出力出来たら一応中身を見てみましょう。
そしたらパワーで削除していきます。
$ for x in `hugahuga.txt`; do aws --profile hogehoge --region ap-northeast-1 ec2 delete-volume --volume-id $x; done
以上で削除完了です。
注意点としては、当然ですがクライアントの環境で実行する際は重々気を付けて実行しましょうといったところですね。
これに限らず何かを消す際はインシデントの元だったりしますので。
ではまた。
最後まで閲覧いただきありがとうございました。