AWS CLIのクエリの使い方

 ツイート 0  シェア 0  Hatena 0

AWS

AWS CLI の使い方を 1 から教えるシリーズ 3 回目。前回 は AWS CLI のフィルタの使い方を紹介しました。今回はクエリの使い方を紹介します。フィルタは検索条件を指定するときに使うのに対し、クエリは出力する項目を選択するときに使います。

目次

  1. クエリとは
  2. JMESPath の使い方
  3. ec2 describe-instances でのサンプル

クエリとは

--query オプションを使うと、出力する項目を指定することができます。

まずはクエリを使わない例です。サブネットの一覧を表示しています。

$ aws ec2 describe-subnets
{
    "Subnets": [
        {
            "AvailabilityZone": "ap-northeast-1c",
            "AvailableIpAddressCount": 4091,
            "CidrBlock": "172.31.0.0/20",
            "DefaultForAz": true,
            "MapPublicIpOnLaunch": true,
            "State": "available",
            "SubnetId": "subnet-30e19d68",
            "VpcId": "vpc-49ee852d",
            "AssignIpv6AddressOnCreation": false,
            "Ipv6CidrBlockAssociationSet": []
        },
        ...
    ]
}

--query オプションを使って、CidrBlock の項目だけ取り出した例です。

$ aws ec2 describe-subnets --query "Subnets[*].CidrBlock"
[
    "172.31.0.0/20",
    "172.31.32.0/20",
    "172.31.16.0/20"
]

query オプションに Subnets[].CidrBlock と書いています。これは何でしょうか。help を調べてみましょう。

$ aws help

...
OPTIONS
...
       --query (string)

       A JMESPath query to use in filtering the response data.
...

query オプションには JMESPath というものが使えるようです。

JMESPath とは JSON の クエリ言語です。JMEPath を使うと、JSON の情報を条件を指定して取り出したり、整形したりできます。

JMESPath の使い方

JMESPath はたくさんの機能があるので、まずは JMESPath Tutorial を見ながら試してみるのが良いです。

以下の 4 つをよく使うので、まずはこれだけ覚えましょう。

ec2 describe-instances でのサンプル

では、実際のよくある使い方を見ていきましょう。以下は ec2 describe-instances コマンドの結果(抜粋)です。

$ aws ec2 describe-instances

{
    "Reservations": [
        {
            "Groups": [],
            "Instances": [
                {
                    "InstanceId": "i-054c85600ebf0c9e9",
                    "PrivateIpAddress": "172.31.18.60",
                    "State": {
                        "Name": "running"
                    }
                }
        }
    ]
}

この中から、InstanceId と PrivateIpAddress と State.Name を取り出すには以下のようにします。

$ aws ec2 describe-instances \
    --query "Reservations[*].Instances[*].[InstanceId,PrivateIpAddress,State.Name]"

[
    [
        [
            "i-054c85600ebf0c9e9",
            "172.31.18.60",
            "running"
        ]
    ],
    [
        [
            "i-0c24df1929f892d2a",
            "172.31.24.253",
            "stopped"
        ]
    ]
]

まとめ

いかがでしたか。3 回に渡って紹介した AWS CLI の使い方は今回で終わりです。第1回 でお伝えしたように、ポイントは help を使いこなすことです。知りたいことは help でその場で調べられるようにしましょう。

それでは良い自動化ライフを。

 ツイート 0  シェア 0  Hatena 0