AWS CLIのdescribe-instancesの使い方を完全ガイド!初心者向けにfilter・query・tagも解説
生徒
「AWS CLIでEC2の情報を取得したいんですが、どうすればいいですか?」
先生
「それならdescribe-instancesコマンドを使うといいですよ。インスタンス情報の取得にとても便利です。」
生徒
「インスタンス名やタグで絞り込むこともできますか?」
先生
「もちろん。--filtersや--queryオプションを使えば、柔軟に絞り込みできますよ。順を追って解説していきましょう。」
1. describe-instancesとは?
aws ec2 describe-instancesは、AWS CLIでEC2インスタンスの情報を取得するための基本コマンドです。
このコマンドを使うことで、インスタンスID、パブリックIP、タグ、ステータスなど、さまざまな情報を得ることができます。
aws ec2 describe-instances
このまま実行すると、全リージョンの全インスタンス情報が大量に表示されます。 実務では、特定のインスタンスや条件に絞って使うことが一般的です。
2. filterオプションで条件を絞り込む
--filtersオプションを使うと、特定の条件に一致するインスタンスだけを取得できます。
例えば、タグに基づいたフィルタや、インスタンスタイプによる絞り込みが可能です。
aws ec2 describe-instances \
--filters "Name=instance-type,Values=t2.micro"
タグによるフィルタの例も見てみましょう。
aws ec2 describe-instances \
--filters "Name=tag:Name,Values=WebServer"
このように、フィルタはNameとValuesのセットで指定し、複数指定も可能です。
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オプションを併用すると、表形式で見やすく表示できます。
4. tagを使った柔軟なインスタンス管理
EC2インスタンスにはタグ(key-value形式)を設定できます。 たとえばNameやEnv(環境名)などをタグにすることで、インスタンスの識別や検索が容易になります。
以下のようにタグ付きインスタンスのみを抽出できます:
aws ec2 describe-instances \
--filters "Name=tag:Env,Values=prod"
実際の現場では、タグによるリソース管理は非常に重要です。 大規模なAWS環境で混乱を避けるためにも、必ずタグを活用しましょう。
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. まとめ
この記事では、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を使った定期実行なども学んでいきましょう。」