aws界隈ではaws cliがjsonを返すことで話題になったようで、以下の記事などで紹介されています。
suz-lab : EC2の価格のJSONを"jq"でいじってみた
jqの1.2では、containsという関数が追加されたようで、jsonに特定の要素が含まれているかどうかの真偽値を返すようです。
これをつかって簡単なAPIテストが出来るんじゃないかと思い、試してみました。
こんな感じのJSONがあったとします。
$ curl -s http://aws.amazon.com/jp/ec2/pricing/pricing-on-demand-instances.json | jq '.config.regions[].region' "us-east" "us-west-2" "us-west" "eu-ireland" "apac-sin" "apac-tokyo" "apac-syd" "sa-east-1"
containsで指定(config.regions[].region)の要素にap-northeast-1があるかどうかを検査します。
$ curl -s http://aws.amazon.com/jp/ec2/pricing/pricing-on-demand-instances.json | jq 'contains({config: {regions: [{region: "ap-northeast-1"}]}})' false
無いようです。
ではapac-tokyoがあるかどうかを検査します。
$ curl -s http://aws.amazon.com/jp/ec2/pricing/pricing-on-demand-instances.json | jq 'contains({config: {regions: [{region: "apac-tokyo"}]}})' true
ありました!
わざわざ導入に手間がかかるツールを使うまでもない簡単な検査であれば、ワンライナーで終わるコマンドラインをシェルにいくつか書いてまとめて実行するというのも手段としてありかもしれません。
以上です。