1. AWS CLIを利用すると色々なリソース情報が見れます!
AWS EC2をコンソールから作成し、管理するサーバが多くなったら、一覧が欲しいですよね。
コンソールでは、分かり難いし、一覧を管理したい。そこで、AWS CLIコマンドを利用すると
EC2のリソース情報を取得し、且つ、必要な情報に絞って出力するように出来ます。
今回はEC2の情報を出力してみます。
2. まずはAWS CLIをインストールしよう!
Linuxのコンソール画面で以下のコマンドを実行してインストールします
$curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o "awscliv2.zip"
$unzip awscliv2.zip
$sudo ./aws/install
3. AWS CLIを使ってみよう!
3.1 AWS CLI のバージョンを確認する!
aws --version
aws-cli/2.4.15 Python/3.8.8
最新でなかった場合はバージョンアップしましょう
バージョンアップ方法は以下です
3.2 AWS CLIのバージョンアップ方法!
curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --update
aws --version
aws-cli/2.4.29 Python/3.8.8
2022/03/28時点で最新バージョンです
詳しくは、以下を参照 AWS CLI 最新バージョンをインストールまたは更新する https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html
3.3 利用中のリージョンでec2 インスタンスの情報をすべて出力してみよう!
利用中のリージョンに存在するEC2インスタンスのすべての情報を出力するには以下のように記述します SQLの select * from ec2 みたいなものです
aws ec2 describe-instances
Json形式で どばーっと出力されます
3.2 出力する情報を絞りこんでみよう!
上記コマンドでは沢山の情報が出力されるのでqueryオプションを使用して情報を絞り込みます
Sqlの select name,OS from EC2 みたいなものです。EC2名とOSに絞り込みます
aws ec2 describe-instances \
--query "Reservations[*].Instances[*].[{OS:PlatformDetails,Name:Tags[0].Value}]" \
--out table
queryオプションの設定は以下のようになります
Json形式で出力されるので、これを踏まえて絞り込む内容を記述します
まず、Reservations[*].Instances[*] (画像C 階層) トップレベルがReservations
一つ下の階層がInstances これがリスト[]になっているので、
すべてを対象にする為に、Reservations[*].Instances[*] と指定します
更に下の階層(画像D PlatformDetails項目)の値と、
同じ階層にある(画像E Name項目)Tags:[0]リストの最初の項目Value値 を指定します
.[{OS:PlatformDetails,Name:Tags[0].Value}]
{key1:value,key2:value}のdict形式にフォーマットして、項目名と値を出力するようにする --out table
テーブル形式にすることで見た目が分かり易すくなります
2.3 出力項目を増やしてみよう!(インスタンスタイプ)
aws ec2 describe-instances \
--query "Reservations[*].Instances[*].[{OS:PlatformDetails,Name:Tags[0].Value,Type:InstanceType}]" \
--out table
追加したqueryオプションの設定は以下のようになります [{OS:PlatformDetails,Name:Tags[0].Value,Type:InstanceType}]"
下の階層の (画像G Instancetype項目) の値を追加して、出力するようにする
。
2.5 出力形式をTEXTに変更してみよう!
aws ec2 describe-instances \
--query "Reservations[*].Instances[*].[{OS:PlatformDetails,Name:Tags[0].Value,Type:InstanceType}]" \
--out text
Text形式で出力して、情報を加工し易くすることが可能になります
4 応用してみよう!
利用可能なインスタンスタイプ、アーキテクチャ、仮想化、プロセッサー、Hypervisorを
出力しよう。インスタンスタイプの変更可否(互換性)を確認したい場合に重宝します。
aws ec2 describe-instance-types \
--query "InstanceTypes[*].[{InstanceType:InstanceType,Hypervisor:Hypervisor, \
CPU:ProcessorInfo.SupportedArchitectures[0], \
Clock_Ghz:ProcessorInfo.SustainedClockSpeedInGhz}]" \
--out table
5 感想
query を利用することで、必要な項目を絞ることができました。 jqを利用しても可能ですが、こちらを利用しても、同様のことができそうです。最初は書き方に悩みましたが、pythonのlist[],dict{}を連想すると、分かり易いです。次回はRDSの情報出力についてです。
参考URL AWS CLI の query による絞り込み
https://qiita.com/draco/items/fa09ae0c2f51de9de449
Linux版その2 RDSの情報出力 https://opt-p.co.jp/blog/aws/post-1718/
Linux版その3 VPCの情報出力 https://opt-p.co.jp/blog/aws/post-2080/
Linux版その4 色々な情報出力 https://opt-p.co.jp/blog/aws/post-2421/