Skip to content
Command line script to administer the Amazon Route 53 dns service
Pull request Compare This branch is 51 commits ahead, 94 commits behind barnybug:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


cli53 - Command line script to administer the Amazon Route 53 dns service


The latest Amazon service Route 53 is a great addition, but only has a rudimentary set of tools available at the time of release. This script fills that gap until things have caught up.


  • create hosted zones

  • delete hosted zones

  • list hosted zones

  • import to BIND format

  • export to BIND format

  • create resource records

  • delete resource records

  • works with BIND format zone files we all know and love - no need to edit <ChangeResourceRecordSetsRequest> XML!

Getting Started

Create a hosted zone:

$ bin/cli53 create

Check what we've done:

$ bin/cli53 list

Import a BIND zone file:

$ bin/cli53 import --file zonefile.txt

Replace with an imported zone, waiting for completion:

$ bin/cli53 import --file zonefile.txt --replace --wait

Manually create some records:

$ bin/cli53 rrcreate www A --ttl 3600
$ bin/cli53 rrcreate www A --ttl 3600 --replace
$ bin/cli53 rrcreate '' MX '10' '20'

Export as a BIND zone file (useful for checking):

$ bin/cli53 export

Further documentation is available, e.g.:

$ bin/cli53 --help
$ bin/cli53 rrcreate --help


Buildout Install

Buildout will download all the dependencies needed in order to run cli53.

$ python
$ bin/buildout

Once the dependencies downloaded, run cli53

$ bin/cli53

If the step bin/buildout fails with the cryptic error message 'pkg_resources.DistributionNotFound: distribute', then you might try with distribute instead of setuptools:

$ python --distribute
$ bin/buildout

You need to set your Amazon credentials in the environment as AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY or configure them in ~/.boto. For more information see:


As Amazon limits operations to a maximum of 100 changes, if you perform a large operation that changes over 100 resource records it will be split. An operation that involves deletes, followed by updates such as an import with --replace will very briefly leave the domain inconsistent. You have been warned!

Something went wrong with that request. Please try again.