[AWS] AWC CLI 1.2 の queryオプションを試してみた
はじめに
本日 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を利用するかどうかのポイントになるとおもいます。