Edited at

AWSで稼働中のEC2とRDSのインスタンスの一覧を取得できると管理が捗りました

Screen Shot 2018-12-01 at 0.01.15.png

AWS便利ですね!re:Inventも盛り上がっているようで楽しそうです。

便利な半面AWSのインスタンス管理は大変です。

インスタンスの一覧を簡単に取得することで管理しやすくならないかなということで取得してみました。

https://github.com/yousan/aws_instance_list


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

Screen Shot 2018-12-01 at 0.06.50.png

引数にリージョンと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を調整することでカラムを変更できます。


もっとやりたいこと


  1. 料金の管理をしたいのでインスタンスタイプから概算料金を出したいです。

  2. リージョン決め打ちなのでそこのループを回したいです。(現在は手動でループ)-> 解決しました

上記その他にヒントやアイディアがあれば是非教えてください!


参考サイト

AWS CLIを使ってEC2インスタンスの情報を取得する - Qiita