AWS CLI の使い方を 1 から教えるシリーズ 3 回目。前回はフィルタをやりました
-
AWS CLIのフィルタの使い方
AWS CLI の使い方を 1 から教えるシリーズ 2 回目。前回 は AWS CLI のインストール方法と初期設定につ ...
続きを見る
今回はクエリの使い方を紹介します。フィルタは検索条件を指定するときに使うのに対し、クエリは出力する項目を選択するときに使います。
目次
クエリとは
--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"
},
"Tags": [
{
"Key": "Name",
"Value": "my-instance"
},
{
"Key": "Environment",
"Value": "production"
}
]
}
}
]
}
この中から、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"
]
]
--output text
オプションを使うと見やすくなることもあります。状況に応じて使い分けます。
aws ec2 describe-instances \
--query "Reservations[].Instances[].[InstanceId,PrivateIpAddress,State.Name]" \
--output text
i-054c85600ebf0c9e9 172.31.18.60 running
i-0c24df1929f892d2a 172.31.24.253 stopped
Tags のように Key と Value の組み合わせを取り出すときはこのようにします。
aws ec2 describe-instances --query "Reservations[].Instances[].Tags[?Key=='Name'].Value"
[
[
[
"my-instance"
]
]
]
まとめ
いかがでしたか。3 回に渡って紹介した AWS CLI の使い方は今回で終わりです。第 1 回の記事でお伝えしたように、ポイントは help を使いこなすことです。知りたいことは help でその場で調べられるようにしましょう。
それでは良い AWS CLI ライフを。
第 1 回目の記事はこちらから。
-
AWS CLI入門
AWS CLI をの使い方を教える機会があったのでそのときのメモを残しておきます。AWS をコマンドラインで操作すること ...
続きを見る