AWS便利ですね!re:Inventも盛り上がっているようで楽しそうです。
便利な半面AWSのインスタンス管理は大変です。
インスタンスの一覧を簡単に取得することで管理しやすくならないかなということで取得してみました。
aws_instance_list.sh
#!/usr/bin/env bash
PROFILE=${1:-default}
# 手動でのコマンド
# ヘッダー行書き出し
echo -e "リージョン\tタイプ\tIDや名前\tIPアドレスや作成者\tインスタンスタイプ\t状態"
for REGION in ap-northeast-1 us-east-1 us-east-2 us-west-1 us-west-2 ca-central-1 eu-central-1 eu-west-1 eu-west-2 eu-west-3 ap-northeast-2 ap-northeast-3 ap-southeast-1 ap-southeast-2 ap-south-1 sa-east-1 ; do
# EC2のリスト取得
aws --region ${REGION} --profile ${PROFILE} ec2 describe-instances --output text \
--query 'Reservations[].Instances[].[Tags[?Key==`Name`].Value|[0],PublicIpAddress,InstanceType,State.Name]' \
| sed -e 's/^/'${REGION}$'\tEC2\t''/g'
# RDSのリスト取得
aws --region ${REGION} --profile ${PROFILE} rds describe-db-instances --output text \
--query 'DBInstances[].[DBInstanceIdentifier,MasterUsername,DBInstanceClass,State.Name]' \
| sed -e 's/^/'${REGION}$'\tRDS\t''/g'
done
上記のコードを動かすと、CSV(タブ区切り)でEC2とRDSのインスタンスのリストを取得できます。
$ bash aws_instance_list.sh
リージョン タイプ IDや名前 IPアドレスや作成者 インスタンスタイプ
ap-northeast-1 EC2 hoge.l2tp.org redmine 192.0.2.1 t2.micro
pbcopy
に渡してGoogleスプレッドシートなどに貼ると見やすいです。
$ bash aws_instance_list.sh | pbcopy
引数にリージョンとAWS CLIのプロファイルを渡せます。
$ bash aws_instance_list.sh ap-northeast-1 l2tp | pbcopy
GitHub上のコードを実行する場合には| bash -s
で引数を渡します。
curl -s https://raw.githubusercontent.com/yousan/aws_instance_list/1bd5e0bae20de6201bf161b55b95e6059ece2f02/aws_instance_list.sh | bash -s ap-northeast-1 default | pbcopy
起動と修了
RDS
RDSインスタンスの停止コマンドです。
aws default rds stop-db-instance --db-instance-identifier my-great-aurora-instance
インスタンス名がEC2のようなハッシュ値じゃないです。
出ている項目
現在はインスタンス名、IPアドレス(RDSならMasterUsername)、インスタンスタイプを出しています。AWS CLIの--query
を調整することでカラムを変更できます。
もっとやりたいこと
- 料金の管理をしたいのでインスタンスタイプから概算料金を出したいです。
- リージョン決め打ちなのでそこのループを回したいです。(現在は手動でループ)-> 解決しました
上記その他にヒントやアイディアがあれば是非教えてください!