8.1
Records, Hosted Zones and TTL
A quick DNS refresher, record types, public vs private hosted zones, and choosing a TTL.
22 min Reading + animations
Tip: tap or hover any dotted-underlined term to see what it means.
By the end of this lesson you will be able to
- Say what Amazon Route 53 is and does: authoritative DNS, domain registrar, resolver inside every VPC, health checks, and the only AWS service with a 100% availability SLA.
- Read any URL as protocol, subdomain, second-level domain, TLD and root, and tell an authoritative answer from a cached one.
- Describe what every record holds (name, type, value, routing policy, TTL) and choose between A, AAAA, CNAME and NS, plus MX, TXT, CAA, SOA, PTR, SRV and DS.
- Explain the NS and SOA records Route 53 puts in every new zone, and what negative caching is.
- Choose between public and private hosted zones, make a private zone work (DNS attributes, multi-VPC and cross-account association, split view), and estimate the bill.
- Point a domain at a single EC2 instance safely with an Elastic IP.
- Pick a TTL on purpose, and plan a record change so it takes minutes instead of a day.
Route 53 and DNS bring three or four questions to almost every SAA-C03 exam, and they are mixed into questions about load balancers, CloudFront and disaster recovery. This chapter has five lessons. This first one lays the base: records, hosted zones and TTL. Lesson 8.2 covers CNAME vs Alias, 8.3 the routing policies, 8.4 health checks and failover, and 8.5 registrars and hybrid DNS.
#What Route 53 is
#DNS in one paragraph
People remember names; computers need IP addresses. When you type google.com, the browser has no idea where that is until something turns the name into an address such as 142.250.190.46. The Domain Name System (DNS) does that translation for the whole internet, which is why it is called the internet’s phonebook. The System Design lesson DNS: the internet’s phonebook explains the general machinery (the DNS tree, the four kinds of server, record types, caching layers). This lesson recaps only what you need and focuses on what Route 53 adds and what the exam asks.
#Route 53 in five jobs
Amazon Route 53 is a highly available, scalable, fully managed DNS service. It does five things:
| Job | What it means | Lesson |
|---|---|---|
| Authoritative DNS | You create a hosted zone for your domain and edit its records; Route 53’s name servers answer the world’s questions about that domain from those records. “Authoritative” means you, the customer, control the records, and Route 53 answers from the source of truth, not from a cache. | this lesson |
| Domain registrar | You can buy and renew domain names in Route 53, like at GoDaddy or Namecheap. | 8.5 |
| Resolver in every VPC | Every VPC has a built-in recursive resolver at the VPC base address plus two, now called Route 53 VPC Resolver. It answers EC2 instances’ lookups, including names in private hosted zones. | this lesson (briefly), 8.5 |
| Health checks | Route 53 can check whether your endpoints are alive and stop answering with dead ones. | 8.4 |
| Traffic routing | Routing policies decide which answer each user gets: weighted, latency, failover, geolocation and more. | 8.3 |
Three facts the exam likes:
- 100% availability SLA. Route 53 is the only AWS service whose SLA promises 100%: AWS gives service credits as soon as a hosted zone’s monthly uptime drops below 100%. The SLA covers answering DNS queries (a zone counts as down only when all four of its name servers stop responding); it does not cover the Route 53 API or console. (AWS GovCloud zones are committed at 99.995%.)
- Why “53”? DNS servers listen on port 53, over UDP for normal queries and TCP for large answers and zone transfers.
- Global service. Hosted zones are not tied to a Region; Route 53’s name servers sit at AWS edge locations all over the world. Its control plane (the API and console where you change records) runs in us-east-1.
#A short DNS refresher, from Route 53’s point of view
#Reading a URL
Take http://api.www.example.com. and read it from right to left:
| Part | In the example | Meaning |
|---|---|---|
| Root | the final . | The top of the DNS tree. Usually invisible, but always there. |
| Top-level domain (TLD) | com | Generic TLDs such as .com, .org, .gov, .net; country codes such as .us, .in, .bd. |
| Second-level domain (SLD) | example.com | The name you register through a registrar, such as amazon.com or google.com. Strictly the second-level label is example; people and the slides usually say the SLD is example.com. |
| Subdomain | www, api.www | Anything left of the SLD. You create these freely, as records in your zone. |
| Protocol | http:// | Not part of DNS at all: it tells the browser how to talk to the server after DNS has given the IP. |
| FQDN | api.www.example.com. | The fully qualified domain name: every label up to the root. |
The zone apex (or root domain, or naked domain) is the name of the zone itself, here example.com without any subdomain. It matters for CNAME records, as you will see in a moment.
#The words you need
| Term | What it is |
|---|---|
| Domain registrar | The company you buy (rent) a domain from: Amazon Route 53, GoDaddy, Namecheap… It tells the TLD which name servers are authoritative for your domain. |
| DNS record | One rule in a zone, such as “www.example.com has the IPv4 address 203.0.113.10”. Types include A, AAAA, CNAME, NS. |
| Zone file | A text file with all the records of one domain, in the standard format. Route 53 can import one when you move from another DNS provider. |
| Hosted zone | Route 53’s version of a zone: a container for records that define how to route traffic for a domain and its subdomains. |
| Name server | A server that answers DNS queries. An authoritative name server answers from the zone it holds; a non-authoritative answer comes from a cache. (The notes say a name server “directs traffic”: it does not; it only answers questions, and the traffic then goes directly to the IP.) |
| Recursive resolver | The server that does the legwork for clients: asks root, TLD and authoritative servers and caches the answers. It may be your ISP’s, a public one (8.8.8.8, 1.1.1.1), your company’s, or, inside AWS, the VPC Resolver. |
| TTL (time to live) | How many seconds a resolver may cache a record before asking again. |
#Where Route 53 sits in a lookup
1. Browser and OS cache
You type
example.com. The browser and the operating system check their caches. If they have no fresh copy, they send the question to the configured recursive resolver.2. Root server
If the resolver has nothing cached, it asks a root server, which does not know the answer but returns the address of the TLD servers for
.com. (Root servers are coordinated by IANA, part of ICANN.)3. TLD server
The
.comTLD server returns the NS records forexample.com: the authoritative name servers. If your domain uses Route 53, these are the four Route 53 name servers of your hosted zone. Your registrar put them there.4. Route 53 answers
The resolver asks a Route 53 name server, which returns the real record, for example
A 203.0.113.10withTTL 300. The resolver caches it, the browser gets the IP, and the website loads.
Where Route 53 sits in a DNS lookup
Route 53 is the last stop: the authoritative name server for your zone. Watch a full lookup, a cache hit that never reaches Route 53, a typo answered with NXDOMAIN, and a lookup that works while the site is down.
Scenario
You open www.example.com. The browser and the OS have nothing cached, so they ask the recursive resolver: your ISP’s, a public one like 1.1.1.1, or, on an EC2 instance, the Amazon DNS server in the VPC.
Authoritative vs non-authoritative. The answer in step 4 comes straight from the zone: an authoritative answer, marked with the aa flag. When the same resolver answers the next user from its cache, the answer is non-authoritative: correct as of when it was cached, with the TTL counting down. Every query that reaches Route 53 is billed; every cache hit costs you nothing.
Self-checkQuestion
A user’s browser receives the IP address for www.example.com, whose hosted zone is in Route 53. Which server gave the authoritative answer?
#Records: what each one holds
A record tells Route 53 how to answer a query for one name. Each record has five parts:
| Part | Example | Notes |
|---|---|---|
| Name | www.example.com | The domain or subdomain. It must be inside the hosted zone. |
| Type | A, AAAA, CNAME… | What kind of value it holds. |
| Value | 203.0.113.10 | The answer. A record can hold several values (several IPs), returned together. |
| Routing policy | Simple, weighted, latency… | How Route 53 chooses the answer when there are several records for the same name. Simple is the default (lesson 8.3). |
| TTL | 300 | How long resolvers may cache the answer, in seconds. |
#The must-know types
- A maps a hostname to an IPv4 address:
www.example.com → 192.0.2.44. - AAAA (“quad A”) maps a hostname to an IPv6 address:
www.example.com → 2001:db8::44. Serve both and clients with IPv6 use it. - CNAME maps a hostname to another hostname:
shop.example.com → shops.example.net. The target must eventually resolve to an A or AAAA record. A CNAME cannot be created at the zone apex (example.com), and a name with a CNAME cannot have any other record. Route 53’s answer to both limits is the Alias record, the subject of lesson 8.2. - NS lists the name servers for a zone. The NS record at the apex is what the registrar must copy into the TLD; NS records further down delegate a subdomain to another zone. NS records therefore control how traffic for a domain is routed, because they decide who answers.
#The other types, briefly
| Type | Holds | Typical use |
|---|---|---|
| MX | Mail servers with priorities (10 mail.example.com) | Where email for the domain goes; the lowest number is tried first. |
| TXT | Free text | Domain ownership proofs for SaaS tools and certificates, and email security: SPF policy, DKIM keys (often CNAME records instead), DMARC policy. |
| CAA | Which certificate authorities may issue certificates | 0 issue "amazon.com" lets only ACM issue certificates for the domain. |
| SOA | Start of authority: the zone’s primary name server, admin e-mail, timers | Created by Route 53 in every zone; its last field sets negative caching. |
| PTR | IP → name (reverse DNS) | Mail servers check it; for an Elastic IP you ask AWS to set reverse DNS. |
| SRV | Priority, weight, port, host | Service discovery for protocols such as SIP and LDAP. |
| DS | Delegation signer | A fingerprint of a child zone’s key, linking the DNSSEC chain of trust. |
| NAPTR | Rewriting rules | Telephony, for example turning a phone number into a SIP address. |
| SPF | An old dedicated type for sender policy | Deprecated: put SPF policies in a TXT record instead. |
#The two records Route 53 creates for you
When you create a public hosted zone, Route 53 adds two records at the apex automatically:
- NS: the four name servers assigned to the zone, each under a different TLD so that a problem with one TLD cannot take your domain down, for example
ns-2048.awsdns-64.com,ns-2049.awsdns-65.net,ns-2050.awsdns-66.org,ns-2051.awsdns-67.co.uk. These four are what you give your registrar. - SOA: for example
ns-2048.awsdns-64.net. hostmaster.example.com. 1 7200 900 1209600 86400. The fields are the primary name server, the admin e-mail (with.for@), a serial number, three timers used by secondary DNS servers (refresh 7200 s, retry 900 s, expire 1209600 s = 2 weeks), and the minimum TTL (86400 s).
The last SOA field controls negative caching. When Route 53 answers NXDOMAIN (no such name) or NODATA (the name exists but not with that type), resolvers cache that “no” for the smaller of the SOA record’s own TTL (900 s by default) and the SOA minimum (86400 s): 15 minutes by default. Negative answers are billed like any other query.
Leave both records alone. If you delete and recreate a hosted zone, the new zone gets a different set of four name servers, and your domain stops resolving until you update the registrar (lesson 8.5).
#Hosted zones: public and private
A hosted zone is a container for the records of one domain and its subdomains. Route 53 has two kinds, and the difference is who can ask.
#Public hosted zones
A public hosted zone answers queries from anywhere on the internet. Use it for every name the world must reach: www.example.com, api.example.com, mail.example.com. Creating the zone is not enough on its own: the registrar must list the zone’s four name servers for the domain (automatic if you registered the domain in Route 53, a manual step otherwise; lesson 8.5).
#Private hosted zones
A private hosted zone answers queries only from the VPCs you associate with it. The rest of the world cannot see it, not even that it exists. Use it for internal names: db.corp.internal, orders.internal.example.com, internal microservices. When the database moves, you change one record instead of every application’s config.
How it works and what it needs:
- The VPC Resolver answers. Instances send their DNS queries to the Amazon-provided DNS server, which DHCP configures for them: the VPC base address plus two (
10.0.0.2in10.0.0.0/16), also reachable at169.254.169.253(andfd00:ec2::253for IPv6 on Nitro instances). It checks the private zones associated with the VPC first, then resolves everything else on the internet. Lesson 8.5 covers this resolver in depth, including how on-premises networks can use it. - Two VPC attributes must be true:
enableDnsSupport(“DNS resolution”: the Amazon DNS server answers at all; true by default) andenableDnsHostnames(“DNS hostnames”; false by default in VPCs you create, true in the default VPC). AWS requires both for private hosted zones. The exam loves this one. - Many VPCs, many accounts. One private zone can be associated with up to 300 VPCs, in any Region, including VPCs owned by other AWS accounts. For a VPC in another account: the zone owner runs
create-vpc-association-authorization, then the VPC owner runsassociate-vpc-with-hosted-zone. This works only through the CLI, SDK or API, not the console. Afterwards, delete the authorization; the association stays. For hundreds of VPCs, Route 53 Profiles (lesson 8.5) share zones in bulk. - DNS is not connectivity. An associated VPC can resolve
db.corp.internal, but it still needs peering, a Transit Gateway or similar to reach10.0.2.35. And a private zone is not visible from the far side of a VPN on its own; on-premises lookups need a Resolver inbound endpoint (lesson 8.5). - Queries to private hosted zones are free. You pay only for the zone itself.
#Split view (split-horizon DNS)
You can create a public and a private zone with the same name, for example both example.com. The internet gets answers from the public zone; VPCs associated with the private zone get answers from the private one. api.example.com can then resolve to a public address for customers and to an internal address for your own servers.
The rule inside an associated VPC is most specific match, private first: if a private zone matches the name (the same name or a parent of it), Resolver looks only there. If that private zone has no record for the name, Resolver returns NXDOMAIN; it does not fall back to the public zone. So every name your VPC clients need must exist in the private zone too.
Public hosted zonePrivate hosted zone
- Answers anyone on the internet
- Becomes live when the registrar lists its four name servers
- Typical names:
www,api,mailof your real domain - Queries billed ($0.40 per million standard queries)
- Routing policies: all of them (lesson 8.3)
- Answers only from associated VPCs (up to 300, cross-account possible)
- Needs
enableDnsSupportandenableDnsHostnamesset to true - Typical names:
db.corp.internal, internal services, split view - Queries free
- Routing policies: all except IP-based
Public and private hosted zones
The same Route 53 holds both kinds of zone. Who gets an answer depends on where the question comes from: the internet sees public zones only, a VPC sees the private zones associated with it first.
Scenario
Someone on the internet looks up www.example.com. After root and .com (skipped here), the query ends at the name servers of the public hosted zone. Anyone, anywhere, can ask.
#What it costs
| Item | Price (us-east-1, late 2026) |
|---|---|
| Hosted zone, first 25 in the account | $0.50 per zone per month |
| Each hosted zone after 25 | $0.10 per zone per month |
| Records | 10,000 per zone included |
| Standard queries | $0.40 per million (first billion a month), then $0.20 per million |
| Latency, geolocation/geoproximity, IP-based queries | $0.60, $0.70, $0.80 per million (lesson 8.3) |
| Alias queries to AWS resources (load balancers, CloudFront, S3 websites…) | Free (lesson 8.2) |
| Queries to private hosted zones | Free |
The zone charge is not prorated: you pay for the full month on the day you create it and on the first of every month after. A zone deleted within 12 hours of creation is not charged, which makes short tests free. Domain registration is a separate yearly fee (lesson 8.5).
A worked example: 30 hosted zones cost 25 × $0.50 + 5 × $0.10 = $13.00 a month. If the public zones receive 300 million standard queries a month, add 300 × $0.40 = $120. TTL decides much of that second number, as the TTL section shows.
Self-checkQuestion
A company wants its EC2 instances to reach an internal database as db.corp.internal. The name must not be resolvable from the internet. What should a solutions architect do?
#Pointing a domain at a single EC2 instance
The simplest website on AWS is one EC2 instance in a public subnet. To give it a name:
- Allocate an Elastic IP and associate it with the instance (lesson 3.6).
- In the public hosted zone, create an A record:
www.example.com → 203.0.113.25(the Elastic IP), with a TTL such as 300.
Why not use the instance’s automatic public IP? Because an auto-assigned public IPv4 address is released when the instance stops, and the instance gets a different one when it starts. The A record would keep pointing at the old address: users time out, or reach whichever instance gets that address next. The instance’s public DNS name (ec2-198-51-100-7.compute-1.amazonaws.com) changes with it, so a CNAME to that name does not help either. An Elastic IP stays with your account through stops, starts and even termination until you release it, and you can move it to a replacement instance in seconds, with no DNS change.
The cost: since February 2024 every public IPv4 address costs about $0.005 per hour (about $3.60 a month), Elastic IPs included, attached or idle. “Cost-effective” in the exam therefore means “the cheapest stable option for one instance”, not “free”. Release Elastic IPs you no longer need.
For anything beyond one instance, use a load balancer in front of an Auto Scaling group and point an Alias record at it (lesson 8.2); the notes put it this way: if there is a load balancer, the answer is Alias.
A domain for one EC2 instance: public IP or Elastic IP
An A record holds a fixed IP, so the IP must not change behind its back. See what a stop and start does to an auto-assigned public IP, and how an Elastic IP keeps the record valid.
Scenario
web-1 was launched in a public subnet and got a public IPv4 address from AWS’s pool. You created an A record www.example.com → 198.51.100.7.
#TTL: how long answers are cached
Every record except an Alias carries a TTL in seconds. It tells every resolver and client: “you may keep this answer for this long without asking again”. In Route 53 the TTL is mandatory for every non-Alias record (the console suggests 300; any value from 0 to 2,147,483,647 is accepted). Alias records have no TTL of their own: Route 53 uses the TTL of the target (lesson 8.2).
A resolver hands out the remaining TTL. If it cached a record with TTL 300 two minutes ago, it answers with TTL 180, so every cache below it expires at the same moment.
#High TTL vs low TTL
| High TTL, e.g. 86400 (24 hours) | Low TTL, e.g. 60 seconds | |
|---|---|---|
| Queries to Route 53 | Few: resolvers ask about once a day | Many: resolvers ask every minute |
| Cost | Lower | Higher ($$) |
| Speed for users | More cache hits, faster lookups | More lookups go all the way to Route 53 |
| After you change the record | Old answers can live for up to 24 hours | Everyone has the new answer within about a minute |
| Good for | Records that almost never change (NS, MX, a stable apex) | Records you may change soon, failover and migrations |
Most records sit comfortably at 300 to 3600 seconds. Records used with failover routing and health checks usually have 60 seconds or less, because the TTL is the delay before clients follow a failover.
#Changing a record safely
There is no such thing as pushing a DNS change. When you edit a record, Route 53 serves the new value within about a minute (get-change shows PENDING and then INSYNC), but resolvers that cached the old answer keep using it until their copy expires. What people call “DNS propagation” is just caches running out. The longest anyone can see the old answer is the TTL the record had when they cached it.
That last sentence is the trap. Suppose a record has had TTL 86400 for months and you lower it to 60 ten minutes before a migration. A resolver that cached the record 2 hours earlier still holds a copy with a 24-hour lifetime: it learns the new TTL, and the new IP, only when that copy expires, 22 hours later. Lowering the TTL just before the change helps almost nobody.
The safe recipe:
- Lower the TTL well in advance, at least one old TTL before the change (for TTL 86400, at least a day ahead), keeping the old value.
- Wait until every old long-lived copy has expired.
- Change the record. Within one short TTL, everyone follows.
- Keep the old server running for a while; a few resolvers enforce their own minimum TTL or misbehave.
- Raise the TTL again once the new setup is confirmed, to cut queries and cost.
TTL timeline: when does each resolver see the change?
Each row is one busy resolver. Orange blocks are cached copies of the old IP, green blocks the new IP; a block ends when its TTL runs out and the resolver asks Route 53 again.
Scenario
Choose a TTL, then play. The shape is always the same; what changes is how long the old IP survives and how many queries Route 53 answers.
Now
−3 min
Last resolver switches
+5 min
Queries per day, one busy resolver
288
Monthly bill, 10,000 resolvers
$35
- Resolver A (ISP)198.51.100.7(old IP, 84 s left)
- Resolver B (public)198.51.100.7(old IP, 6 s left)
- Resolver C (office)198.51.100.7(old IP, 4 min left)
- Resolver D (VPC)198.51.100.7(old IP, 3 min left)
Four resolvers cached the A record at different moments. Each copy lives 5 min, then the resolver asks Route 53 again (each new block is one query).
The cost side in numbers: a busy resolver with constant traffic asks once per TTL. With TTL 60 that is 1,440 queries a day; with TTL 86400 it is one. For 10,000 such resolvers over a 30-day month, TTL 60 means 10,000 × 1,440 × 30 = 432 million queries, about $173; TTL 300 about $35; TTL 3600 about $2.88. Real traffic is lumpier, but the ratio holds: the bill scales with 1 / TTL.
#What goes wrong
| Symptom | Likely cause | Fix |
|---|---|---|
| Private zone names do not resolve from EC2 | enableDnsHostnames or enableDnsSupport is false, or the VPC is not associated with the zone | Set both attributes to true; associate the VPC |
| A name exists publicly but returns NXDOMAIN inside the VPC | Split view: a private zone with the same (or a parent) name has no record for it, and Resolver does not fall back | Add the record to the private zone too |
| A brand-new record returns NXDOMAIN for some users for a few minutes | Negative caching: they asked before it existed, and resolvers cache “no” for up to the SOA’s TTL (900 s by default) | Wait; create records before announcing them |
| Hours after a change, some users still reach the old server | They cached the record with its old long TTL | Wait out the old TTL; next time lower the TTL ahead |
| The site broke after a stop/start | The A record points at an auto-assigned public IP that changed | Use an Elastic IP, or a load balancer with Alias |
| Changes in the hosted zone have no effect at all | The registrar lists the name servers of a different (old or deleted) zone | Compare the zone’s NS record with the registrar’s name servers (lesson 8.5) |
| On-premises servers cannot resolve the private zone | Private zones answer only inside associated VPCs | Resolver inbound endpoint (lesson 8.5) |
| DNS answers fine but the site is down | A plain record does not know about health | Health checks and failover (8.3, 8.4), or a load balancer |
#Route 53 in system design
- Every public name in one place. Keep each domain in one public hosted zone, managed as code (CloudFormation, CDK, Terraform), and give subdomain zones to teams through NS delegation when they need autonomy.
- Internal names in private zones. Point applications at
db.corp.internalinstead of IPs or long endpoint names (for RDS, a CNAME to the RDS endpoint, because its IP changes on failover), so moving a component is a one-record change. - Split view when the same name must reach a public endpoint from outside and a private one from inside.
- TTL as a design decision: long for stable records, short for anything that may fail over or migrate, and lowered in advance before planned changes.
- Never put one EC2 instance’s IP into DNS for anything important. Use an Elastic IP for a single server, and a load balancer with Alias for real availability.
#Try it yourself
# 1. Create a public hosted zone (the caller reference just has to be unique)
aws route53 create-hosted-zone --name example.com --caller-reference demo-2026-10-25
aws route53 get-hosted-zone --id Z0123456789EXAMPLE # shows the four name servers
# 2. Look at the NS and SOA records Route 53 created
aws route53 list-resource-record-sets --hosted-zone-id Z0123456789EXAMPLE \
--query "ResourceRecordSets[?Type=='NS' || Type=='SOA']"
# 3. Create or update an A record with TTL 300 (UPSERT = create or replace)
cat > www.json <<'EOF'
{ "Comment": "www to the Elastic IP",
"Changes": [ { "Action": "UPSERT",
"ResourceRecordSet": { "Name": "www.example.com", "Type": "A", "TTL": 300,
"ResourceRecords": [ { "Value": "203.0.113.25" } ] } } ] }
EOF
aws route53 change-resource-record-sets --hosted-zone-id Z0123456789EXAMPLE \
--change-batch file://www.json
aws route53 get-change --id C0123456789EXAMPLE # PENDING, then INSYNC
# 4. Ask Route 53 what it would answer, without any cache in the way
aws route53 test-dns-answer --hosted-zone-id Z0123456789EXAMPLE \
--record-name www.example.com --record-type A
# 5. An Elastic IP for a single web server
aws ec2 allocate-address --domain vpc
aws ec2 associate-address --instance-id i-0abc1234def567890 --allocation-id eipalloc-0abc1234
# 6. A private hosted zone: VPC attributes first, then the zone
aws ec2 modify-vpc-attribute --vpc-id vpc-0a1b2c3d4e5f60718 --enable-dns-support "{\"Value\":true}"
aws ec2 modify-vpc-attribute --vpc-id vpc-0a1b2c3d4e5f60718 --enable-dns-hostnames "{\"Value\":true}"
aws route53 create-hosted-zone --name corp.internal --caller-reference corp-2026-10-25 \
--vpc VPCRegion=us-east-1,VPCId=vpc-0a1b2c3d4e5f60718 --hosted-zone-config PrivateZone=true
# 7. Associate a VPC from another account
aws route53 create-vpc-association-authorization --hosted-zone-id Z0PRIVATE0EXAMPLE \
--vpc VPCRegion=us-east-1,VPCId=vpc-0b2c3d4e5f6071829 # run in the zone owner's account
aws route53 associate-vpc-with-hosted-zone --hosted-zone-id Z0PRIVATE0EXAMPLE \
--vpc VPCRegion=us-east-1,VPCId=vpc-0b2c3d4e5f6071829 # run in the VPC owner's account
aws route53 delete-vpc-association-authorization --hosted-zone-id Z0PRIVATE0EXAMPLE \
--vpc VPCRegion=us-east-1,VPCId=vpc-0b2c3d4e5f6071829 # tidy up; the association stays
Watch caching and authority with dig (or nslookup on Windows):
dig www.example.com @ns-2048.awsdns-64.com +norecurse # straight to Route 53: flags include aa
dig www.example.com # via your resolver: run it twice, the TTL counts down
dig +noall +answer www.example.com # just the answer line: name, TTL, type, value
dig shpo.example.com # NXDOMAIN, with the SOA in the AUTHORITY section
dig NS example.com +short # the four awsdns name servers
nslookup -type=TXT example.com # Windows: TXT records
# From an EC2 instance: the VPC Resolver answers private names
dig db.corp.internal @169.254.169.253
#Summary
Key takeaways
- Route 53 = managed authoritative DNS (you edit the records of your hosted zones), plus registrar, the resolver in every VPC, health checks and routing policies. It is the only AWS service with a 100% availability SLA (for answering queries). “53” is the DNS port.
- URL anatomy, right to left: root
., TLDcom, SLDexample.com, subdomainwww; the protocol is not DNS. The FQDN goes all the way to the root; the zone apex is the zone’s own name. - Authoritative answers come from Route 53’s zone (
aaflag) and are billed; non-authoritative answers come from a resolver’s cache and are free. Route 53 never carries your traffic. - A record = name, type, value, routing policy, TTL. Must-know types: A (IPv4), AAAA (IPv6), CNAME (name → name, not at the apex; Alias in 8.2), NS. Also MX, TXT (ownership, SPF), CAA, SOA, PTR, SRV, DS, NAPTR.
- Every new zone gets NS (four name servers on four TLDs) and SOA (its minimum field and TTL set negative caching, 900 s by default). Recreating a zone changes its name servers.
- Public hosted zone: answers the internet. Private hosted zone: answers only associated VPCs (up to 300, cross-account by authorization + association via CLI/API), needs
enableDnsSupport+enableDnsHostnames, free queries. Split view: same name in both; inside the VPC the private zone wins and never falls back. - Price: $0.50 per zone per month for the first 25, $0.10 after; $0.40 per million standard queries; Alias queries to AWS resources and private zone queries free; zones deleted within 12 hours free.
- One EC2 instance: Elastic IP + A record, because an auto-assigned public IPv4 changes on stop/start; every public IPv4 costs about $0.005/hour since February 2024. More than one instance: load balancer + Alias.
- TTL is mandatory except for Alias. High TTL: fewer queries, lower cost, slow changes. Low TTL: more queries, higher cost, fast changes. Lower it at least one old TTL before a migration: lowering it just before does not help resolvers that cached the long TTL.
Answer on your own first, then read the explanation, even when you got it right.
Self-checkQuestion
Why is Route 53 called an authoritative DNS service?
Self-checkQuestion
Which AWS service is the only one whose SLA commits to 100% availability?
Self-checkQuestion
In the URL http://api.www.example.com. , which part does the course call the second-level domain (SLD)?
Self-checkQuestion
An engineer runs dig www.example.com twice through the company resolver. The answer has no aa flag and the TTL is 143 the first time and 131 the second time. The record’s TTL in Route 53 is 300. What explains this?
Self-checkQuestion
Which record type maps a hostname to an IPv6 address?
Self-checkQuestion
Which two records does Route 53 create automatically when you create a public hosted zone?
Choose 2
Self-checkQuestion
A SaaS e-mail provider asks the company to prove it owns example.com and to publish a sender policy for its mail. Which record type does both?
Self-checkQuestion
A security team wants to make sure that only AWS Certificate Manager can issue TLS certificates for example.com. Which record helps enforce this?
Self-checkQuestion
A team creates a private hosted zone corp.internal and associates it with a VPC they created with the CLI. EC2 instances in the VPC cannot resolve db.corp.internal, although the record exists. What is the most likely fix?
Self-checkQuestion
Which two statements about Route 53 private hosted zones are true?
Choose 2
Self-checkQuestion
A company uses split-view DNS: public and private hosted zones both named example.com. www and api resolve correctly from inside the VPC, but blog.example.com, which exists only in the public zone, returns NXDOMAIN from EC2 instances. Internet users can open it. What should be done?
Self-checkQuestion
Account A owns a private hosted zone. Account B wants its VPC to resolve the zone’s names. Which sequence is correct?
Self-checkQuestion
A company has 30 hosted zones for a whole month. Ignoring queries, what is the monthly hosted zone charge?
Self-checkQuestion
A public hosted zone receives 300 million standard queries in a month. The account has 2 hosted zones. What is the Route 53 bill for zones and queries?
Self-checkQuestion
An engineer creates a hosted zone for a quick test and deletes it 3 hours later. What is charged for the zone?
Self-checkQuestion
A startup runs its website on a single EC2 instance and wants www.example.com to keep working through stops and starts, at the lowest cost. What should it do?
Self-checkQuestion
After a maintenance window in which a single web server was stopped and started, users get timeouts on www.example.com. The instance is healthy and reachable by its new address. What happened?
Self-checkQuestion
Which two statements about Elastic IP addresses are true today?
Choose 2
Self-checkQuestion
What is the main trade-off of setting a high TTL such as 24 hours on a record?
Self-checkQuestion
A company will move its website to a new server tomorrow. The A record currently has a TTL of 86400 seconds. What should a solutions architect do to make the cut-over fast?
Self-checkQuestion
A record has had a TTL of 86400 for months. Ten minutes before a migration, an engineer lowers it to 60, then changes the IP at 12:00. A resolver cached the record at 10:00 that morning. When will that resolver first use the new IP at the latest?
Self-checkQuestion
An A record has a TTL of 3600. A resolver cached it at 09:40. The record is changed at 10:00. What is the latest time that resolver can still hand out the old IP?
Self-checkQuestion
For which kind of record does Route 53 not let you set a TTL?
Self-checkQuestion
A developer creates the record promo.example.com five minutes after testing the name in a browser. Some colleagues get the page; others still get “server not found” for several more minutes. What is the cause?
Self-checkQuestion
Which two changes reduce a company’s Route 53 query charges?
Choose 2
Self-checkQuestion
A colleague says Route 53 load-balances web requests because every HTTP request to www.example.com passes through it. What is wrong with this statement?
Self-checkQuestion
EC2 instances in VPC 10.20.0.0/16 use a self-managed DNS server on EC2. It must forward queries for a private hosted zone to the Amazon-provided DNS server. Which address should it forward to?
Self-checkQuestion
Which of the following is NOT something Route 53 does?
Self-checkQuestion
Which two statements about CNAME records are true?
Choose 2
Self-checkQuestion
An administrator deletes a public hosted zone by mistake and immediately recreates it with the same records. The domain, registered at a third-party registrar, stops resolving everywhere. What is the most likely reason?