のぴぴのメモ

自分用のLinuxとかの技術メモ

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}