AWS CLI コマンドの基本操作を EC2 インスタンスの情報取得で試してみた

AWS CLI コマンドの基本操作を EC2 インスタンスの情報取得で試してみた

AWS CLI を使って EC2 インスタンスの情報取得や絞り込み、出力形式の変更を実際に試しながら、基本的なオプションの使い方を試してみました。
2026.10.26

はじめに

最近、AWS CLI で AWS 環境の設定や状態を確認する機会が増えてきました。
これまではマネジメントコンソールから確認することが多かったのですが、AWS CLI でも様々な情報を取得できるため、どのようなコマンドがあるのか、実際に操作しながら理解を深めたいと思いました。

そこで今回は、AWS CLI コマンドの操作に慣れることを目的に、EC2 インスタンスの情報取得や絞り込み、出力形式の変更などを試してみます。

検証環境

AWS CLI(aws-cli/2.38.4 Python/3.14.6 Darwin/25.6.0 exe/arm64)
リージョン:東京(ap-northeast-1)
AWS CLI の認証設定済みの検証環境

AWS CLI の実行環境を確認する

まずは AWS CLI のバージョンを確認します。

$ aws --version
aws-cli/2.38.4 Python/3.14.6 Darwin/25.6.0 exe/arm64

バージョンが表示され、AWS CLI を使用できることが確認できました。

続いて、利用可能なプロファイルを確認します。

$ aws configure list-profiles

今回の環境ではプロファイルは何も表示されませんでした。
ただし、プロファイルが表示されなくても、環境変数や IAM ロール (EC2 インスタンスプロファイルなど) 、IAM Identity Center、CloudShell の認証情報など、別の方法で認証情報が提供されている場合があります。

そこで、現在使用している認証情報の情報 (呼び出し元) を確認します。

$ aws sts get-caller-identity
{
    "UserId": "AIDAXXXXXXXXXXXXXXXXX",
    "Account": "123456789012",
    "Arn": "arn:aws:iam::123456789012:user/example-user"
}

実行すると、以下の 3 項目を取得できました。

  • UserId:実行者を識別する ID
  • Account:AWS アカウント ID
  • Arn:実行者の ARN

これにより、現在どの AWS アカウントの認証情報を使用しているのかを確認できました。

EC2 インスタンスの情報を取得する

続いて、EC2 インスタンスの情報を取得してみます。

$ aws ec2 describe-instances --region ap-northeast-1 --query 'Reservations[].Instances[].[InstanceId,InstanceType,State.Name]' --output table
------------------------------------------------
|               DescribeInstances              |
+----------------------+------------+----------+
|  i-xxxxxxxxxxxxxxxx |  t2.micro  |  stopped |
|  i-xxxxxxxxxxxxxxxx |  t2.micro  |  stopped |
|  i-xxxxxxxxxxxxxxxx |  t3.micro  |  stopped |
|  i-xxxxxxxxxxxxxxxx |  t3.large  |  running |
+----------------------+------------+----------+

今回使用したオプションは以下のとおりです。

オプション 内容
--region 対象リージョンを指定
--query 取得結果から表示する項目を抽出
--output 出力形式を指定

--query では、JMESPath というクエリ言語を使用します。
今回のクエリでは、各 EC2 インスタンスのインスタンス ID、インスタンスタイプ、状態を取り出しています。
なお、最初は State.Name を誤って State,Name と入力してしまい、以下のエラーが発生しました。

aws: [ERROR]: Row should have 1 elements, instead it has 2

. を , と書き間違えたことで、State と Name が別々の項目として扱われ、Stateオブフェクト全体が取得されてしまいました。その結果、表形式への変換時にエラーが発生しました。
State.Name に修正したところ、インスタンスの状態を正常に表示できました。

起動中の EC2 インスタンスだけを取得する

次は --filters を使用して、起動中の EC2 インスタンスだけを取得してみます。

$ aws ec2 describe-instances --region ap-northeast-1 --filters "Name=instance-state-name,Values=running" --query 'Reservations[].Instances[].[InstanceId,InstanceType,State.Name]' --output table
------------------------------------------------
|               DescribeInstances              |
+----------------------+------------+----------+
|  i-xxxxxxxxxxxxxxxx |  t3.large  |  running |
+----------------------+------------+----------+ 

先ほどのコマンドに以下を追加しました。

--filters "Name=instance-state-name,Values=running"

ここで気になったのは、--filters と --query の違いです。

  • --filters:AWS サービス側で条件に一致するデータを絞り込む
  • --query:取得したデータを AWS CLI 側で加工・抽出する

今回の場合、--filters で起動中のインスタンスに対象を絞り、--query で表示する項目を指定しています。
似た役割に見えますが、処理される場所や目的が異なることを理解できました。

出力形式を比較してみる

最後に、--output オプションを変更して出力形式の違いを確認します。
先ほどのコマンドの --output table を json と text に変更して、それぞれを実行しました。

$ aws ec2 describe-instances --region ap-northeast-1 --filters "Name=instance-state-name,Values=running" --query 'Reservations[].Instances[].[InstanceId,InstanceType,State.Name]' --output json
[
    [
        "i-xxxxxxxxxxxxxxxx",
        "t3.large",
        "running"
    ]
]

$ aws ec2 describe-instances --region ap-northeast-1 --filters "Name=instance-state-name,Values=running" --query 'Reservations[].Instances[].[InstanceId,InstanceType,State.Name]' --output text
i-xxxxxxxxxxxxxxxx     t3.large        running
出力形式 表示の特徴
table 罫線付きの表形式で表示される
json JSON 形式でデータの構造を確認できる
text タブ区切りのテキストで表示される

JSON 形式では、配列や文字列の構造を確認できました。
一方、text 形式では、JSON のような角括弧やダブルクォーテーションがなくなり、今回指定した 3 項目がタブ区切りで並んで表示されました。
結果を目視で確認するときは table 形式、データの構造を確認するときは json 形式、シェルコマンドなどで加工するときは text 形式、といった使い分けができそうです。
また、全てのインスタンスを取得し JSON 形式で確認していた際、画面の最後に (END) と表示され、コマンドが入力できなくなりました。これはページャーが起動している状態で、q キーを押すとコマンド入力画面に戻れました。

まとめ

今回は、AWS CLI で EC2 インスタンスの情報を取得しながら、基本的なオプションを試してみました。
特に、--filters と --query の違いや、--output による表示形式の変更について、実際に操作することで理解を深められました。
また、コマンドの入力ミスによるエラーも経験し、クエリの記述方法や出力データの構造を確認することの重要性を感じました。

参考資料

クラスメソッドオペレーションズ株式会社について

クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、 IT・AI をフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイトをぜひご覧ください。
※2026 年 1 月 アノテーション㈱から社名変更しました。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事