エンジニアブログ

全リージョンのインスタンス情報を一括取得してみた

2018.09.20

初めまして、shigepi です。
周りの社員の方を見てて、役に立つものでないといけないかなぁとか色々考えたけど、 
そういう気遣いとか面倒くさいタイプなので、好き勝手にすることにしました。 
ということで、第一回目はタイトル通りです。 マネジメントコンソールって全てのリージョン並べて見れないんですよね。。。 でも、かといって新しいコンソール画面の開発は面倒くさいし、どっか作っていても 良い値段しそうです。。。
ということで、CLI を使って確認する方法を考えることにしました。 
使うものは次の通りです。

用意するもの

・AmazonLinux

・AWS CLI(※AmazonLinuxはインストール済)

・GNU Parallel

本当はね参照コマンド回せばいいんです。for とか while とかででも意外とレスポンスに時間がかかるので、並列実行させたいと思いました。

そこで、上記の Parallel コマンドを今回は使います。

使い方は簡単です。

parallel <実行したいコマンド> ::: <同時実行する引数> 

例えば 

> parallel echo ::: boku shigepi .
boku
shigepi
. 

ということで、以下実施してみた流れです。

実施手順

Parallel インストール

yum -y install parallel

ちなみに今はこれだけリージョンあるようです。

リージョン情報取得

> REGIONNAME=$(aws ec2 describe-regions --query Regions[].RegionName --output text)
> echo ${REGIONNAME}
ap-south-1 eu-west-3 eu-west-2 eu-west-1 ap-northeast-2 ap-northeast-1 sa-east-1 ca-central-1
ap-southeast-1 ap-southeast-2 eu-central-1 us-east-1 us-east-2 us-west-1 us-west-2

AWS CLI 並列実行

time parallel aws ec2 describe-instances --query 'Reservations[].Instances[].¥
[Placement.AvailabilityZone,InstanceId]' --output text --region ::: ${REGIONNAME}
ap-south-1b i-056xxxx
ap-northeast-2a i-0c9xxxx
ap-northeast-1a i-250xxxx
ap-southeast-1b i-073xxxx
ap-southeast-2a i-0e9xxxx
eu-central-1b i-076xxxx
us-east-1e i-0c8xxxx
us-east-2b i-0aaxxxx
real 0m18.186s   user   0m5.985s   sys  0m0.851s

直列での実行

for

real 0m20.735s  user   0m5.903s  sys  0m0.805s

while

real 0m20.290s  user   0m5.906s  sys  0m0.834s

まとめ

別のとこでやったら2倍近く違う結果も出ました。 
そういえばその時は「jq」コマンドを使ったような、使っていないような気が。。。 
比較的リソース少なめの環境なので、こんなものでしょう。
もっと数がある環境だと差がでるようです。 
ぜひお試しください。

今回はこれくらいで失礼します。。。

関連キーワード

この記事をシェアする

Facebook Twitter LINE はてなブックマーク

この記事を読んだ方に
おすすめの記事