AWS利用していてamiは日常的に作成しますが、作成しっぱなしになること多いですよね。結果として、削除可否不明のamiやsnapshotが出来てしまったり。。。結構あるあるだと思っています。AWS CLIのdescribe-imagesコマンドであれば、対象のamiと紐づくsnapshotをコマンドベースで確認できるので、大量に存在するamiを見直そうと思った時に便利だと思います。コンソールからちまちま確認するのは辛いです。。。
describe-images — AWS CLI 1.14.28 Command Reference
以下は、jqコマンドを用いて、さらに分かりやすく出力してくれるコマンドです。備忘録。
タグを付与しているパターン。タグを付与していないamiは出力されない。
> aws ec2 describe-images --owners self --region ap-northeast-1 | jq -c ".Images[] | { ImageId, Name, ImageLocation, Description, CreationDate, BlockDeviceMappings: .BlockDeviceMappings[]?, Tags: .Tags[]?} | [ .ImageId, .Name, .ImageLocation, .Description, .CreationDate, .BlockDeviceMappings.Ebs.SnapshotId, .Tags.Key, .Tags.Value ]" | sed -e 's/\[\|\]//g'
タグの有無関係なく出力してくれるパターン。でもタグ情報は出してくれない。
> aws ec2 describe-images --owners self --region ap-northeast-1 | jq -c ".Images[] | { ImageId, Name, ImageLocation, Description, CreationDate, BlockDeviceMappings: .BlockDeviceMappings[]? } | [ .ImageId, .Name, .ImageLocation, .Description, .CreationDate, .BlockDeviceMappings.Ebs.SnapshotId ]" | sed -e 's/\[\|\]//g'
ほとんどの環境でタグがあったりなかったりするので、大抵上記2つのコマンド結果をjoinコマンドで結合してexcelとかに貼って確認してます。
> join -t , -j 6 -a 2 (タグあり結果) (タグなし結果) | awk 'BEGIN {FS=",";OFS=","} {print $1,$2,$3,$4,$5,$6,$7,$8}'
1コマンドでできないものか。。。