こんにちは。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の情報を出力するコマンドをご紹介いたしました。
どなかたのお役に立てれば幸いです。