handson(light): aws cli output

1.2.2. AMIの情報抽出 (JMESPath: 特定ノードの取得)

手順の目的

AMI情報のうち、特定のノード('Name'を抽出します。

設定値の指定

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

0. リージョン

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

環境変数の設定:

export AWS_DEFAULT_REGION='ap-northeast-1'

設定値の確認

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

変数の確認:

cat << END

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

END

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

処理の実行

(特になし)

特定ノードの取得

AMIの名前一覧(JSON形式)を出力します。

コマンド:

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[].Name'

結果(例):

[
    "bottlerocket-aws-k8s-1.23-x86_64-v1.9.1-614cec9b",
    "Cloud9Default-2022-08-26T15-44",
    "Cloud9AmazonLinux2-2022-08-18T14-02",
    "Cloud9AmazonLinux2-2022-08-23T11-43",
    "Cloud9AmazonLinux2-2022-08-22T11-41",

    (略)

    "amazon-eks-node-1.19-v20220824"
]

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[].Name" \
  --output text

結果(例):

Cloud9Default-2022-08-12T14-51  aws-elasticbeanstalk-amzn-2.0.20220719.64bit-eb_nodejs12_amazon_linux_2-hvm-2022-08-03T18-38   Cloud9AmazonLinux2-2022-08-23T11-43     Cloud9AmazonLinux2-2022-08-04T13-39     Cloud9Default-2022-08-08T15-48Cloud9AmazonLinux2-2022-08-23T05-52      Cloud9Default-2022-08-18T13-56  amazon-eks-gpu-node-1.23-v20220811 (略)

注釈

1行で出力される。(変数に格納した上でfor文などで使うには問題ない)

特定ノードの取得 (配列化)

AMIの名前一覧を配列(JSON形式)で出力します。

コマンド:

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[].[Name]"

結果(例):

[
    [
        "bottlerocket-aws-k8s-1.22-x86_64-v1.9.1-614cec9b"
    ],
    [
        "amazon-eks-gpu-node-1.20-v20220824"
    ],
    [
        "amazon-eks-gpu-node-1.23-v20220802"
    ],

    (略)

    [
        "amazon-eks-gpu-node-1.20-v20220811"
    ]
]

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[].[Name]" \
  --output text

結果(例):

Cloud9Default-2022-08-10T10-23
amazon-eks-gpu-node-1.22-v20220802
aws-elasticbeanstalk-amzn-2.0.20220719.64bit-eb_nodejs12_amazon_linux_2-hvm-2022-08-03T18-38
amazon-eks-gpu-node-1.21-v20220824
(略)
Cloud9AmazonLinux2-2022-08-09T03-51

注釈

行単位で出力されるため、視認性が高く、ファイル保存して再利用しやすい。

完了確認

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

注釈

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

手順の完了