[小ネタ] EC2の全リージョンの状況をAWS CLIで確認してみた

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

日本の多くの利用者は東京リージョンを使うかと思いますが、検証やシステム要件などの理由で他のリージョンを使うこともあるかと思います。
全リージョンのEC2の状況を確認する機会があったのですが、AWSコンソールでは切り替えの手間を感じたのでAWS CLIで確認してみました。

EC2が対応するリージョンでディスクライブする

describe-regionsコマンドにて、Amazon EC2がサポートされるリージョンの一覧を取得します。
リージョンでループし、インスタンス一覧の取得を--regionオプションを指定して行います。
queryオプションの絞り込みはユーザーガイドが詳しいです。

regions=(`aws ec2 describe-regions --query Regions[*].RegionName --output text`)

for region in ${regions[@]}
do echo "[${region}]"
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[Placement.AvailabilityZone, State.Name, InstanceId]' --output text --region ${region}
echo "---------------------"
done

コマンド実行結果の抜粋

表示がないリージョンは、EC2が存在しません。
ap-northeast-1(東京リージョン)にはEC2が6台あります。

[ap-south-1]
---------------------
[eu-west-3]
---------------------
[eu-west-2]
---------------------
[eu-west-1]
---------------------
[ap-northeast-2]
---------------------
[ap-northeast-1]
ap-northeast-1c	stopped	i-xxxxxxxxxxx
ap-northeast-1c	stopped	i-xxxxxxxxxxx
ap-northeast-1c	stopped	i-xxxxxxxxxxx
ap-northeast-1a	stopped	i-xxxxxxxxxxx
ap-northeast-1a	running	i-xxxxxxxxxxx
ap-northeast-1a	stopped	i-xxxxxxxxxxx
---------------------

他のサービスは配列を作ろう

他のサービスは、AWS のリージョンとエンドポイントを参考に配列を作ると良いでしょう。
以下の例は、Amazon GuardDutyを対応するリージョンで有効化する例です。

regions=( ap-south-1 \
ap-northeast-2 \
ap-southeast-1 \
ap-southeast-2 \
ap-northeast-1 \
ca-central-1 \
eu-central-1 \
eu-west-1 \
eu-west-2 \
us-east-1 \
us-east-2 \
us-west-1 \
us-west-2 \
sa-east-1 \
)

for region in ${regions[@]}
do echo "[${region}]"
aws guardduty create-detector --enable --region ${region}
echo "---------------------"
done

おわりに

全リージョンのEC2の状況をAWS CLIで確認してみました。 AWSコンソールで様々なリージョンの状況を確認したり、設定をするのは手間がかかります。 AWS CLIも選択肢の1つに入れていただければと思います。

参考