AWS CLIで最新のAmazon LinuxのAMI IDを取得する
アニメを消化しつつ、コマンドラインから最新のAMI IDを取得を試して、Amazon Linuxの分はできたのでメモ。
ID取得からインスタンスの作成まで一発でやってしまおうと思ったけど、describe-imagesはAPIのレスポンスが遅かったので、とりあえず、一覧だけ出力するところまで作成。APIのレスポンスが遅いのは、キャッシュファイルを入れて緩和。
最後に載せているスクリプトは、キャッシュファイル対応のために長くなっていますが、本質的なポイントは以下の2つ。
自分とamazonがオーナーになっているAMIのうち、以下に該当するものを取得
aws ec2 describe-images \ --owners self amazon \ --filters \ Name=virtualization-type,Values=hvm \ Name=root-device-type,Values=ebs \ Name=architecture,Values=x86_64 \ Name=block-device-mapping.volume-type,Values=standard
取得したJSONをjqで以下のように整形
- Imageのリストを名前順にソート
- Platformが"windows"となっているものを除外(Platformは値が"windows"のみしかない属性)
- NameとImageId(AMI ID)を文字列結合して出力
jq -r '.Images | sort_by(.Name)| .[] | select(.Platform != "windows") | .Name + ": " + .ImageId'
これらをまとめて一つのスクリプトにしたのが以下。ほかの条件でAMI IDを取得したい場合は、最後に参考文献に載せたドキュメントを見つつ改変してください。
続きを読む