カテゴリ: AWS EC2 更新日: 2026/03/24

AWS CLIのdescribe-instancesの使い方を完全ガイド!初心者向けにfilter・query・tagも解説

183
describe-instancesの使い方を初心者向けに解説(filter/query/tag)

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

生徒

「AWS CLIでEC2の情報を取得したいんですが、どうすればいいですか?」

先生

「それならdescribe-instancesコマンドを使うといいですよ。インスタンス情報の取得にとても便利です。」

生徒

「インスタンス名やタグで絞り込むこともできますか?」

先生

「もちろん。--filters--queryオプションを使えば、柔軟に絞り込みできますよ。順を追って解説していきましょう。」

1. describe-instancesとは?

1. describe-instancesとは?
1. describe-instancesとは?

aws ec2 describe-instancesは、AWS CLIでEC2インスタンスの情報を取得するための基本コマンドです。 このコマンドを使うことで、インスタンスID、パブリックIP、タグ、ステータスなど、さまざまな情報を得ることができます。


aws ec2 describe-instances

このまま実行すると、全リージョンの全インスタンス情報が大量に表示されます。 実務では、特定のインスタンスや条件に絞って使うことが一般的です。

2. filterオプションで条件を絞り込む

2. filterオプションで条件を絞り込む
2. filterオプションで条件を絞り込む

--filtersオプションを使うと、特定の条件に一致するインスタンスだけを取得できます。 例えば、タグに基づいたフィルタや、インスタンスタイプによる絞り込みが可能です。


aws ec2 describe-instances \
  --filters "Name=instance-type,Values=t2.micro"

タグによるフィルタの例も見てみましょう。


aws ec2 describe-instances \
  --filters "Name=tag:Name,Values=WebServer"

このように、フィルタはNameValuesのセットで指定し、複数指定も可能です。

3. queryオプションで出力を整形する

3. queryオプションで出力を整形する
3. queryオプションで出力を整形する

出力されるJSONは情報が多く、読みづらい場合があります。--queryオプションを使えば、表示項目を絞って見やすく整形できます。


aws ec2 describe-instances \
  --query "Reservations[*].Instances[*].InstanceId"

上記の例では、インスタンスIDだけをリストで取得できます。 他にもパブリックIPやステータスなども以下のように取得可能です。


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

また、--output textオプションを併用すると、表形式で見やすく表示できます。

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

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

※ Amazon広告リンク

4. tagを使った柔軟なインスタンス管理

4. tagを使った柔軟なインスタンス管理
4. tagを使った柔軟なインスタンス管理

EC2インスタンスにはタグ(key-value形式)を設定できます。 たとえばNameやEnv(環境名)などをタグにすることで、インスタンスの識別や検索が容易になります。

以下のようにタグ付きインスタンスのみを抽出できます:


aws ec2 describe-instances \
  --filters "Name=tag:Env,Values=prod"

実際の現場では、タグによるリソース管理は非常に重要です。 大規模なAWS環境で混乱を避けるためにも、必ずタグを活用しましょう。

5. よくあるdescribe-instancesの活用パターン

5. よくあるdescribe-instancesの活用パターン
5. よくあるdescribe-instancesの活用パターン

■特定のステータスのインスタンスだけを取得


aws ec2 describe-instances \
  --filters "Name=instance-state-name,Values=running"

■複数の条件をANDで絞り込み


aws ec2 describe-instances \
  --filters \
    "Name=instance-state-name,Values=stopped" \
    "Name=tag:Team,Values=DevOps"

■JSON形式ではなくテキスト形式で出力


aws ec2 describe-instances --output text

このように、describe-instancesは柔軟に出力形式や抽出条件を設定できるため、スクリプトや自動化処理にも活用されます。

6. 実行結果のフォーマットを切り替える(--output)

6. 実行結果のフォーマットを切り替える(--output)
6. 実行結果のフォーマットを切り替える(--output)

AWS CLIのデフォルト出力はJSON形式ですが、用途に合わせて形式を変更することができます。--outputオプションを活用することで、人間が見やすい形式や、他のプログラムで処理しやすい形式に切り替えられます。

主に使われるのは以下の3種類です。

  • json(デフォルト): すべての情報を構造化して出力します。詳細な確認に最適です。
  • table: 枠線付きの表形式で表示します。パッと見て状況を把握したい時に便利です。
  • text: タブ区切りのテキストで出力します。Linuxコマンドのgrepawkと組み合わせて処理する際に役立ちます。

プログラミング未経験の方でも分かりやすいように、Javaのプログラムで「出力形式を切り替えるスイッチ」のようなイメージを例えてみましょう。


public class OutputFormatExample {
    public static void main(String[] args) {
        String format = "table"; // ここを json や text に変えるイメージ

        if (format.equals("table")) {
            System.out.println("+----------------+-----------+");
            System.out.println("| InstanceID     | State     |");
            System.out.println("+----------------+-----------+");
            System.out.println("| i-0123456789   | running   |");
            System.out.println("+----------------+-----------+");
        } else {
            System.out.println("{ \"InstanceId\": \"i-0123456789\", \"State\": \"running\" }");
        }
    }
}

+----------------+-----------+
| InstanceID     | State     |
+----------------+-----------+
| i-0123456789   | running   |
+----------------+-----------+

7. インスタンスのプライベートIPアドレスを特定する

7. インスタンスのプライベートIPアドレスを特定する
7. インスタンスのプライベートIPアドレスを特定する

実務では、踏み台サーバーから各インスタンスへ接続するために「プライベートIPアドレス」を調べたい場面がよくあります。describe-instancesを使えば、特定のタグ(Nameタグなど)を持つインスタンスのIPアドレスだけを素早く抜き出すことができます。

以下のコマンドは、「Nameタグが WebServer であるインスタンス」の「プライベートIPアドレス」だけを表示する例です。


aws ec2 describe-instances \
  --filters "Name=tag:Name,Values=WebServer" \
  --query "Reservations[*].Instances[*].PrivateIpAddress" \
  --output text
10.0.1.50

このように、--filtersで対象を絞り込み、--queryで必要な項目(PrivateIpAddress)だけを指定することで、画面をスクロールして探す手間が省けます。

8. エラーが出たときのチェックポイント

8. エラーが出たときのチェックポイント
8. エラーが出たときのチェックポイント

コマンドを実行しても、意図した結果が表示されなかったりエラーが出たりすることがあります。初心者が特につまずきやすいポイントを整理しました。

  • リージョン設定の確認: インスタンスが存在するリージョンと、CLIの設定(Region)が一致しているか確認しましょう。--region ap-northeast-1のように明示的に指定することもできます。
  • 権限(IAM)の不足: 実行しているユーザーに「ec2:DescribeInstances」の権限が付与されている必要があります。
  • 大文字・小文字の区別: フィルタの「Values」に指定する値は、大文字と小文字を区別します(例:running と Running は別物)。

もし何も表示されない場合は、まずフィルタを外して全件表示されるか試してみるのが解決の近道です。


# フィルタなしで全件のIDだけ表示して、疎通確認する例
aws ec2 describe-instances --query "Reservations[*].Instances[*].InstanceId" --output text
i-0123456789abcdef0
i-0987654321fedcba0

正しく情報が表示されれば、AWS CLIの初期設定はバッチリです。これらのテクニックを組み合わせて、効率的なインフラ管理を目指しましょう。

まとめ

まとめ
まとめ

この記事では、AWS CLIのdescribe-instancesコマンドについて、基本的な使い方から実務で役立つ応用パターンまでを網羅的に解説しました。AWS環境をCLIベースで管理したい初心者の方にとって、describe-instancesはEC2の状況把握に欠かせない重要なコマンドです。

まず最初に、aws ec2 describe-instancesの基本的な使い方を紹介し、その後で--filtersを使ったインスタンスタイプやタグによる条件の絞り込み方法を解説しました。実際の業務では「Webサーバーだけを確認したい」「停止中のインスタンスを探したい」といったニーズが頻繁に出てきます。そのようなとき、フィルタオプションは非常に役立ちます。

また、--queryオプションによってJSON出力を整形することで、目的の情報だけを取得でき、視認性が大きく向上します。さらに--output textと併用すれば、CLIツールやスクリプトと連携しやすいテキスト形式に変換できるのも大きな利点です。

さらに、タグを活用したインスタンス管理も重要なポイントです。タグの活用によって、インスタンスの環境(本番、開発)やチーム別に分類でき、運用効率が向上します。これにより、大規模環境でもリソースの整理整頓がしやすくなり、インフラ管理が非常にスマートになります。

最後には、よく使われるパターンを紹介しました。describe-instancesの活用は、AWS CLIを使ったインフラ管理の第一歩であり、自動化やスクリプト化にもつながる重要な技術です。

以下に、本記事で紹介したコマンドの要点を再掲しておきます:


# すべてのインスタンスを表示
aws ec2 describe-instances

# 特定のインスタンスタイプに絞り込み
aws ec2 describe-instances \
  --filters "Name=instance-type,Values=t2.micro"

# タグ Name=WebServer に一致するインスタンスを表示
aws ec2 describe-instances \
  --filters "Name=tag:Name,Values=WebServer"

# インスタンスIDだけを取得
aws ec2 describe-instances \
  --query "Reservations[*].Instances[*].InstanceId"

# 状態・IPなどを取得
aws ec2 describe-instances \
  --query "Reservations[*].Instances[*].[InstanceId,PublicIpAddress,State.Name]"

# 出力をテキスト形式にする
aws ec2 describe-instances --output text

# 特定のタグでフィルタ
aws ec2 describe-instances \
  --filters "Name=tag:Env,Values=prod"

このように、describe-instancesは非常に多機能であり、AWS CLIを使いこなすうえでの要とも言えるコマンドです。初心者の方も、フィルターやクエリを少しずつ試しながら習得していきましょう。

先生と生徒の振り返り会話

生徒

「最初はdescribe-instancesって難しそうだと思ってたけど、実際にやってみたら、タグやクエリで結構簡単に絞り込めるんですね!」

先生

「そのとおり。最初はJSONが長くて戸惑うかもしれないけど、--query--filtersを使いこなせば、必要な情報だけをすぐに取り出せるようになります。」

生徒

「これでスクリプトとかに組み込んで、自動化にも活かせそうですね。」

先生

「まさにそれが狙いです。日常の運用で毎回手動で見るより、必要なインスタンス情報だけを抽出して、レポート化したり監視ツールに渡したりもできますよ。」

生徒

「タグ運用もちゃんとすれば、describe-instancesで効率よく状況確認ができそうです。次はこれを組み込んだバッチ処理とか挑戦してみたいです!」

先生

「いいですね。次のステップではjqとの連携や、cronを使った定期実行なども学んでいきましょう。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

AWS CLIのdescribe-instancesとは何をするコマンドですか?

AWS CLIのdescribe-instancesは、Amazon EC2インスタンスの情報を一覧で取得するための基本コマンドです。インスタンスID、ステータス、パブリックIP、タグなどを確認でき、AWS環境の状況把握やインフラ管理に欠かせない存在です。
AWS EC2の一覧へ
新着記事
Flutter
Flutterでのリポジトリパターンの実装例
Flutterでリポジトリパターンを実装する方法を完全解説!初心者向けアーキテクチャ設計入門
Java
Java の Objects クラスを使って null チェックを簡単にする方法
JavaのObjectsクラスの使い方を完全ガイド!nullチェックを簡単・安全に行う方法
Java
Java の UUID クラスを使って一意の識別子を作成する方法
JavaのUUIDクラスの使い方を完全ガイド!初心者でもわかる一意な識別子の作成方法
Java
Java の古い日付クラス(Date, Calendar)と新しい日付 API の違い
JavaのDateとCalendarと新しい日付APIの違いとは?初心者向け完全ガイド
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】VPCとは?初心者向けに仕組み・用途・できることをわかりやすく解説
【AWS】VPCとは?初心者向けに仕組み・用途・できることをわかりやすく解説

🔌 USBポート不足を解消

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

UGREEN USB-Cハブを見る

※ Amazon広告リンク