dehio3’s diary

仕事、生活、趣味のメモ

jq1.5をインストールして、Route53で特定の文字列を含むレコードを抽出する。

はじめに

環境の調査で特定の文字列を含むレコードを全て取得したかったのでaws_clijqを使って実現した。

とりあえず特定のzoneのレコードを全て一行ずつ表示

aws route53 list-resource-record-sets --hosted-zone-id /hostedzone/xxxxxxxxxx | jq -c -r '.ResourceRecordSets[]'

特定のNameのレコードを表示(完全一致)

aws route53 list-resource-record-sets --hosted-zone-id /hostedzone/xxxxxxxxxx | jq -c -r '.ResourceRecordSets[] | select( .Name == "test.example.com." )'

特定の文字列をNameに含むレコードを表示

aws route53 list-resource-record-sets --hosted-zone-id /hostedzone/xxxxxxxxxx | jq -c -r '.ResourceRecordSets[] | select( .Name | test("^test") )'

こけた・・

error: test is not defined
.ResourceRecordSets[] | select( .Name | test("^test") )
                                        ^^^^
1 compile error

???

jqで階層構造になったデータから特定の値を持った、特定の階層のデータを抽出するとき - つれづれ日記

jq 1.5から正規表現を使えるmatch()とtest()がある。

$ jq -V
jq version 1.3

だめじゃん・・・

jqのアップデート

$ yum check-update | grep jq
$

アップデートが既存のリポジトリだと無い。。

作業メモ:CentOS6.5 64bit へのjqインストール | My diary for @halchiyo

どうやらただバイナリを置くだけで使えるらしい。

github.com

とりあえずローカルに取得

mkdir ~/bin
wget https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 -O ~/bin/jq
chmod +x ~/bin/jq
 ./bin/jq -V
jq-1.5

やったー!!

特定の文字列をNameに含むレコードを表示(再)

aws route53 list-resource-record-sets --hosted-zone-id /hostedzone/xxxxxxxxxx | jq -c -r '.ResourceRecordSets[] | select( .Name | test("^test") )'

やったーとれたー!