双六工場日誌

平凡な日常を淡々と綴ります。

AWS CLIで最新のAmazon LinuxのAMI IDを取得する

アニメを消化しつつ、コマンドラインから最新のAMI IDを取得を試して、Amazon Linuxの分はできたのでメモ。

ID取得からインスタンスの作成まで一発でやってしまおうと思ったけど、describe-imagesはAPIのレスポンスが遅かったので、とりあえず、一覧だけ出力するところまで作成。APIのレスポンスが遅いのは、キャッシュファイルを入れて緩和。

最後に載せているスクリプトは、キャッシュファイル対応のために長くなっていますが、本質的なポイントは以下の2つ。

自分とamazonがオーナーになっているAMIのうち、以下に該当するものを取得

  • 仮想化方式 → HVM(完全仮想化)
  • 起動ディスク → EBS
  • アーキテクチャ → x86-64
  • ボリュームタイプ → 磁気ディスク(standard)
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を取得したい場合は、最後に参考文献に載せたドキュメントを見つつ改変してください。

続きを読む