This page documents some tips and tricks I've learned for using Amazon Route 53 DNS services.
The API ID you use to manage Route 53 will require the IAM Group Policy AmazonRoute53FullAccess.
Route 53 now supports creating “static” DNS servers which can be useful if you need to register multiple domains and wish to store the address information with our registrar.
Unfortunately the usage isn't crystal clear, but if you read the API docs it's quite possible to decipher.
You first will need to create the zone itself either using the API or from the web interface. If it already exists you can skip this step.
Now find the Zone ID it will be a 16 character alphanumeric string. If you've created the zone using the API then this value was returned as part of the response upon creation. In the web interface it's the right most value in the table showing your hosted zones.
In this example our Zone ID is Z1234567890ABCDEF.
Once you know this you can use the CLI to convert the zone to make its DNS servers reusable.
# you need to have a caller reference for DNS calls to Route 53, it can be any string REF="CreateReusableDNSQuay01" RE_ZONEID=Z1234567890ABCDEF aws route53 create-reusable-delegation-set --caller-reference $REF --hosted-zone-id $RE_ZONEID
This will return something like:
https://route53.amazonaws.com/2013-04-01/delegationset/N01234567890A DELEGATIONSET CreateReusableDNSQuay01 /delegationset/N01234567890A NAMESERVERS ns-918.awsdns-53.net NAMESERVERS ns-1295.awsdns-32.co.uk NAMESERVERS ns-143.awsdns-14.com NAMESERVERS ns-55.awsdns-16.org
Note the delegation set ID. You will need this in the future when you reuse these servers with other zones.
Now for your new zones which use these records you will need to create them using the API. I don't believe there is any way to do so using the web interface (but I didn't look very hard).
This part is trivial.
ZONE=gabe.sh DEL_SET=N01234567890A REF="CreateZoneGabeSh" # this must be unique and can be any string aws route53 create-hosted-zone --delegation-set-id $DEL_SET --name $ZONE --caller-reference $REF