複数アカウントのRDS(MySQL)のVersionを取得する。

はじめに

複数アカウント管理していると、
「RDS(MySQL)のVersionって何使ってたっけ… ?」
「5.7.x ってどのアカウントで使ってたっけ… ?」ってあるあるじゃないですか?

マネジメントコンソール見て回るのも良いけど、管理しているアカウントが多いと、現実的じゃないですよねw

って事で、jqの練習も兼ねて、
aws-cliとjqを組み合わせてさくっと作ってみました。
カスタマイズして、こんな使い方も出来んじゃね?とかあれば、是非是非教えて下さい!

動作環境

  • Amazon Linux AMI release 2017.03
  • aws-cli/1.11.83 Python/2.7.12 Linux/4.9.32-15.41.amzn1.x86_64 botocore/1.5.46

jq インストール

# yum install jq
Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main                                                | 2.1 kB     00:00
amzn-updates                                             | 2.3 kB     00:00
Resolving Dependencies
--> Running transaction check
---> Package jq.x86_64 0:1.5-1.2.amzn1 will be installed
--> Processing Dependency: jq-libs(x86-64) = 1.5-1.2.amzn1 for package: jq-1.5-1                                                                                                     .2.amzn1.x86_64
--> Processing Dependency: oniguruma for package: jq-1.5-1.2.amzn1.x86_64
--> Processing Dependency: libjq.so.1()(64bit) for package: jq-1.5-1.2.amzn1.x86                                                                                                     _64
--> Processing Dependency: libonig.so.2()(64bit) for package: jq-1.5-1.2.amzn1.x                                                                                                     86_64
--> Running transaction check
---> Package jq-libs.x86_64 0:1.5-1.2.amzn1 will be installed
---> Package oniguruma.x86_64 0:5.9.1-3.1.2.amzn1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package          Arch          Version                  Repository        Size
================================================================================
Installing:
 jq               x86_64        1.5-1.2.amzn1            amzn-main         44 k
Installing for dependencies:
 jq-libs          x86_64        1.5-1.2.amzn1            amzn-main        121 k
 oniguruma        x86_64        5.9.1-3.1.2.amzn1        amzn-main        149 k

Transaction Summary
================================================================================
Install  1 Package (+2 Dependent packages)

Total download size: 314 k
Installed size: 885 k
Is this ok [y/d/N]: y
Downloading packages:
(1/3): jq-1.5-1.2.amzn1.x86_64.rpm                         |  44 kB   00:00
(2/3): jq-libs-1.5-1.2.amzn1.x86_64.rpm                    | 121 kB   00:00
(3/3): oniguruma-5.9.1-3.1.2.amzn1.x86_64.rpm              | 149 kB   00:00
--------------------------------------------------------------------------------
Total                                              2.6 MB/s | 314 kB  00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : oniguruma-5.9.1-3.1.2.amzn1.x86_64                           1/3
  Installing : jq-libs-1.5-1.2.amzn1.x86_64                                 2/3
  Installing : jq-1.5-1.2.amzn1.x86_64                                      3/3
  Verifying  : oniguruma-5.9.1-3.1.2.amzn1.x86_64                           1/3
  Verifying  : jq-1.5-1.2.amzn1.x86_64                                      2/3
  Verifying  : jq-libs-1.5-1.2.amzn1.x86_64                                 3/3

Installed:
  jq.x86_64 0:1.5-1.2.amzn1

Dependency Installed:
  jq-libs.x86_64 0:1.5-1.2.amzn1      oniguruma.x86_64 0:5.9.1-3.1.2.amzn1

Complete!

CSVファイル準備

↓の様にチェックしたいアカウントのIAMユーザの
AccessKeyとSeacretKeyをカンマ区切りにして、並べてください。
※事故も怖いのでReadOnlyのIAMユーザでやりましょうね!

rds-ver-check.csv
AKIATTDOLZZ6XXXXYYYY,rmgioaAGHriaKGAeig/angoiaemMgamrionaogga
AKIATTDOLZZ6DDDDYYYY,8n098q2tmo98afe$nuigpoRh/UxFNZigabOmp+cj
・
・
・

スクリプト作成

jqを使って、
Engine が mysql かつ
Version に 5.7. が含まれる
という条件で、DBInstance名とVersionNoを取得してます。
※保存した後、実行権限付与して下さいね!

rds-ver-check.sh
#!/bin/sh

export AWS_DEFAULT_REGION=ap-northeast-1
CSV_FILE="$1"
for line in `cat ${CSV_FILE} | grep -v ^#`
do
  AWS_AK=`echo ${line} | cut -d ',' -f 1`
  AWS_SK=`echo ${line} | cut -d ',' -f 2`
  export AWS_ACCESS_KEY_ID=${AWS_AK}
  export AWS_SECRET_ACCESS_KEY=${AWS_SK}

  aws rds describe-db-instances | jq -r -c '.DBInstances[] | select( (.Engine == "mysql") and (.EngineVersion | contains("5.7.")) ) | .DBInstanceIdentifier + " " + .EngineVersion'
done

実行結果

実行するときにCSVファイルを引数として、指定して下さいね!

# ./rds-ver-check.sh rds-ver-check.csv
account01-jump-db01 5.7.17
account01-jump-db02 5.7.10
account02-jump-db01 5.7.16
account02-jump-db02 5.7.17
account03-jump-db03 5.7.17

おわりに

jqの練習がてら使ってみましたが、いいですね!
応用していろんなモノに使えると思うので、良かったらご参考下さい!