[AWS]CLIを使ってAmazon Route53上のDNSレコード情報を取得してついでにCSVファイルにしちゃったの巻

スポンサーリンク
AWS
Amazon-Route-53

Amazon Route53を利用する上で、DNSレコード情報を一旦整理したいなと思ったんです。で、Web画面からポチポチ見てくるのもSEっぽくないなと思って、aws cliを用いたコマンドでの情報取得に挑戦しました!

AWS CLIコマンドのインストールは省略します。
AWS CLI インストールなどのキーワードで検索すれば優良なサイトがヒットしてくると思うのでそちらを参照されてください。

スポンサーリンク

Amazon Route53に登録されているDNSレコードをCSVとして取得する方法

まずは、以下のコマンドを使ってRoute53で登録されているホストゾーンIDを取得する。

aws route53 list-hosted-zones --output json

そうすると、以下のような結果が出てくると思います。

{
"HostedZones": [
{
"Id": "/hostedzone/ZWDFMxxx11235",
"Name": "hogehoge.jp.",
"CallerReference": "xxxxxxA5-0xx8-xxxE-xxxF-54xxxx24ExxA",
"Config": {
"PrivateZone": false
},
"ResourceRecordSetCount": 11
},
{
"Id": "/hostedzone/Z34xxFHJ1234H",
"Name": "foofoo.com.",
"CallerReference": "B5xxxxx2D-xx32-Cxxx-9xxB-5xxxFBxxDCC4",
"Config": {
"PrivateZone": false
},
"ResourceRecordSetCount": 11
}
]
}

この中で、「”id”:~」ってなってるところがホストゾーンIDですね。
この方法で見るのも良しですし、「jq」コマンドで整形してみても良いです。

aws route53 list-hosted-zones --output json | jq -r ".HostedZones[] | .Id "

実行結果は以下のようになります。

/hostedzone/ZWDFMxxx11235
/hostedzone/Z34xxFHJ1234H

上記取得したホストゾーンIDをもとにゾーンに登録されているレコードを参照します。

 

DNSレコード情報を取得する方法

さて、ホストゾーンIDを確認できたら、次は下記コマンドを実行します。
ホストゾーンIDの指定方法は「/hostedzone/ホストゾーンID」でも「ホストゾーンID」でも挙動は同じです。

aws route53 list-resource-record-sets --hosted-zone-id /hostedzone/ZWDFMxxx11235  --output json

そうするとずらーーーっとレコードが表示されます。
こんな感じ↓

{
"ResourceRecordSets": [
{
"Name": "hogehoge.jp.",
"Type": "A",
"TTL": 60,
"ResourceRecords": [
{
"Value": "xxx.xxx.xxx.10"
}
]
},
{
"Name": "hogehoge.jp.",
"Type": "MX",
"TTL": 300,
"ResourceRecords": [
{
"Value": "10 mail.hogehoge.jp."
}
]
},
....省略
]
}

このまんまだと見にくいので、先程と同じようにjqコマンドを用いて整形して、CSVファイルとして出力します。

コマンドの過程を並べておくので、動作の違いはご自身で確認してください。

aws route53 list-resource-record-sets --hosted-zone-id /hostedzone/ZWDFMxxx11235 --output json | jq -r " .ResourceRecordSets"

↑このままだとうじゃーぁぁぁって情報が出てくるので、ちょっと整形↓

aws route53 list-resource-record-sets --hosted-zone-id /hostedzone/ZWDFMxxx11235 --output json | jq -r " .ResourceRecordSets | .[] | [ .Name, .Type, .TTL , ( .ResourceRecords[] | .Value )]"

↑これで、Name, Type, TTL, ResourceRecordsのValueのみが表示されるようになったけども、、それでもまだ見にくいので、もうひと手間!↓

DNSレコード情報をCSVフォーマットで出力する

jqコマンドで「@csv」って噛ますとCSV形式でフォーマットされるんです。便利~

aws route53 list-resource-record-sets --hosted-zone-id /hostedzone/ZWDFMxxx11235 --output json | jq -r " .ResourceRecordSets | .[] | [ .Name, .Type, .TTL , ( .ResourceRecords[] | .Value )] | @csv"

2024/04/10 上記だと、Route 53のレコードが Alias の場合に下記のようなエラーになる。
jq: error (at <stdin>:926): Cannot iterate over null (null)

なので、下記に変更し、リソースが null であっても対応できるように変更 ※CloudFront向けAliasレコードの対処を追加

aws route53 list-resource-record-sets --hosted-zone-id /hostedzone/ZWDFMxxx11235 --output json | jq -r ".ResourceRecordSets | .[] | [ .Name, .Type, .TTL , (if .ResourceRecords then (.ResourceRecords[] | .Value) elif .AliasTarget then .AliasTarget.DNSName else \"-\" end) ] | @csv"

実行結果はこんな感じ

"hogehoge.jp.","A",60,"xxx.xxx.xxx.10"
"alias.hogehoge.jp.","A",,"xxxxxx.cloudfront.net."
"hogehoge.jp.","MX",300,"10 mail.hogehoge.jp."

これでCSV形式になったので、あとは「>」使って、適当なファイルに出力すれば完了ですね!

めでたしめでたし。

参考:
https://docs.aws.amazon.com/cli/latest/reference/route53/
https://docs.aws.amazon.com/cli/latest/reference/route53/list-hosted-zones.html
https://docs.aws.amazon.com/cli/latest/reference/route53/list-resource-record-sets.html

 

コメント

  1. superweibu より:

    こんにちは
    大分久しぶりの投稿をされておりますね。
    trippyboyさんはいかがでしょうか?
    お元気でしょうか?

    私は今も相変わらず零細のSEです。
    ボランティアで回答してたらgoogleのエキスパートになったり
    インフラ勉強会というところで勉強させていただいてるところです。
    tera termの後継を引き継いだ方とお友達になったり
    低レイヤを勉強中したいのですが、
    基本情報の勉強となかなかうまくいかずですはい。

  2. trippyboy より:

    お久しぶりです!ヽ(=´▽`=)ノ
    歳を重ねるに連れて仕事もプライベートも盛んになってブログ書いてる時間を取れていませんでした(^_^;)
    無事に元気にやっております!

    ボランティア回答ってかなり自分のスキルアップになりますよね。
    私もyahoo知恵袋でカテゴリーマスタしてましたね〜
    やはりアウトプットの場って大切ですね。

    tera termの後継ぎとは、、、 ま、まさかのtera term開発者だったんですか!?驚

    時代がOSSに流れてきているので、OSS loverとしては最近は嬉し楽しくSEやってます(*^^*)

  3. superweibu より:

    開発者は寺西さんOSS化したのは
    平田豊さんです。私と同じ年齢でしたw
    老害にならないよう、
    これからは若者に教わりながら生きていく所存です。
    最近はあっちこっちの勉強会に参加する予定なんで
    お会いすることがあるかもしれませんね。
    そのときはどうぞよろしく。

タイトルとURLをコピーしました