はじめに

円安が進行しています。この記事を書いている2022年4月3日時点で約122円です。

私の個人AWS環境でも意外と大きな金額になってしまいまして、適当に作って放置しているEC2なんかを終了させてできるだけAWSへの課金は抑えたいところです。

とはいうものの、どのリージョンに構築したかを1つ1つ見ていくのは面倒です。

aws-cliだとaws configureで定義したリージョンのEC2インスタンス一覧を表示してくれますが、全てのリージョンを表示してはくれません。

ということで、全てのリージョンのEC2インスタンスを出力するワンライナーです。

コマンド

ということで、コマンドはこれです。

    aws ec2 describe-regions | awk '{print $3}' | xargs -n 1 -I{} -P 5 aws --region {} ec2 describe-instances

以下のように表示されます。インスタンスを終了させたので、initiated shutdownの表示となっています。

    RESERVATIONS	449671225256	r-0c78523785507c0d1
    INSTANCES	0	x86_64		False	True	xen	ami-0ab0bbbd329f565e6	i-008dbc94773e0a716	t2.micro	radio	2022-04-02T21:51:53.000Z			/dev/xvda	ebs	User initiated (2022-04-02 21:52:49 GMT)	hvm
    MONITORING	disabled
    PLACEMENT	ap-northeast-1a		default
    STATE	48	terminated
    STATEREASON	Client.UserInitiatedShutdown	Client.UserInitiatedShutdown: User initiated shutdown
    RESERVATIONS	449671225256	r-0de3f43906ea05938
    INSTANCES	0	x86_64		False	True	xen	ami-0c02fb55956c7d316	i-0a052bda230bffea0	t2.micro	2022-04-02T21:22:58.000Z			/dev/xvda	ebs	User initiated (2022-04-02 21:53:11 GMT)	hvm
    MONITORING	disabled
    PLACEMENT	us-east-1a		default
    STATE	48	terminated
    STATEREASON	Client.UserInitiatedShutdown	Client.UserInitiatedShutdown: User initiated shutdown   

aws configureでデフォルトの出力フォーマットをtextにしているので、awkを使ってます。jsonな方はjqを入れると同じように出力されると思います。

確認した環境

以下の環境で確認しています。

クライアントOS

    $ cat /etc/redhat-release 
    CentOS Linux release 7.4.1708 (Core) 

awc-cli

    $ aws --version
    aws-cli/1.14.28 Python/2.7.5 Linux/3.10.0-693.21.1.el7.x86_64 botocore/1.8.35

aws configure

    $ aws configure
    AWS Access Key ID [****************FJGG]: 
    AWS Secret Access Key [****************D5Ra]: 
    Default region name [ap-northeast-1]: 
    Default output format [text]: