こんにちは。AWS CLIが好きな福島です。
はじめに
今回は、Route53 関連の情報を取得する方法をご紹介いたします。
利用するコマンド,サブコマンド
まず、AWS CLIの構造は以下の通りです。
aws <command> <subcommand> [options and parameters]
上記を前提に今回使う <command>,<subcommand>
は、以下の通りです。
<command>
route53
<subcommand>
* list-hosted-zones ⇒ホストゾーンの一覧を出力するコマンド * list-resource-record-sets ⇒レコード一覧を出力するコマンド
ホストゾーンの一覧
- 実行コマンド
ヘッダーなし
aws route53 list-hosted-zones --query "HostedZones[].[Name,Id,Config.PrivateZone,ResourceRecordSetCount]" --output text
ヘッダー付き
# echo "Name,Id,PrivateZone,ResourceRecordSetCount" > /tmp/awscli.tmp ;\ aws route53 list-hosted-zones --query "HostedZones[].[Name,Id,Config.PrivateZone,ResourceRecordSetCount]" --output text | tr "\t" "\," >> /tmp/awscli.tmp ;\ column -s, -t /tmp/awscli.tmp
- 実行例
ヘッダーなし
# aws route53 list-hosted-zones --query "HostedZones[].[Name,Id,Config.PrivateZone,ResourceRecordSetCount]" --output text dev.example.com. /hostedzone/Z06346771NQ9TTU22V2AU False 16 fk-test-private.com. /hostedzone/Z0434480BVBQ2RX5253A True 4
ヘッダー付き
# echo "Name,Id,PrivateZone,ResourceRecordSetCount" > /tmp/awscli.tmp ;\ > aws route53 list-hosted-zones --query "HostedZones[].[Name,Id,Config.PrivateZone,ResourceRecordSetCount]" --output text | tr "\t" "\," >> /tmp/awscli.tmp ;\ > column -s, -t /tmp/awscli.tmp Name Id PrivateZone ResourceRecordSetCount dev.example.com. /hostedzone/Z06346771NQ9TTU22V2AU False 16 fk-test-private.com. /hostedzone/Z0434480BVBQ2RX5253A True 4
レコードの一覧
- 実行コマンド
hosted_zone_id="ホストゾーンのIDを指定します。"
aws route53 list-resource-record-sets \ --hosted-zone-id ${hosted_zone_id} \ --query "ResourceRecordSets[].[Name,Type,AliasTarget.DNSName,AliasTarget.EvaluateTargetHealth,ResourceRecords[0].Value,ResourceRecords[1].Value,ResourceRecords[2].Value,ResourceRecords[3].Value]" --output text
- 実行例
hosted_zone_id="/hostedzone/Z0434480BVBQ2RX5253A"
# aws route53 list-resource-record-sets \ > --hosted-zone-id ${hosted_zone_id} \ > --query "ResourceRecordSets[].[Name,Type,AliasTarget.DNSName,AliasTarget.EvaluateTargetHealth,ResourceRecords[0].Value,ResourceRecords[1].Value,ResourceRecords[2].Value,ResourceRecords[3].Value]" --output text fk-test-private.com. NS None None ns1.example.com. ns2.example.com. ns3.example.com. ns4.example.com. fk-test-private.com. SOA None None ns1.example.com. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400 None None None test.fk-test-private.com. A None None 1.1.1.1 None None None
全ホストゾーンのレコード一覧
- 実行コマンド
aws route53 list-hosted-zones --query "HostedZones[].[Id,Name]" --output text | while read line do hosted_zone_id=$(echo $line | awk '{print $1}') hosted_zone_name=$(echo $line | awk '{print $2}') echo "############################ " echo "#### ${hosted_zone_name}" echo "############################ " echo "Name,Type,DNSName,EvaluateTargetHealth,ResourceRecords[0],ResourceRecords[1],ResourceRecords[2],ResourceRecords[3]" > /tmp/awscli.tmp aws route53 list-resource-record-sets --hosted-zone-id ${hosted_zone_id} \ --query "ResourceRecordSets[].[Name,Type,AliasTarget.DNSName,AliasTarget.EvaluateTargetHealth,ResourceRecords[0].Value,ResourceRecords[1].Value,ResourceRecords[2].Value,ResourceRecords[3].Value]" --output text \ | tr "\t" "," >> /tmp/awscli.tmp column -s, -t /tmp/awscli.tmp done
- 実行例
# aws route53 list-hosted-zones --query "HostedZones[].[Id,Name]" --output text | while read line > do > hosted_zone_id=$(echo $line | awk '{print $1}') > hosted_zone_name=$(echo $line | awk '{print $2}') > echo "############################ " > echo "#### ${hosted_zone_name}" > echo "############################ " > echo "Name,Type,DNSName,EvaluateTargetHealth,ResourceRecords[0],ResourceRecords[1],ResourceRecords[2],ResourceRecords[3]" > /tmp/awscli.tmp > aws route53 list-resource-record-sets --hosted-zone-id ${hosted_zone_id} \ > --query "ResourceRecordSets[].[Name,Type,AliasTarget.DNSName,AliasTarget.EvaluateTargetHealth,ResourceRecords[0].Value,ResourceRecords[1].Value,ResourceRecords[2].Value,ResourceRecords[3].Value]" --output text \ > | tr "\t" "," >> /tmp/awscli.tmp > column -s, -t /tmp/awscli.tmp > done ############################ #### example.com. ############################ Name Type DNSName EvaluateTargetHealth ResourceRecords[0] ResourceRecords[1] ResourceRecords[2] ResourceRecords[3] example.com. A fk-test-alb2-xxxxx.ap-northeast-1.elb.amazonaws.com. False None None None None example.com. NS None None ns1.example.com. ns2.example.com. ns3.example.com. ns4.example.com. example.com. SOA None None ns1.example.com. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400 None None None ############################ #### dev.example.com. ############################ Name Type DNSName EvaluateTargetHealth ResourceRecords[0] ResourceRecords[1] ResourceRecords[2] ResourceRecords[3] dev.example.com. NS None None ns1.example.com. ns2.example.com. ns3.example.com. ns4.example.com. dev.example.com. SOA None None ns1.example.com. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400 None None None test.dev.example.com. A None None 1.1.1.1 None None None
おまけ
ホストゾーンを先頭に列に追加するバージョン。
- 実行コマンド
echo "HostZoneName,Name,Type,DNSName,EvaluateTargetHealth,ResourceRecords[0],ResourceRecords[1],ResourceRecords[2],ResourceRecords[3]" ;\ aws route53 list-hosted-zones --query "HostedZones[].[Id,Name]" --output text | while read line do hosted_zone_id=$(echo $line | awk '{print $1}') hosted_zone_name=$(echo $line | awk '{print $2}') aws route53 list-resource-record-sets --hosted-zone-id ${hosted_zone_id} \ --query "ResourceRecordSets[].[Name,Type,AliasTarget.DNSName,AliasTarget.EvaluateTargetHealth,ResourceRecords[0].Value,ResourceRecords[1].Value,ResourceRecords[2].Value,ResourceRecords[3].Value]" --output text \ | tr "\t" "," > /tmp/awscli.tmp awk -v h=${hosted_zone_name} '{print h,",",$1}' /tmp/awscli.tmp | sed 's/ , /,/g' done
- 実行例
HostZoneName,Name,Type,DNSName,EvaluateTargetHealth,ResourceRecords[0],ResourceRecords[1],ResourceRecords[2],ResourceRecords[3] example.com.,example.com.,A,fk-test-alb2-xxxxx.ap-northeast-1.elb.amazonaws.com.,False,None,None,None,None example.com.,example.com.,NS,None,None,ns1.example.com.,ns2.example.com.,ns3.example.com.,ns4.example.com. example.com.,example.com.,SOA,None,None,ns1.example.com.,awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400,None,None,None dev.example.com.,dev.example.com.,NS,None,None,ns1.example.com.,ns2.example.com. ns3.example.com. ns4.example.com. dev.example.com.,dev.example.com.,SOA,None,None,ns1.example.com.,awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400,None,None,None dev.example.com.,test.dev.example.com.,A,None,None,1.1.1.1,None,None,None
終わりに
今回は、AWS CLIを使ってRoute 53の情報を出力するコマンドをご紹介いたしました。
どなかたのお役に立てれば幸いです。