Exporting DNS zonefile from Amazon Route 53

route53 export zone file
route53 cli53
aws transfer hosted zone to another account
aws route53 list-resource-record-sets
cli53 export all zones
aws cli route53
aws route 53 get records
route 53 console

I would like to export a DNS zonefile from my Amazon Route 53 setup. Is this possible, or can zonefiles only be created manually? (e.g. through http://www.zonefile.org/?lang=en)

It's not possible yet. You'll have to use the API's ListResourceRecordSets and build the zonefile yourself.

Creating records by importing a zone file, Thank you for using Route 53 service. Unfortunately, we have yet to release official tool exporting RRSets into zone files. A recommendation is  Creating records by importing a zone file. Choose Create Hosted Zone . Enter the name of your domain and, optionally, a comment. Note that the comment can't be edited later. Choose Create . Choose Import Zone File . In the Import Zone File pane, paste the contents of your zone file into the Zone

The following script exports zone details in bind format from Route53. Pass over the domain name as a parameter to script. (This required awscli to be installed and configured.)

#!/bin/bash

zonename=$1
hostedzoneid=$(aws route53 list-hosted-zones --output json | jq -r ".HostedZones[] | select(.Name == \"$zonename.\") | .Id" | cut -d'/' -f3)
aws route53 list-resource-record-sets --hosted-zone-id $hostedzoneid --output json | jq -jr '.ResourceRecordSets[] | "\(.Name) \t\(.TTL) \t\(.Type) \t\(.ResourceRecords[].Value)\n"'

Export of DNS Zone, It's not possible yet. You'll have to use the API's ListResourceRecordSets and build the zonefile yourself. Today we’ll be looking at how to backup/export an Amazon (AWS) Route 53 Hosted Zone to file. AWS makes it’s really easy for you to move your domain to them but really difficult to take all your entries out of Route 53. We recently felt the need to backup 200+ Hosted Zones and realized that AWS does not offer a native tool to help you with this.

Exporting and importing is possible with https://github.com/RisingOak/route53-transfer

Migrating a hosted zone to a different AWS account, Id" | cut -d'/' -f3) aws route53 list-resource-record-sets --hosted-zone-id during), in "Advanced" below the DNS records, there is an Export DNS file button. To export a hosted zone in AWS Route 53, follow these steps (let say you are using example.com hosted zone): Step 1: Installation – pip install route53-transfer. Step 2: Backup the zone to a CSV file: route53-transfer dump example.com backup.csv Use STDOUT instead of a file. route53-transfer dump example.com – Step 3: Restore a zone:

As stated in the comment, the cli53 is a great tool to interact with Route 53 using the command line interface.

First, configure your account keys in ~/.aws/config file:

[default]
aws_access_key_id = AK.....ZP
aws_secret_access_key = 8j.....M0

Then, use the export command:

$ cli53 export --full --debug example.com > example.com.zone 2> example.com.zone.log

Verify the example.com.zone file after export to make sure that everything is exported correctly.

You can import the zone lately:

$ cli53 import --file ./example.com.zone example.com

And if you want to transfer the Route53 zone from one AWS account to another, you can use the profile option. Just add two named accounts to the ~/.aws/config file and reference them with the profile property during export and import. You can even pipe these two commands.

Exporting DNS zonefile from Amazon Route 53, Easily backup / export DNS entries of all your domains(hosted zones) in Amazon Route 53. Amazon Route 53 can't predict when to create alias records or to use special routing types such as weighted or failover. As a result, if you import a zone file, Route 53 creates standard DNS records using the simple routing policy.

How to export a hosted zone in AWS Route 53?, cli53 - Command line tool for Amazon Route 53. Introduction Some DNS providers export broken bind files, without the trailing '.' on CNAME  Amazon Route 53 can't predict when to create alias records or to use special routing types such as weighted or failover. As a result, if you import a zone file, Route 53 creates standard DNS records using the simple routing policy.

Export Amazon Route 53 Domain DNS Entries to File, Since Route53 supports ALIAS records (which can automatically from the fact that there are two kinds of DNS entries that we want to export:  This gives you the ability to query on-premises internal zones from within your Amazon VPCs, as well as to query Route 53 Resolver private DNS from on-premises data centers. AWS released Amazon Route 53 Resolver for hybrid cloud in November 2018. This makes migration to cloud and hybrid architectures easier by solving many DNS challenges.

Amazon Route 53 FAQs, For Dyn, go to Download Your Zone File. AWS Route 53 does not support export. Instead, you can use the open source cli53 tool. Step 3: Import the record set. The Route 53 console now lets you import standard DNS zone files that can be exported from many DNS providers or standard DNS server software such as BIND. When you create a new Route 53 hosted zone for your domain, you now have the option to paste your zone file directly into the Route 53 console, and Route 53 will automatically create the records in your hosted zone.

Comments
  • Already answered here serverfault.com/questions/535631/…
  • See this tool: https://github.com/barnybug/cli53 It's a Command line script to administer the Amazon Route 53 dns service. Hope that helps
  • grrrr I can't believe the developers thought of an "Import" button and forgot "Export!"
  • Makes sense that they want to bring in business, but want to make it hard to take away business. But yes very annoying! Thanks for the reference to the cli tool.
  • They have record values that aren't RFC compliant. They wouldn't have the ability to export without loss of data.
  • Please add some explanations as well.
  • @szentmarjay-tibor You can change the following line, since it will give error if the default output is different from json. hostedzoneid=$(aws route53 list-hosted-zones | jq -r ".HostedZones[] | select(.Name == \"$zonename.\") | .Id" | cut -d'/' -f3) "'
  • to avoid the null iteration: aws route53 list-resource-record-sets --hosted-zone-id $hostedzoneid --output json | jq -jr '.ResourceRecordSets[] | "(.Name) \t(.TTL) \t(.Type) \t(.ResourceRecords[]?.Value)\n"'
  • The above comment is useful but doesn't escape (. Instead use: aws route53 list-resource-record-sets --hosted-zone-id $hostedzoneid --output json | jq -jr '.ResourceRecordSets[] | "\(.Name) \t\(.TTL) \t\(.Type) \t\(.ResourceRecords[]?.Value)\n"'
  • this command worked for me