この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
本日 AWS Command Line Interface (以下AWS CLI)のバージョン1.2.0がリリースされました。気になるアップデートを列挙しますと
- Amazon Elastic Transcoderの音声サポートの対応 (こちらで説明しています)
- --query で検索ができるようになった
- バンドルインストーラ (pythonがあればpipなしでもインストール可能)
でしょうか。ちょうど、RDSのサポートしているデータベースのバージョンを調べて欲しいというリクエストがありましたので新しいAWS CLIでどのように出来るか?というのを調べた結果を書いてゆきます。
AWS CLI 1.1までの方法
欲しい情報はDBエンジン(mysql,sql server,oracle)とそのバージョン情報となります。
こんな形で出力が可能です。
$ aws rds describe-db-engine-versions --output table
------------------------------------------------------------------------------
| DescribeDBEngineVersions |
+----------------------------------------------------------------------------+
|| DBEngineVersions ||
|+--------------------------------------+-----------------------------------+|
|| DBEngineDescription | MySQL Community Edition ||
|| DBEngineVersionDescription | MySQL 5.1.50 ||
|| DBParameterGroupFamily | mysql5.1 ||
|| Engine | mysql ||
|| EngineVersion | 5.1.50 ||
|+--------------------------------------+-----------------------------------+|
以下省略...
ここから、データを抜きだすのはちょっと大変そうです。
1.2での方法
--query オプションを付けることで結果の抽出が可能です。JMESPath(ジェームズパスというらしいです) というbotoのライブラリを利用しているようです。jqに似た感じの構文となります。構文はこちらになります
では、データベースとバージョンを抜きだしてみましょう
$ aws rds describe-db-engine-versions --output table --query 'DBEngineVersions[*].[Engine,EngineVersion]'
---------------------------------------
| DescribeDBEngineVersions |
+----------------+--------------------+
| mysql | 5.1.50 |
| mysql | 5.1.57 |
| mysql | 5.1.61 |
| mysql | 5.1.62 |
| mysql | 5.1.63 |
| mysql | 5.1.69 |
| mysql | 5.1.71 |
| mysql | 5.5.12 |
| mysql | 5.5.20 |
| mysql | 5.5.23 |
以下省略...
ずいぶんすっきりしましたね。構文的にはjqに似ているのですが微妙に異なる感じです。今回の用途程度でしたら、それほど違いはないと感じました。
jqでの方法
jqをつかった場合ものせます。
$ aws rds describe-db-engine-versions | jq -c '.DBEngineVersions[] | [(.Engine) , (.EngineVersion)]'
["mysql","5.1.50"]
["mysql","5.1.57"]
["mysql","5.1.61"]
["mysql","5.1.62"]
["mysql","5.1.63"]
["mysql","5.1.69"]
["mysql","5.1.71"]
["mysql","5.5.12"]
["mysql","5.5.20"]
["mysql","5.5.23"]
以下省略...
シンプルですね。ちなみにjqのクエリを書くのはしんやさんのエントリーがとても便利でした。
まとめ
AWS CLI 1.2の新機能 --queryオプションについて簡単に説明しました。
--outputで表形式やJSONにも出来る点はawsコマンドのほうが便利でした。
jqは標準では入っていないので、、、とも書こうとおもいましたがawsコマンドもAmazon Linuxのデフォルトでは1.1ですので変わりはないですね。検索の構文がどちらが使い易いか? アウトプットに何を求めるか? というのが1.2とつかうか、jqを利用するかどうかのポイントになるとおもいます。