handson(light): aws cli output

1.2.5. AMIの情報抽出 (JMESPath: max_by関数)

手順の目的

AMI情報のうち、比較して最も大きい(新しい)ものを抽出します。

設定値の指定

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

0. リージョン

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

環境変数の設定:

export AWS_DEFAULT_REGION='ap-northeast-1'

設定値の確認

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

変数の確認:

cat << END

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

END

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

処理の実行

(特になし)

AWS CLIリソースの作成

一番新しい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 'max_by(Images[], &CreationDate)'

結果(例):

{
    "Architecture": "x86_64",
    "CreationDate": "2022-08-26T23:44:08.000Z",
    "ImageId": "ami-001a6e8772e361179",
    "ImageLocation": "amazon/Cloud9AmazonLinux2-2022-08-26T23-12",
    "ImageType": "machine",
    "Public": true,
    "OwnerId": "465558535106",
    "PlatformDetails": "Linux/UNIX",
    "UsageOperation": "RunInstances",
    "State": "available",
    "BlockDeviceMappings": [
        {
            "DeviceName": "/dev/xvda",
            "Ebs": {
                "DeleteOnTermination": true,
                "SnapshotId": "snap-08a3e47a20cbe48e2",
                "VolumeSize": 10,
                "VolumeType": "gp2",
                "Encrypted": false
            }
        }
    ],
    "Description": "Cloud9 Cloud9AmazonLinux2 AMI",
    "EnaSupport": true,
    "Hypervisor": "xen",
    "ImageOwnerAlias": "amazon",
    "Name": "Cloud9AmazonLinux2-2022-08-26T23-12",
    "RootDeviceName": "/dev/xvda",
    "RootDeviceType": "ebs",
    "SriovNetSupport": "simple",
    "VirtualizationType": "hvm",
    "DeprecationTime": "2024-08-26T23:44:08.000Z"
}

完了確認

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

注釈

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

手順の完了