AWS CLIで最新のAMI IDを取得する
タイトルの通り、Amazon Linux2、RHEL8、Windows Server2019の最新AMIのAMI IDを取得するAWS-CLIのコマンドです。(元ネタは、EC2のユーザーガイド)
AWS CLIの"ec2 describe-images"でAMI IDを確認しますが、その時に下記オプションを指定することで最新AMIのID取得を実現しています。
- "--filters"で、特定のOS(例えばAmazon Linux2とか)のAMIのみを抽出し
- "--query "で、sort_byとreverseで作成日付(降順)にソートし最初の配列のみ取得
最新AMI ID取得例
Amazon Linux2
AMIID=$(aws --profile ${PROFILE} --output text \ ec2 describe-images \ --owners amazon \ --filters 'Name=name,Values=amzn2-ami-hvm-2.0.????????.?-x86_64-gp2' \ 'Name=state,Values=available' \ --query 'reverse(sort_by(Images, &CreationDate))[:1].ImageId' ); echo ${AMIID}
RHEL
RHEL8 の最新AMI ID
AMIID=$(aws --profile ${PROFILE} --output text \ ec2 describe-images \ --filters 'Name=name,Values=RHEL-8.?.?_HVM-????????-x86_64-*-GP2' \ 'Name=state,Values=available' \ --query 'reverse(sort_by(Images, &CreationDate))[:1].ImageId' ); echo ${AMIID}
RHEL7 の最新AMI ID
AMIID=$(aws --profile ${PROFILE} --output text \ ec2 describe-images \ --filters 'Name=name,Values=RHEL-7.?_HVM-????????-x86_64-*-GP2' \ 'Name=state,Values=available' \ --query 'reverse(sort_by(Images, &CreationDate))[:1].ImageId' ); echo ${AMIID}
Windows Server
Windows Server 2019 Japanese Full-Base の最新AMI ID
AMIID=$(aws --profile ${PROFILE} --output text \ ec2 describe-images \ --owners amazon \ --filters 'Name=name,Values=Windows_Server-2019-Japanese-Full-Base-????.??.??' \ 'Name=state,Values=available' \ --query 'reverse(sort_by(Images, &CreationDate))[:1].ImageId' ) ; echo ${AMIID}