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

  • 0
    いいね
  • 0
    コメント

    はじめに

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