カテゴリ: AWS CLI 更新日: 2026/04/12

【AWS CLI】--queryオプションの使い方を徹底解説!JMESPathとJQとの違いも初心者向けにわかりやすく解説

507
【AWS】CLIでクエリ(--query)の使い方を徹底解説【JQとの違いも】

先生と生徒の会話形式で理解しよう

生徒

「AWS CLIでコマンドを実行するとJSONがたくさん表示されて、どこを見ればいいのかわかりません。」

先生

「AWS CLIには--queryという便利なオプションがあります。必要な項目だけを抽出できます。」

生徒

「それは便利ですね。JQコマンドと何が違うのですか。」

先生

「AWS CLI標準のJMESPath構文を使うのが--queryです。違いも含めて基礎から解説していきましょう。」

1. AWS CLIの--queryとは何か

1. AWS CLIの--queryとは何か
1. AWS CLIの--queryとは何か

AWS CLIの--queryオプションは、コマンド実行結果のJSONデータから必要な値だけを抽出するための機能です。AWS CLI初心者の方がつまずきやすいポイントの一つが、大量のJSON出力です。EC2やS3、IAMなどのサービスを操作すると、複雑な構造のJSONが表示されます。

そこで活躍するのがJMESPathというクエリ言語です。--queryはこのJMESPath構文を利用して、JSONの中から特定のキーや配列要素を絞り込むことができます。サーバー構築や運用自動化、シェルスクリプト作成時に非常に重要なテクニックです。

AWS CLIクエリを使いこなすことで、必要な情報だけを取得し、スクリプト処理やレポート作成を効率化できます。

2. --queryを使わない場合の出力例

2. --queryを使わない場合の出力例
2. --queryを使わない場合の出力例

まずはEC2インスタンス一覧を取得するコマンドを見てみましょう。


aws ec2 describe-instances
{
    "Reservations": [
        {
            "Instances": [
                {
                    "InstanceId": "i-1234567890abcdef0",
                    "InstanceType": "t2.micro",
                    "State": {
                        "Name": "running"
                    }
                }
            ]
        }
    ]
}

このようにJSON形式で大量のデータが表示されます。初心者にとってはどのキーを参照すればよいのか迷いやすいです。特にAWS CLI入門段階では、InstanceIdやStateだけ取得したいというケースが多いでしょう。

3. --queryで特定の値だけ抽出する方法

3. --queryで特定の値だけ抽出する方法
3. --queryで特定の値だけ抽出する方法

InstanceIdだけ取得したい場合は、次のように--queryを指定します。


aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId"
[
    "i-1234567890abcdef0"
]

配列を表す角括弧を使うことで、複数のReservationやInstancesを横断して値を取得できます。AWS CLIクエリの基本は、JSONの構造を理解し、ドット記法と配列指定を組み合わせることです。

複数項目を同時に取得することも可能です。


aws ec2 describe-instances --query "Reservations[].Instances[].{ID:InstanceId,Type:InstanceType}"
[
    {
        "ID": "i-1234567890abcdef0",
        "Type": "t2.micro"
    }
]

このようにキー名を独自に定義することもできます。AWS CLI --query 使い方の中でもよく利用される書き方です。

AWSの基本用語や仕組みを、図解でサクッと理解したい人には、 入門の定番書がこちらです。

AWSの基本が全部わかる教科書をAmazonで見る

※ Amazon広告リンク

4. フィルタ条件を指定する応用テクニック

4. フィルタ条件を指定する応用テクニック
4. フィルタ条件を指定する応用テクニック

JMESPathでは条件式を使って絞り込みも可能です。例えば、起動中のインスタンスのみを取得したい場合は次のように記述します。


aws ec2 describe-instances --query "Reservations[].Instances[?State.Name=='running'].InstanceId"
[
    "i-1234567890abcdef0"
]

クエリ内で比較演算子を使用することで、特定条件のリソースだけ取得できます。AWS CLIでの運用管理や自動化処理では非常に重要な書き方です。

さらに出力形式を変更する場合は--outputオプションと組み合わせます。


aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId" --output text
i-1234567890abcdef0

JSONではなくtext形式にすることで、シェルスクリプトとの連携が容易になります。AWS CLI 自動化やバッチ処理では頻繁に使われます。

5. JQコマンドとの違い

5. JQコマンドとの違い
5. JQコマンドとの違い

JQはJSONを加工するためのLinuxコマンドです。一方で--queryはAWS CLI標準機能です。大きな違いは次の通りです。

第一に、--queryは追加インストール不要で利用できます。AWS CLIを導入すればすぐに使用可能です。第二に、JMESPathという専用構文を使います。JQは独自のフィルタ構文を使用します。

例えばJQを使う場合は次のようになります。


aws ec2 describe-instances | jq ".Reservations[].Instances[].InstanceId"
"i-1234567890abcdef0"

JQは柔軟性が高い反面、パイプ処理が必要です。AWS CLI初心者やクラウドエンジニア入門者には、まず--queryを理解することをおすすめします。シンプルな抽出であれば--queryで十分対応できます。

6. S3やIAMでの活用例

6. S3やIAMでの活用例
6. S3やIAMでの活用例

EC2だけでなく、S3バケット一覧取得にも活用できます。


aws s3api list-buckets --query "Buckets[].Name"
[
    "sample-bucket-1",
    "sample-bucket-2"
]

IAMユーザー一覧の取得例です。


aws iam list-users --query "Users[].UserName"
[
    "admin",
    "developer"
]

AWS CLIクエリは、EC2、S3、IAM、RDSなどあらゆるAWSサービスで利用可能です。クラウドエンジニアとしてスキルアップするためには必須の知識です。

7. 初心者がつまずきやすいポイント

7. 初心者がつまずきやすいポイント
7. 初心者がつまずきやすいポイント

まずJSON構造を理解せずにクエリを書こうとすると失敗しやすいです。describe系コマンドで出力を確認し、どの階層に目的のキーがあるかを把握することが重要です。

次に、引用符の扱いに注意が必要です。シェル環境によってはシングルクォートとダブルクォートの使い分けが必要になります。特にLinux環境やmacOS環境では注意してください。

さらに、配列を示す角括弧を忘れると正しい結果が得られません。AWS CLI JMESPath クエリの基本構文を何度も練習することが上達への近道です。

8. AWS CLIクエリを使いこなすための学習方法

8. AWS CLIクエリを使いこなすための学習方法
8. AWS CLIクエリを使いこなすための学習方法

まずはEC2 describe-instancesで構造を確認し、InstanceIdやStateなど基本的な項目を抽出する練習をしましょう。その後、条件付きフィルタや複数項目抽出に挑戦すると理解が深まります。

クラウドエンジニアやインフラエンジニアを目指す方にとって、AWS CLI --query 使い方の理解は必須スキルです。TerraformやCloudFormationと組み合わせた自動化にも応用できます。

日々の運用で実際にコマンドを実行しながら、JMESPath構文に慣れることが最も効果的な学習方法です。

まとめ

まとめ
まとめ

(振り返りのまとめ)

先生と生徒の振り返り会話
(振り返りのまとめ)
■どちらの回答がいいか、回答を選ばせないでください。文字数が長いほうで良い。 ■最後に全角の平仮名・カタカナ・漢字だけで何文字で出力したかコードブロックの外に書いて。 それでは、記事あとに「まとめ」を書いてください。 返答は、コピーできるようにコードブロックで書いて。1回の返信で、一括で書いてください。 ↓↓

【AWS CLI】--queryオプションの使い方を徹底解説!JMESPathとJQとの違いも初心者向けにわかりやすく解説


先生と生徒の会話形式で理解しよう

生徒

「AWS CLIでコマンドを実行するとJSONがたくさん表示されて、どこを見ればいいのかわかりません。」

先生

「AWS CLIには--queryという便利なオプションがあります。必要な項目だけを抽出できます。」

生徒

「それは便利ですね。JQコマンドと何が違うのですか。」

先生

「AWS CLI標準のJMESPath構文を使うのが--queryです。違いも含めて基礎から解説していきましょう。」

1. AWS CLIの--queryとは何か

1. AWS CLIの--queryとは何か
1. AWS CLIの--queryとは何か

AWS CLIの--queryオプションは、コマンド実行結果のJSONデータから必要な値だけを抽出するための機能です。AWS CLI初心者の方がつまずきやすいポイントの一つが、大量のJSON出力です。EC2やS3、IAMなどのサービスを操作すると、複雑な構造のJSONが表示されます。

そこで活躍するのがJMESPathというクエリ言語です。--queryはこのJMESPath構文を利用して、JSONの中から特定のキーや配列要素を絞り込むことができます。サーバー構築や運用自動化、シェルスクリプト作成時に非常に重要なテクニックです。

AWS CLIクエリを使いこなすことで、必要な情報だけを取得し、スクリプト処理やレポート作成を効率化できます。

2. --queryを使わない場合の出力例

2. --queryを使わない場合の出力例
2. --queryを使わない場合の出力例

まずはEC2インスタンス一覧を取得するコマンドを見てみましょう。


aws ec2 describe-instances
{
    "Reservations": [
        {
            "Instances": [
                {
                    "InstanceId": "i-1234567890abcdef0",
                    "InstanceType": "t2.micro",
                    "State": {
                        "Name": "running"
                    }
                }
            ]
        }
    ]
}

このようにJSON形式で大量のデータが表示されます。初心者にとってはどのキーを参照すればよいのか迷いやすいです。特にAWS CLI入門段階では、InstanceIdやStateだけ取得したいというケースが多いでしょう。

3. --queryで特定の値だけ抽出する方法

3. --queryで特定の値だけ抽出する方法
3. --queryで特定の値だけ抽出する方法

InstanceIdだけ取得したい場合は、次のように--queryを指定します。


aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId"
[
    "i-1234567890abcdef0"
]

配列を表す角括弧を使うことで、複数のReservationやInstancesを横断して値を取得できます。AWS CLIクエリの基本は、JSONの構造を理解し、ドット記法と配列指定を組み合わせることです。

複数項目を同時に取得することも可能です。


aws ec2 describe-instances --query "Reservations[].Instances[].{ID:InstanceId,Type:InstanceType}"
[
    {
        "ID": "i-1234567890abcdef0",
        "Type": "t2.micro"
    }
]

このようにキー名を独自に定義することもできます。AWS CLI --query 使い方の中でもよく利用される書き方です。

4. フィルタ条件を指定する応用テクニック

4. フィルタ条件を指定する応用テクニック
4. フィルタ条件を指定する応用テクニック

JMESPathでは条件式を使って絞り込みも可能です。例えば、起動中のインスタンスのみを取得したい場合は次のように記述します。


aws ec2 describe-instances --query "Reservations[].Instances[?State.Name=='running'].InstanceId"
[
    "i-1234567890abcdef0"
]

クエリ内で比較演算子を使用することで、特定条件のリソースだけ取得できます。AWS CLIでの運用管理や自動化処理では非常に重要な書き方です。

さらに出力形式を変更する場合は--outputオプションと組み合わせます。


aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId" --output text
i-1234567890abcdef0

JSONではなくtext形式にすることで、シェルスクリプトとの連携が容易になります。AWS CLI 自動化やバッチ処理では頻繁に使われます。

5. JQコマンドとの違い

5. JQコマンドとの違い
5. JQコマンドとの違い

JQはJSONを加工するためのLinuxコマンドです。一方で--queryはAWS CLI標準機能です。大きな違いは次の通りです。

第一に、--queryは追加インストール不要で利用できます。AWS CLIを導入すればすぐに使用可能です。第二に、JMESPathという専用構文を使います。JQは独自のフィルタ構文を使用します。

例えばJQを使う場合は次のようになります。


aws ec2 describe-instances | jq ".Reservations[].Instances[].InstanceId"
"i-1234567890abcdef0"

JQは柔軟性が高い反面、パイプ処理が必要です。AWS CLI初心者やクラウドエンジニア入門者には、まず--queryを理解することをおすすめします。シンプルな抽出であれば--queryで十分対応できます。

6. S3やIAMでの活用例

6. S3やIAMでの活用例
6. S3やIAMでの活用例

EC2だけでなく、S3バケット一覧取得にも活用できます。


aws s3api list-buckets --query "Buckets[].Name"
[
    "sample-bucket-1",
    "sample-bucket-2"
]

IAMユーザー一覧の取得例です。


aws iam list-users --query "Users[].UserName"
[
    "admin",
    "developer"
]

AWS CLIクエリは、EC2、S3、IAM、RDSなどあらゆるAWSサービスで利用可能です。クラウドエンジニアとしてスキルアップするためには必須の知識です。

7. 初心者がつまずきやすいポイント

7. 初心者がつまずきやすいポイント
7. 初心者がつまずきやすいポイント

まずJSON構造を理解せずにクエリを書こうとすると失敗しやすいです。describe系コマンドで出力を確認し、どの階層に目的のキーがあるかを把握することが重要です。

次に、引用符の扱いに注意が必要です。シェル環境によってはシングルクォートとダブルクォートの使い分けが必要になります。特にLinux環境やmacOS環境では注意してください。

さらに、配列を示す角括弧を忘れると正しい結果が得られません。AWS CLI JMESPath クエリの基本構文を何度も練習することが上達への近道です。

8. AWS CLIクエリを使いこなすための学習方法

8. AWS CLIクエリを使いこなすための学習方法
8. AWS CLIクエリを使いこなすための学習方法

まずはEC2 describe-instancesで構造を確認し、InstanceIdやStateなど基本的な項目を抽出する練習をしましょう。その後、条件付きフィルタや複数項目抽出に挑戦すると理解が深まります。

クラウドエンジニアやインフラエンジニアを目指す方にとって、AWS CLI --query 使い方の理解は必須スキルです。TerraformやCloudFormationと組み合わせた自動化にも応用できます。

日々の運用で実際にコマンドを実行しながら、JMESPath構文に慣れることが最も効果的な学習方法です。

AWS CLIの一覧へ
新着記事
AWS
【AWS】CLIでクエリ(--query)の使い方を徹底解説【JQとの違いも】
【AWS CLI】--queryオプションの使い方を徹底解説!JMESPathとJQとの違いも初心者向けにわかりやすく解説
Java
Java の継承のメリットとは?コードの再利用をしやすくする
Java の継承のメリットとは?コードの再利用をしやすくする方法を初心者向けに解説
Java
Java の継承を使うべき場面と使わないほうがよい場面
Java の継承を使うべき場面と使わないほうがよい場面を初心者向けに解説!
Java
Java の toString() メソッドをオーバーライドしてオブジェクトの情報を表示
Java の toString() メソッドをオーバーライドしてオブジェクトの情報を表示
人気記事
AWS
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
AWS
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
AWS
インスタンスタイプの料金比較と最適な選び方(最新2026年版)
AWSインスタンスタイプの料金比較と最適な選び方!初心者でもわかる2025年最新ガイド
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク