こんにちわ、cloudpack磯辺和彦です。

AWS CLIのワンライナーシリーズ。本日は、Amazon Linux (hvm, ebs)の最新AMIのAMI IDを取得するもの。

$ aws ec2 describe-images --owner amazon --filters 'Name=name,Values=amzn-ami-hvm-*' 'Name=virtualization-type,Values=hvm' 'Name=root-device-type,Values=ebs' --query 'Images[].[Name, ImageId]' --output text|sort|tail -n 1
 amzn-ami-hvm-2014.03.2.x86_64-gp2	ami-df470ede

ポイントはいくつか。

  • ownerをamazonにすることで、Amazon公式のAMIを対象とする。
  • filtersで名前をamzn-ami-hvm-*と、ワイルドカードで指定する。
  • filtersに複数の条件を指定する(name, root-device-type, virtualization-type)。
  • queryで出力される内容を限定する。
  • outputをtextにすることで、sortとtailを使って最新のAMIが拾える。JSONは行指向ではないので、シェルでフィルタするときはtextにすると便利。

ちなみに、フィルターに使える条件は、各APIのドキュメントに記載されている。今回の場合は、describe-imagesとなる。Supported Filtersとして、フィルタとして使用できるキーと取りうる値が定義されている。

元記事はこちらです。
[AWS] 最新のAmazon LinuxのAMI IDを取得するワンライナー