はじめに
環境の調査で特定の文字列を含むレコードを全て取得したかったのでaws_cli
とjq
を使って実現した。
とりあえず特定の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
どうやらただバイナリを置くだけで使えるらしい。
とりあえずローカルに取得
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") )'
やったーとれたー!