AWSで作成したamiに紐づくsnapshotを確認する方法

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コマンドでできないものか。。。