はじめに
複数アカウント管理していると、
「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の練習がてら使ってみましたが、いいですね!
応用していろんなモノに使えると思うので、良かったらご参考下さい!