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を取得するワンライナー」