handson(light): aws cli output

1.2.3. AMIの情報抽出 (JMESPath: 比較)

手順の目的

AMI情報のうち、特定のノード('CreationDate')について比較した結果を抽出します。

設定値の指定

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

0. リージョン

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

環境変数の設定:

export AWS_DEFAULT_REGION='ap-northeast-1'

設定値の確認

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

変数の確認:

cat << END

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

END

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

処理の実行

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

コマンド:

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

結果(例):

2022-07-29T01:23:45Z

AWS CLIリソースの作成

CreationDateが1ヶ月以内の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[?CreationDate > \`${DATE_CREATION_ISO8601}\`].Name"

結果(例):

[
    "Deep Learning AMI GPU TensorFlow 2.9.1 (Amazon Linux 2) 20220826",
    "Cloud9Default-2022-08-26T15-44",
    "Deep Learning AMI GPU TensorFlow 2.8.2 (Amazon Linux 2) 20220826",
    "Cloud9AmazonLinux2-2022-08-26T23-12",
    "Cloud9Default-2022-08-26T23-11",
    "al2022-ami-2022.0.20220824.0-kernel-5.15-x86_64",
    "Cloud9AmazonLinux2-2022-08-26T15-39",
    "al2022-ami-minimal-2022.0.20220824.0-kernel-5.15-x86_64"
]

完了確認

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

注釈

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

手順の完了