LoginSignup
0
1

More than 1 year has passed since last update.

【AWS】CLIでEC2やRDSの情報をCSV形式で一挙に取得する方法(jqコマンドやsedコマンドの利用方法・意味も解説)

Posted at

概要

  • AWSで使用中のEC2やRDSの情報を一覧で取得したい時ってありますよね。そんな時は、以下のコマンドをAWS CLIで実施すればすぐに取得できます。

前提

  • aws-cli: 2.11.10
  • jq: 1.5
  • CSV形式で取得する前提

AWS CLIコマンドで取得する方法

  • AWS CloudShellにアクセスします。
    • AWS CLI(Command Line Interface)がインストールされており、認証情報の設定がされている方は、そちらから実施してもOKです。
  • CLIで、describeコマンド(AWSのリソースに関する情報を取得するためのコマンド)を利用します。
    • --queryオプションを使用して、取得する情報のフィールドを指定し、--outputオプションを使用して、出力形式を指定できます。
    • 具体的には以下の通りです。
  • 他にも色々オプションがありますが、今回は最低限のものだけ記載しておきます。
    • 例えば、--filtersオプションを使えば、実行中のインスタンスの情報のみ取得することができます。

EC2の情報を調べる場合

  • Nameタグ, インスタンスタイプ, プラットフォーム(OS)を知りたい場合
aws ec2 describe-instances \
--query 'Reservations[*].Instances[*].[Tags[?Key==`Name`].Value | [0], InstanceType, PlatformDetails]' \
--output text | sed -e 's/\t/,/g'
  • PlatformDetailsは、インスタンスのプラットフォームがLinuxベースの場合です。
    • Windowsインスタンスの場合はPlatformになります。
  • 単純なテキスト形式で出力されるのでCSV形式に変換します。
    • sed:テキスト処理を行うコマンド
    • -e:後続する文字列がスクリプトとして解釈されることを指定
    • s/\t/,/g:スクリプトの中で実行される置換コマンドで、タブ文字(\t)をカンマ(,)に置換することを指定
      • g:全てのタブ文字を置換することを指定します。

RDSの情報を調べる場合

  • DB インスタンス ID、インスタンスクラス、ストレージ、エンジンを知りたい場合
aws rds describe-db-instances \
--query 'DBInstances[*].[DBInstanceIdentifier, DBInstanceClass, AllocatedStorage, Engine]' \
--output text | sed -e 's/\t/,/g'
  • 上記はEC2の時と同様、sedコマンドを使用して取得する
  • jqコマンドを利用して、以下のように取得することもできます。
aws rds describe-db-instances \
--query 'DBInstances[*].[DBInstanceIdentifier, DBInstanceClass, AllocatedStorage, Engine]' \
--output json \
| jq -r 'map(select(. != null) | @csv)[]'
  • jq:JSONデータのフィルタリングや変換を行うコマンドラインツール
  • -r:ダブルクォーテーションを除去
  • map(select(. != null) | @csv)[]:配列からnull値を除去して、カンマ区切りのCSV形式に変換

--output csvで出力できないのか?

  • --output text--output csvにすればCSV形式で取得できるんじゃないの?って思いましたが、以下のようなメッセージが返ってきてしまいます。AWS CLIには存在しないオプションみたいです。できるようにしてほしいなぁ。需要ありそうだけど。。。
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help

aws: error: argument --output: Invalid choice, valid choices are:

json                                     | text                                    
table                                    | yaml                                    
yaml-stream 

参考記事

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1