• tagやownerでfilterして、作成日でソートした結果のうちImageIdだけ取り出す
1
2
3
4
5
6
7
8
9
$ aws ec2 describe-images \
  --filters \
    Name=owner-id,Values=1234512345 \
    Name=tag:Branch,Values=master \
    Name=tag:Role,Values=ap \
  --query "reverse(sort_by(Images, &CreationDate)[].ImageId)"
# option:query解説
# mapのImagesをCreationDateでsortして、ImageIdを抽出
# 結果を逆順にする

  • 取り出すモノを複数指定
1
2
3
4
5
6
7
8
9
$ aws ec2 describe-images \
  --filters \
    Name=owner-id,Values=1234512345 \
    Name=tag:Branch,Values=master \
    Name=tag:Role,Values=ap \
  --query "reverse(sort_by(Images, &CreationDate)[].[ImageId, Name])"
# option:query解説
# mapのImagesをCreationDateでsortして、ImageIdを抽出
# 結果を逆順にする

  • 上記の結果の内、最新1行のみ取得
1
2
3
4
5
6
$ aws ec2 describe-images \
  --filters \
    Name=owner-id,Values=1234512345 \
    Name=tag:Branch,Values=master \
    Name=tag:Role,Values=ap \
  --query "reverse(sort_by(Images, &CreationDate)[].ImageId)[1]"

  • double-quoteを外したい
1
2
3
4
5
6
7
$ aws ec2 describe-images \
  --filters \
    Name=owner-id,Values=1234512345 \
    Name=tag:Branch,Values=master \
    Name=tag:Role,Values=ap \
  --query "reverse(sort_by(Images, &CreationDate)[].ImageId)[1]" \
  --output text

  • ラベルをつける
1
2
3
4
5
6
$ aws ec2 describe-images \
  --filters \
    Name=owner-id,Values=1234512345 \
    Name=tag:Branch,Values=master \
    Name=tag:Role,Values=ap \
  --query "reverse(sort_by(Images, &CreationDate)[].{imageid:ImageId, snapshotid: BlockDeviceMappings[0].Ebs.SnapshotId})[1]"

  • ラベルをつけて、特定ラベルの値だけ取得
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$ aws ec2 describe-images \
  --filters \
    Name=owner-id,Values=1234512345 \
    Name=tag:Branch,Values=master \
    Name=tag:Role,Values=ap \
  --query "reverse(sort_by(Images, &CreationDate)[].{imageid:ImageId, snapshotid: BlockDeviceMappings[0].Ebs.SnapshotId})[1] | snapshotid" \
  --output text
> {
>   "imageid": "ami-xxxxxxxxxxxxxxxx",
>   "snapshotid": "snap-xxxxxxxxxxxxx"
> }

  • 元ネタ
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
{
    "Images": [
        {
            "Hypervisor": "xen",
            "State": "available",
            "RootDeviceType": "ebs",
            "RootDeviceName": "/dev/xvda",
            "ImageType": "machine",
            "BlockDeviceMappings": [
                {
                    "Ebs": {
                        "VolumeSize": 8,
                        "SnapshotId": "snap-xxxxxxxxxx",
                        "VolumeType": "gp2",
                        "DeleteOnTermination": true,
                        "Encrypted": false
                    },
                    "DeviceName": "/dev/xvda"
                }
            ],
            "OwnerId": "1234512345",
            "ImageId": "ami-xxxxxxxxxxxxxxxx",
            "CreationDate": "2018-10-04T01:17:47.000Z",
            "Architecture": "x86_64",
            "VirtualizationType": "hvm",
            "ImageLocation": "xxxxxxxxxx/Pckr-ap-auth-2018-10-04T01-14-43Z",
            "Public": false,
            "Name": "Pckr-ap-auth-2018-10-04T01-14-43Z",
            "SriovNetSupport": "simple",
            "EnaSupport": true,
            "Tags": [
                {
                    "Key": "Made",
                    "Value": "packer"
                },
                {
                    "Key": "CommitId",
                    "Value": "61b0e7"
                },
                {
                    "Key": "Base_AMI_Name",
                    "Value": "amzn2-ami-hvm-2.0.20180810-x86_64-gp2"
                },
                {
                    "Key": "Branch",
                    "Value": "master"
                },
                {
                    "Key": "Role",
                    "Value": "ap"
                },
                {
                    "Key": "OS_Version",
                    "Value": "Amazon Linux 2 LTS"
                },
                {
                    "Key": "Base_AMI",
                    "Value": "ami-xxxxxxxxxxxxx"
                },
                    "Key": "Name",
                    "Value": "packer-ap"
                }
            ],
            "Description": "ami-ap-auth"
        },
        {
            "Hypervisor": "xen",
            ...
}