【AWS】アカウント内にあるEC2インスタンスの情報をお手軽にスプレッドシートに出力する【spread sheet】
どもども!メリークリスマス(1日遅れ)!
早いもので2021年ももうすぐ終わりますね。来年の目標は個人サービスを作ることです、がんばります!
さて、年末になってくるとAWSを管理するエンジニアへリソースの再整理・確認依頼が寄せられることが増えてくると思います。
例えば"今AWSアカウント内にあるEC2インスタンスの情報をスプレッドシートにまとめておいて"といった依頼があった場合、皆さんはどのように対応するでしょうか。
AWSコンソール画面上やAWS CLIで確認、スプレッドシートに一つずつ入力なんてしていると管理するEC2の台数によっては途方もない作業になってしまいます。
そこで今回はアカウント内にあるEC2インスタンスの情報をお手軽にスプレッドシートに出力する方法をご紹介したいと思います。
EC2の情報をCSV形式で取得する
今回の作業をする上で確認が必要な点は以下の3点です。
・AWSコンソール画面にログインできる
・EC2の一覧を表示するIAM権限を持っている
・AWS CloudShellを起動するIAM権限を持っている
Adminstrator権限やPowerUser権限であれば特に問題となることはないでしょう。
確認が取れましたら、早速作業を始めましょう!まずはAWSコンソール画面にログインし、AWS CloudShellを立ち上げてください。
AWS CloudShellがピンとこない方は下記公式リファレンスから概要を確認してみてください。こちらを使用するとクレデンシャルを使用することなくAWS CLIを利用できたりと大変便利です。
AWS CloudShell – AWS リソースへのコマンドラインアクセス
コンソール画面右上のこちらのアイコンをクリックすることで起動することができます。
それではAWS CLIを用いてEC2の情報をcsv形式で出力しましょう。今回使用するコマンドは下記記事を参考にさせていただきます。
AWSの情報をCSV出力するワンライナー
それでは下記コマンドをカレントディレクトリで実行してみてください。
aws ec2 describe-instances \
--query "Reservations[].Instances[].{InstanceId:InstanceId, InstanceType:InstanceType, State:State.Name, Name: Tags[?Key==\`Name\`].Value, LaunchTime:LaunchTime}" \
--output json |
jq -r ".[] | [.Name[0], .InstanceId, .InstanceType, .State, .LaunchTime] | @csv" > ec2-info.csv
特にエラーがなければec2-info.csvというファイルが作成されネームタグ、インスタンスID、インスタンスタイプ、起動状態、起動時間がcsv形式で記載されているはずです!(ファイル名はお好みで変更していただいでも問題ありません。)
ではこちらのファイルをローカルPCにダウンロードしましょう。CloudShell画面右上"Action"より"Downloadfile"をクリック、ファイル名は"ec2-info.csv(あるいは設定したファイル名)"をしていしファイルをダウンロードしてください。
これでEC2情報一覧の取得が完了しました。
スプレッドシートに出力
ここまできたら、スプレッドシートにcsvファイルをインポートするのみです。
出力対象のスプレッドシートを開き、左上"ファイル"から"インポート"、"アップロード"タブから先ほど出力したcsvファイルをアップロードし"新しいシートを作成する"を選択し"インポート"をクリックします。
するとなんということでしょう。見事現在のスプレッドシートにEC2の情報一覧が出力されたシートが追加されました!
あとはシートをお好みの形に整形してご利用ください!
最後に
今回は例として3台のインスタンスを起動して情報を取得してみましたが、大きなサービスを運用する企業は数十台のインスタンスを起動するというケースも珍しくないと思います。
そんな時このようにサクッと情報を取得し、スプレッドシートで管理できるというのは非常に便利なのではないでしょうか。
また今回の記事の内容は汎用性があり、EC2以外のリソースでも使用することができますし、例えばEC2でcron実行してやることである程度自動化もできると思います。
皆様の年末業務の一助となりますように…。
最後まで読んでいただきありがとうございました!
↓オススメ教材