AWS CLIのqueryオプションとは?概要や使い方を紹介


AWS CLIとは?
AWS CLIとは、Command Line Interfaceの略で、Amazonが提供しているクラウドコンピューティングサービスのAWSにアクセスし、管理できるオープンソースツールです。
AWS CLIは、入力されたコマンドを解釈するシェルを使用することでAWSのサービスとやり取りできます。シェルとは、キーボード入力のみでコンピュータに命令するCUIのコマンドラインシェルを意味します。
AWS CLIのシェルは、LinuxやmacOSで利用できる「Linuxシェル」や、WindowsのPowerShellやコマンドプロンプトで利用できる「Windowsコマンドライン」、また、PuTTYやSSHを使って「リモート」でも操作できます。
AWS CLIを利用すれば、AWSマネジメントコンソール上と同様に、アプリなどを実装するコマンドをシェルから実行できたり、GUIで行なっていた操作を自動化できたりします。
AWS CLIのqueryとは?
AWS CLIのqueryオプションとは、検索するデータ項目を指定するオプション構文です。AWS CLIのqueryオプションは、キーワードを組み合わせ、取り出すデータを制限したり、条件付与したりできます。
AWS CLIのqueryオプションは、データ項目を指定して出力できるSQL文でいうところのSELECT文が同等の役割を果たしています。また、AWS CLIでは、同じくデータベースを操作するfiltersオプションがありますが、SQL文でいうところのWHERE文の役割と同等な構文と言えます。
AWS CLIでは、queryオプションとfiltersオプションを組み合わせて、データを制御して出力するなど、様々な操作ができます。
ここからは、実際にAWS CLIのインストールから、queryオプションの利用例までを順番に紹介します。
AWS CLIをインストールする方法は?
MSIを使用して、WindowsにAWS CLIをインストールします。MSIとは、Microsoft Windows Installerの略でソフトウェアをインストールするためにパッケージ化されたファイル形式のひとつです。
今回のAWS CLIをインストールする前提として、OSはWindowsで、64ビットバージョンのWindows XP、またはそれ以降のもの、さらに管理者権限があることを条件とします。
AWS公式サイトに記載されている、AWS CLI MSIのダウンロードURLをクリックして、最新バージョンのAWS CLIインストーラをダウンロードします。
ダウンロードしたMSIを実行し、インストール先を選んで、画面の指示に従いインストールします。最後に「Finish」をクリックするとAWS CLIのインストールは完了です。
出典:Windows での AWS CLI バージョン 2 のインストール、更新、アンインストール|AWS
参照:https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cli
AWS CLI の基本設定
今回は、「aws configure」コマンドを利用して基本設定します。
「aws configure」コマンドを入力すると、AWS CLIから4つの認証情報の入力を求められます。4つの認証情報とは、アクセスキーID、アクセスキー、AWSリージョン、出力形式です。
まず、アクセスキーIDとアクセスキーは、IAMユーザーから確認します。AWSリージョンは、デフォルトのリージョン(東京リージョンなら「ap-northeast-1」)、そして、出力形式は、今回「json」で入力します。
4つの認証が成功したら、「aws ec2 describe-instances」とコマンドを入力して、AWSで起動中のAmazon EC2を表示させます。正常に動作できていれば、AWS CLIの基本設定は完了です。
queryオプションのコマンドで出力する方法は?
AWS CLIのqueryオプションをコマンドで出力する場合、「–query」コマンドを使用します。AWS CLIのqueryオプションは、JMESPathに準拠しています。JMESPathとは、JSON形式のクエリ言語のことです。
Queryオプションがどのような動作なのか比較するため、デフォルトでJSON形式の出力を紹介します。以下では、別のAmazon EC2インスタンスに添付された2つのAmazon EBSの例を記載しています。
queryを使わない場合
queryオプションを使用しないコマンド出力例は、以下の通りです。全て出力されるため、不要な情報まで引き出すことになり、読みづらくなります。
$ aws ec2 describe-volumes
{
"Volumes": [
{
"AvailabilityZone": "us-west-2a",
"Attachments": [
{
"AttachTime": "2013-09-17T00:55:03.000Z",
"InstanceId": "i-a071c394",
"VolumeId": "vol-e11a5288",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
"VolumeType": "standard",
"VolumeId": "vol-e11a5288",
"State": "in-use",
"SnapshotId": "snap-f23ec1c8",
"CreateTime": "2013-09-17T00:55:03.000Z",
"Size": 30
},
{
"AvailabilityZone": "us-west-2a",
"Attachments": [
{
"AttachTime": "2013-09-18T20:26:16.000Z",
"InstanceId": "i-4b41a37c",
"VolumeId": "vol-2e410a47",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
"VolumeType": "standard",
"VolumeId": "vol-2e410a47",
"State": "in-use",
"SnapshotId": "snap-708e8348",
"CreateTime": "2013-09-18T20:26:15.000Z",
"Size": 8
}
]
}
queryを使った場合
queryオプションを使用したコマンド出力の例です。下記の例では、Volumesリストから最初のボリュームのみ表示するため、配列のインデックス作成に次のコマンドを使用しています。
aws ec2 describe-volumes --query 'Volumes[0]'
{
"AvailabilityZone": "us-west-2a",
"Attachments": [
{
"AttachTime": "2013-09-17T00:55:03.000Z",
"InstanceId": "i-a071c394",
"VolumeId": "vol-e11a5288",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
"VolumeType": "standard",
"VolumeId": "vol-e11a5288",
"State": "in-use",
"SnapshotId": "snap-f23ec1c8",
"CreateTime": "2013-09-17T00:55:03.000Z",
"Size": 30
}
queryで*ワイルドカードを使った場合
次の例は、queryオプションでワイルドカード「*」を使用して、各ボリュームからVolumeIdとAvailabilityZone、Sizeの3つの要素を出力します。ワイルドカード「*」とは、任意の0文字以上を表します。JSONキーのエイリアスをそれぞれ指定する必要があります。
aws ec2 describe-volumes --query 'Volumes[*].{ID:VolumeId,AZ:AvailabilityZone,Size:Size}'
[
{
"AZ": "us-west-2a",
"ID": "vol-e11a5288",
"Size": 30
},
{
"AZ": "us-west-2a",
"ID": "vol-2e410a47",
"Size": 8
}
]
queryオプションでIAMユーザー一覧を表示する場合
queryオプションでIAMユーザー一覧を表示する場合は、AWS CLI出力を読みやすくするため、table形式で出力します。この場合、table型式(オプション)を使用しなければ、queryオプションのデフォルト出力は複雑で読みづらい表示になってしまいます。
aws iam list-users --output table
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
| ListUsers |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
|| Users ||
|+----------------------------------------------------+---------------------------+---------------------------+----------+-----------------------+-------------+|
|| Arn | CreateDate | PasswordLastUsed | Path | UserId | UserName ||
|+----------------------------------------------------+---------------------------+---------------------------+----------+-----------------------+-------------+|
|| arn:aws:iam::123456789012:user/Admin | 2014-10-16T16:03:09+00:00 | 2016-06-03T18:37:29+00:00 | / | AIDA1111111111EXAMPLE | Admin ||
|| arn:aws:iam::123456789012:user/backup/backup-user | 2019-09-17T19:30:40+00:00 | | /backup/ | AIDA2222222222EXAMPLE | backup-user ||
|| arn:aws:iam::123456789012:user/cli-user | 2019-09-17T19:11:39+00:00 | | / | AIDA3333333333EXAMPLE | cli-user ||
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
queryオプションでEC2インスタンス一覧の取得
AWS CLIのqueryオプションとtableオプションを組み合わせて、選択した列要素を出力することができます。最初の例では、列名はアルファベット順ですが、2番目の例では、無名列が指定された順番に並んでいます。
aws ec2 describe-volumes --query 'Volumes[*].{ID:VolumeId,InstanceId:Attachments[0].InstanceId,AZ:AvailabilityZone,Size:Size}' --output table
------------------------------------------------------
| DescribeVolumes |
+------------+----------------+--------------+-------+
| AZ | ID | InstanceId | Size |
+------------+----------------+--------------+-------+
| us-west-2a| vol-e11a5288 | i-a071c394 | 30 |
| us-west-2a| vol-2e410a47 | i-4b41a37c | 8 |
+------------+----------------+--------------+-------+
aws ec2 describe-volumes --query 'Volumes[*].[VolumeId,Attachments[0].InstanceId,AvailabilityZone,Size]' --output table
----------------------------------------------------
| DescribeVolumes |
+--------------+--------------+--------------+-----+
| vol-e11a5288| i-a071c394 | us-west-2a | 30 |
| vol-2e410a47| i-4b41a37c | us-west-2a | 8 |
+--------------+--------------+--------------+-----+
AWS CLIのqueryオプションを使って出力してみよう!
AWS CLIのqueryオプションは、ソフトウェアをインストールしないでAWSの各サービスとやり取りができ、また、tableオプションやfiltersオプションなどと組み合わせて使えるなど、多数のメリットがあります。
初めてAWS CLIを使う場合は、ヘルプコマンド「aws help」や「aws ec2 describe-instances help」などを使うと、使い方や多くのオプションを調べられます。
現在、AWSを導入する企業は増え続け、AWSエンジニアの需要が増加していくことが予測されます。AWSの知識を深めるためにも、無料で作成できるAWSアカウントを使ってみましょう。また、この記事を参考にしながら、ぜひAWS CLIのqueryオプションを使ってみてください。
この記事の監修者・著者

- AWSパートナー/Salesforce認定コンサルティングパートナー 認定企業
-
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。
・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
最新の投稿
- 2024-12-27営業インタビュー情報共有の活性化の中心に。SP企画部の新たな取り組み
- 2024-07-01営業インタビュー最短で当日にご提案可能。 OPE営業の対応が早い3つの理由
- 2024-07-01営業インタビュー研修見学ツアーが高評価!「お客様のOPEに対する期待を高め、継続に貢献できればと思います。」
- 2024-07-01営業インタビュー信頼関係を構築し、エンジニアの長期就業へ

- 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
- すぐに採用したいが、応募がぜんぜん集まらない
オープンアップITエンジニアをご検討ください!
当社のITエンジニア派遣サービスは
- 派遣スピードが速い!(最短即日)
- 4,500名のエンジニアから貴社にマッチした人材を派遣
- 正社員雇用も可能
こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。