handson(light): aws cli output

1.2.8. AMIの情報抽出 (JMESPath: and条件)

手順の目的

AMI情報のうち、特定の部分を抽出します。

設定値の指定

手順に必要な設定値を変数に格納をします。

0. リージョン

リージョンを指定します。

環境変数の設定:

export AWS_DEFAULT_REGION='ap-northeast-1'

1. AMIの名前プレフィックス

AMIの名前プレフィックスを指定します。

変数の指定:

EC2_IMAGE_NAME_PREFIX='amzn2-ami-hvm-2.0'

設定値の確認

各変数に正しい設定値が格納されていることを確認します。

変数の確認:

cat << END

  # 0. AWS_DEFAULT_REGION:"ap-northeast-1"
       AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}"

  # 1. EC2_IMAGE_NAME_PREFIX:"amzn2-ami-hvm-2.0"
       EC2_IMAGE_NAME_PREFIX="${EC2_IMAGE_NAME_PREFIX}"

END

各変数について、上の行と下の行の値の内容もしくは形式が同じであることを確認します。 もし異なる場合は、それぞれの手順番号に戻って変数の設定を行います。

処理の実行

(特になし)

1年前の日時を取得します。

コマンド:

DATE_CREATION_ISO8601=$(
  date -d "-1 year" \
    '+%Y-%m-%dT%H:%M:%SZ' \
) \
  && echo ${DATE_CREATION_ISO8601}

結果(例):

2021-08-29T01:23:45Z

AWS CLIリソースの作成

名前が'amzn2-ami-hvm-2.0'で始まり、CreationDateが'2022-08-17T23:34:00.000Z'よりも新しいAMIの一覧を抽出します。

コマンド:

aws ec2 describe-images \
  --owner amazon \
  --filters Name=state,Values=available \
            Name=image-type,Values=machine \
            Name=hypervisor,Values=xen \
            Name=virtualization-type,Values=hvm \
            Name=architecture,Values=x86_64 \
            Name=root-device-type,Values=ebs \
            Name=root-device-name,Values=/dev/xvda \
            Name=block-device-mapping.device-name,Values=/dev/xvda \
  --query "Images[?
      contains(Name,\`${EC2_IMAGE_NAME_PREFIX}\`)
        && CreationDate > \`${DATE_CREATION_ISO8601}Z\`
    ].[Name]" \
  --output text

結果(例):

amzn2-ami-hvm-2.0.20220805.0-x86_64-gp2
amzn2-ami-hvm-2.0.20211001.1-x86_64-gp2
amzn2-ami-hvm-2.0.20211005.0-x86_64-gp2
amzn2-ami-hvm-2.0.20220218.3-x86_64-gp2
amzn2-ami-hvm-2.0.20220419.0-x86_64-ebs
amzn2-ami-hvm-2.0.20211201.0-x86_64-gp2
amzn2-ami-hvm-2.0.20220426.0-x86_64-ebs
amzn2-ami-hvm-2.0.20211201.0-x86_64-ebs
amzn2-ami-hvm-2.0.20211223.0-x86_64-ebs
amzn2-ami-hvm-2.0.20220606.1-x86_64-gp2
amzn2-ami-hvm-2.0.20211001.1-x86_64-ebs
amzn2-ami-hvm-2.0.20220426.0-x86_64-gp2
amzn2-ami-hvm-2.0.20211103.0-x86_64-ebs
amzn2-ami-hvm-2.0.20211005.0-x86_64-ebs
amzn2-ami-hvm-2.0.20220121.0-x86_64-gp2
amzn2-ami-hvm-2.0.20220207.1-x86_64-gp2
amzn2-ami-hvm-2.0.20220316.0-x86_64-gp2
amzn2-ami-hvm-2.0.20220719.0-x86_64-ebs
amzn2-ami-hvm-2.0.20220218.1-x86_64-ebs
amzn2-ami-hvm-2.0.20220207.1-x86_64-ebs
amzn2-ami-hvm-2.0.20220406.1-x86_64-ebs
amzn2-ami-hvm-2.0.20211223.0-x86_64-gp2
amzn2-ami-hvm-2.0.20220310.0-x86_64-ebs
amzn2-ami-hvm-2.0.20220316.0-x86_64-ebs
amzn2-ami-hvm-2.0.20220218.1-x86_64-gp2
amzn2-ami-hvm-2.0.20220218.3-x86_64-ebs
amzn2-ami-hvm-2.0.20220406.1-x86_64-gp2
amzn2-ami-hvm-2.0.20220419.0-x86_64-gp2
amzn2-ami-hvm-2.0.20220606.1-x86_64-ebs
amzn2-ami-hvm-2.0.20220310.0-x86_64-gp2
amzn2-ami-hvm-2.0.20220805.0-x86_64-ebs
amzn2-ami-hvm-2.0.20211103.0-x86_64-gp2
amzn2-ami-hvm-2.0.20220719.0-x86_64-gp2
amzn2-ami-hvm-2.0.20220121.0-x86_64-ebs

完了確認

「AMI情報のうち、特定の部分を抽出することができている。」ことを確認します。

注釈

処理の実行で取得できていればOKです。

手順の完了