The whole stack was on AWS, but the domain’s DNS was still answered by GoDaddy. Every time I needed to add a record I was logging into the wrong console, in the wrong mental model, miles away from everything else. I didn’t want to transfer the registration, chase an EPP code, or sit through a multi-day approval process. I just wanted Route 53 to answer the phone. Here is the exact path I took: DNS only, no downtime, domain still registered at GoDaddy.
TL;DR: Hand DNS for a GoDaddy domain over to a Route 53 hosted zone by swapping name servers, then prove it resolved with one command.
Stack: AWS Route 53, GoDaddy, DNS, nslookup
Level: Beginner
Reading time: ~4 min
The first time I tried this years ago, I confused “transfer the domain” with “move the DNS” and ended up paying for a registrar transfer I didn’t need. They are two different jobs. Moving DNS is the cheap, fast, reversible one, and it’s almost always what you actually want when the rest of your infra is on AWS.
Stand up the hosted zone
A hosted zone is just the box where Route 53 stores the records for one domain. You create it first because that’s what makes AWS hand you the name servers. In the Route 53 console, open Hosted zones and click Create hosted zone.
Domain name: example.dev
Type: Public hosted zone
As soon as it exists, Route 53 writes two records for you: an NS and an SOA. Leave those untouched, they are the zone describing itself. Then open the zone and copy the four name servers it assigned. They look like this:
ns-xxxx.awsdns-xx.co.uk
ns-xxxx.awsdns-xx.org
ns-xxxx.awsdns-xx.net
ns-xxxx.awsdns-xx.com
Look at the four endings: .co.uk, .org, .net, .com. That is deliberate. AWS scatters your name servers across different top-level domains so that an outage in any single TLD can’t take down resolution for your site. You don’t configure that, it just comes that way.
Repoint GoDaddy
This is the one switch that matters. Today GoDaddy says “ask my name servers about this domain.” You are changing it to “ask Route 53 instead.” In GoDaddy, go to My Products, find the domain, and open Manage DNS.
In the Nameservers section, click Change and choose Enter my own nameservers (advanced). GoDaddy gives you two input fields by default, so click Add nameserver twice to get four, then paste the values from Route 53:
ns-xxxx.awsdns-xx.co.uk
ns-xxxx.awsdns-xx.org
ns-xxxx.awsdns-xx.net
ns-xxxx.awsdns-xx.com
Save, and approve the confirmation email if one shows up. The order of the four doesn’t matter, only that all of them are there.
Watch it propagate
Nothing happens instantly. The internet cached the old name servers, and that cache ages out on its own, somewhere between a few minutes and 48 hours. Check the state with:
nslookup -type=NS example.dev
While the reply still shows domaincontrol.com, you are looking at the old GoDaddy servers and the switch hasn’t happened yet. When it shows the awsdns ones, Route 53 owns DNS for the domain. There is nothing to babysit, it gets there on its own.
Create the first record
Now that Route 53 is answering, point the domain somewhere. In the hosted zone, click Create record. For the bare root domain aimed at a fixed server IP:
Record name: (leave blank for the root domain)
Record type: A
Alias: off
Value: 198.51.100.20
TTL: 300
Routing policy: Simple routing
Create records and done. Keep Alias off for a plain IP, that toggle exists for AWS targets like CloudFront, S3, or a Load Balancer. The 300 second TTL means any later edit to this record spreads in about five minutes, which is exactly what you want while things are still settling.
What you have done
You built a Route 53 hosted zone, pasted its four name servers into GoDaddy, watched the switch propagate, and pointed your root domain at a server. The registration never left GoDaddy, but every DNS lookup now lands on AWS. The domain finally lives in the same place as everything else you run.
Next steps
- Bring email over: If the domain handles mail, recreate the MX and TXT records from your provider in this same hosted zone before you rely on it.
- Use Alias for AWS targets: Pointing at CloudFront, S3, or an ALB is an Alias record, not an A record, and it works on the root domain for free.
- Pre-lower TTL for cutovers: Set TTL to 60 the day before a planned change, so a wrong value rolls back in a minute, not an hour.
- Transfer the registrar only if you mean it: Leaving GoDaddy entirely is a separate, slower job, and you don’t need it just to run DNS on AWS.
Questions or feedback? Find me on LinkedIn or GitHub.