Amazon Route 53 β
DNS & Traffic Routing
AWS's highly available, scalable DNS service β translates domain names to IP addresses, intelligently routes traffic across the globe, and monitors endpoint health. The internet's phone book, managed by AWS.
β‘ Route 53 in 30 Seconds
- DNS service β translates human-friendly names (example.com) to IP addresses (192.0.2.1)
- 100% SLA β the only AWS service with a 100% availability guarantee
- Global service β not region-scoped (like IAM and CloudFront)
- Named after port 53 β the standard DNS port number
- Three functions: DNS resolution + traffic routing + health checking
What is DNS & Route 53
Every device on the internet has an IP address (like 192.0.2.44 or 2001:db8::1). Humans can't remember these numbers, so we use domain names (like example.com). DNS (Domain Name System) is the system that translates names into addresses β just like a phone book translates "John Smith" into a phone number.
π Think of DNS as: The internet's phone book β you look up a name, it gives you the number (IP address) to call
When you type www.example.com in your browser, before anything else happens, your computer asks DNS: "What's the IP address for this name?" Only after getting the answer can your browser connect to the server.
Amazon Route 53 is AWS's managed authoritative DNS service. It serves as the final source of truth for your domain names β when someone asks "what's the IP for myapp.example.com?", Route 53 answers authoritatively.
But Route 53 does more than just DNS. It provides three core functions:
DNS Resolution
Translate domain names to IP addresses (A records), other domains (CNAME), or AWS resources (Alias records). The core function.
Traffic Routing
Route users to different endpoints based on latency, geography, weight, or failover rules. Intelligent load distribution.
Health Checking
Monitor endpoint health and automatically route away from unhealthy targets. Automatic failover.
Without Route 53 β The Problems
- Self-managed DNS servers β you handle HA, patching, DDoS protection
- No native integration with ALB, CloudFront, S3 β manual IP tracking
- No intelligent routing β users always hit the same endpoint regardless of location
- No automatic failover β if a server dies, DNS still points to it
- DNS propagation issues β TTL management is complex and error-prone
Route 53 Solves
- 100% SLA β the most available service in AWS (globally distributed)
- Native AWS integration β Alias records to ALB, CloudFront, S3, etc. (free + instant)
- 7 routing policies β latency, geo, weighted, failover, multivalue, IP-based, geoproximity
- Health checks β automatic failover when endpoints go down
- DDoS protected β built on AWS's global edge network
| Property | Value | Why It Matters |
|---|---|---|
| Availability SLA | 100% | Only AWS service with 100% SLA. DNS failure = entire app unreachable. |
| Scope | Global (not regional) | Like IAM, CloudFront β one configuration applies worldwide. |
| Name Origin | Port 53 (DNS port) | Route (traffic routing) + 53 (DNS standard port). |
| Supported Protocols | DNS over UDP/TCP (port 53) | Standard DNS β works with all clients worldwide. |
| Pricing | $0.50/hosted zone + $0.40/M queries | Cheap for most apps. First 25 hosted zones included. Alias queries to AWS resources: free. |
| DNSSEC | Supported (signing) | Cryptographic proof that DNS responses aren't tampered with. |
| IPv6 | Full support (AAAA records) | Route both IPv4 and IPv6 traffic. |
Traditional DNS = Phone Book
- You look up a name β get a phone number
- Static β the number never changes based on context
- No health check β if the person moved, you still get the old number
- One answer for everyone, everywhere
Route 53 = Smart Receptionist
- You call, the receptionist routes you intelligently
- "Caller from Europe? Let me connect you to the London office"
- "New York office is down? Rerouting you to Chicago"
- "We're doing A/B testing β 90% go to v1, 10% to v2"
- Same phone number, different routing based on context
| Feature | Traditional DNS (GoDaddy, Namecheap) | Route 53 |
|---|---|---|
| Basic DNS | β A, CNAME, MX, TXT records | β All standard records + Alias |
| Alias Records | β Not supported | β Free, instant resolution to AWS resources |
| Health Checks | β Separate service needed | β Built-in, triggers failover |
| Routing Policies | β Only simple (round-robin at best) | β 7 policies (latency, geo, weighted, etc.) |
| AWS Integration | β Manual IP/CNAME only | β Native (ALB, CloudFront, S3, API Gateway) |
| Availability | 99.9% typical | 100% SLA (globally distributed) |
| DDoS Protection | Basic | AWS Shield integrated |
| Pricing | Often "free" with domain | $0.50/zone/month + per-query |
π Exam tip: If the question asks about routing traffic based on latency, geography, or health β the answer involves Route 53 routing policies. For simple domainβIP, any DNS works. For intelligent routing, it's Route 53.
The Alias record is Route 53's most important feature for the exam. It's a Route 53-specific extension to DNS that resolves directly to AWS resources:
CNAME (Standard DNS)
- Maps one name to another name:
www.example.com β d111.cloudfront.net - Cannot be used at zone apex (example.com β no subdomain)
- Extra DNS lookup needed (two-step resolution)
- Charged per query
Alias (Route 53 only)
- Maps name directly to AWS resource (resolves internally)
- Works at zone apex (example.com β ALB β )
- Single-step resolution β faster
- Free queries when pointing to AWS resources
- Automatically tracks IP changes (ALB IPs change β Alias follows)
π Exam rule: "Point naked domain (zone apex) to an ALB/CloudFront/S3" β Alias record (CNAME won't work at apex). "Point subdomain to non-AWS resource" β CNAME.
| Alias Target | Example | Use Case |
|---|---|---|
| ELB (ALB/NLB/CLB) | example.com β my-alb-123.elb.amazonaws.com | Web apps behind load balancer |
| CloudFront Distribution | example.com β d111.cloudfront.net | CDN-fronted apps/static sites |
| S3 Website Endpoint | example.com β s3-website.us-east-1.amazonaws.com | Static website hosting |
| API Gateway | api.example.com β xyz.execute-api.us-east-1.amazonaws.com | Serverless APIs |
| Another Route 53 Record | example.com β (another record in same hosted zone) | Chaining routing policies |
| Global Accelerator | example.com β abc.awsglobalaccelerator.com | Global TCP/UDP acceleration |
| Elastic Beanstalk | example.com β my-env.region.elasticbeanstalk.com | Beanstalk environments |
| VPC Interface Endpoint | api.example.com β vpce-xyz.execute-api.us-east-1.vpce.amazonaws.com | Private API access |
π Cannot Alias to: EC2 instance IP (use A record), another account's resource (unless shared), or non-AWS endpoints. Alias targets must be in the same hosted zone or a supported AWS service.
| Feature | CNAME | Alias |
|---|---|---|
| Works at zone apex (example.com) | β No | β Yes |
| Free queries | β Charged normally | β Free (to AWS resources) |
| Auto-tracks resource IP changes | β No (static target) | β Yes (follows ALB/CF IPs) |
| Targets | Any hostname (AWS or non-AWS) | Only supported AWS services |
| Standard DNS | β Works everywhere | β Route 53 only |
| Health check support | β Not directly | β Yes (inherits target health) |
Route 53 is DNS + intelligent traffic routing + health monitoring. It's the only AWS service with a 100% SLA. The Alias record is the superpower β it resolves to AWS resources for free, works at zone apex, and auto-tracks IP changes.
- DNS = name β IP translation. Route 53 is AWS's authoritative DNS service (port 53).
- Three functions: DNS resolution + traffic routing + health checking.
- 100% SLA β globally distributed, DDoS-protected.
- Global service β not regional (like IAM, CloudFront).
- Alias record: Route 53's superpower. Free queries, works at zone apex, resolves to AWS resources.
- CNAME vs Alias: CNAME = standard DNS, can't be apex. Alias = Route 53 only, works at apex, free.
- Alias targets: ALB, NLB, CloudFront, S3 website, API Gateway, Beanstalk, Global Accelerator.
- Cannot Alias to: EC2 IP directly (use A record instead).
- Pricing: $0.50/hosted zone + per-query (Alias to AWS = free).
Core Concepts (Hosted Zones, Records)
A Hosted Zone is a container for DNS records for a specific domain. It's like a drawer in a filing cabinet β everything about example.com lives in one hosted zone. When you create a hosted zone, Route 53 assigns 4 nameservers to it.
Public Hosted Zone
- Answers queries from the public internet
- Anyone can resolve your domain names
- Used for: websites, APIs, public services
- Created when you register/transfer a domain
- Cost: $0.50/month per hosted zone
Private Hosted Zone
- Answers queries only within associated VPCs
- Internet users cannot resolve these names
- Used for: internal services, microservices, private APIs
- Must be associated with at least one VPC
- Allows split-horizon DNS (same name, different answers internal vs external)
π Exam pattern: "Internal microservices need to communicate by name, not reachable from internet" β Private Hosted Zone. "Public website needs custom domain" β Public Hosted Zone.
Each hosted zone contains records β individual entries that tell Route 53 how to respond to queries. Know these for the exam:
| Record Type | Maps To | Example | Use Case |
|---|---|---|---|
| A | IPv4 address | example.com β 192.0.2.44 | Point domain to a server's IPv4 address |
| AAAA | IPv6 address | example.com β 2001:db8::1 | Point domain to a server's IPv6 address |
| CNAME | Another domain name | www.example.com β example.com | Redirect one name to another (NOT at zone apex) |
| Alias | AWS resource (Route 53 extension) | example.com β my-alb.elb.amazonaws.com | Point to ALB, CloudFront, S3, etc. (works at apex) |
| MX | Mail server(s) | example.com β 10 mail.example.com | Route email to mail servers (lower priority number = higher preference) |
| TXT | Arbitrary text | example.com β "v=spf1 include:..." | Domain verification, SPF, DKIM, DMARC |
| NS | Nameservers for zone | example.com β ns-123.awsdns-45.com | Delegation β tells the internet which DNS servers are authoritative |
| SOA | Zone metadata | Serial, refresh, retry, expire, TTL | Administrative info about the zone (auto-created) |
| SRV | Service location | _sip._tcp.example.com β server:5060 | Service discovery (port + priority + weight) |
| CAA | Certificate authorities | example.com β 0 issue "letsencrypt.org" | Control which CAs can issue SSL certs for your domain |
TTL tells DNS resolvers how long to cache a response before asking again. It's the most misunderstood DNS concept β and a common exam topic:
High TTL (e.g., 86400s = 24 hours)
- Less traffic to Route 53 (cheaper)
- Faster for users (cached locally)
- Slow to update β changes take up to 24 hours to propagate
- Use for: stable records that rarely change
Low TTL (e.g., 60s = 1 minute)
- More traffic to Route 53 (slightly more expensive)
- Changes propagate quickly (within 1 minute)
- Essential before migrations β lower TTL first, then change record
- Use for: failover records, records you plan to change soon
π Exam trap: "Minimize downtime during DNS migration" β Lower TTL well before the change (e.g., 60s, 24 hours ahead), then make the change, then raise TTL back. You cannot force clients to re-query β you must wait for old TTL to expire.
Every DNS record in Route 53 has these components:
| Component | Example | Purpose |
|---|---|---|
| Name | www.example.com | The domain name being queried |
| Type | A / AAAA / CNAME / Alias / MX / TXT | What kind of answer to give |
| Value | 192.0.2.44 / d111.cloudfront.net | The actual answer (IP or hostname) |
| TTL | 300 (seconds) | How long resolvers cache this answer |
| Routing Policy | Simple / Weighted / Latency / etc. | How to choose between multiple values |
| Health Check | Associated health check ID (optional) | Remove this record from answers if unhealthy |
Every hosted zone is auto-created with two mandatory records:
NS (Name Server) Record
- Lists the 4 Route 53 nameservers for this zone
- These NS records are registered at the domain registrar
- Tells the internet "these servers are authoritative for example.com"
- Do NOT delete or modify β breaks DNS for your entire domain
SOA (Start of Authority) Record
- Administrative metadata about the zone
- Contains: primary nameserver, admin email, serial number, refresh/retry/expire timers
- Auto-managed by Route 53 β rarely need to touch it
- Serial number increments on each change (used for zone transfer)
Hosted Zones are containers for DNS records. Public zones answer internet queries; Private zones answer only within VPCs. Every record has a name, type, value, TTL, and optional routing policy. Lower TTL before changes; raise it after.
- Hosted Zone: container for all DNS records of a domain. Public (internet) or Private (VPC only).
- Private Hosted Zone: associated with VPCs. Enables internal DNS (e.g., db.internal.example.com).
- Record types: A (IPv4), AAAA (IPv6), CNAME (alias to name), Alias (AWS resource), MX (mail), TXT (verification), NS, SOA.
- TTL: cache duration. High = fast + stale. Low = fresh + more queries. Lower before migrations.
- NS record: 4 nameservers per zone. Registered at registrar. Do NOT delete.
- Split-horizon: same domain resolves differently for public vs private (use both zone types).
- Pricing: $0.50/hosted zone/month. Queries: $0.40/M (standard), free (Alias to AWS).
Route 53 Resolver enables DNS resolution between your VPC and on-premises networks (or other VPCs). Essential for hybrid cloud architectures where EC2 instances need to resolve on-prem hostnames, and on-prem servers need to resolve VPC private DNS names.
Inbound Endpoints
- On-premises DNS forwards queries β Route 53 Resolver
- Allows on-prem servers to resolve VPC private hosted zone names
- Create ENIs in your VPC subnets (inbound)
- On-prem DNS conditional forward to these IPs
Outbound Endpoints
- VPC resources forward queries β on-premises DNS
- Allows EC2 to resolve on-prem hostnames (e.g., app.corp.internal)
- Create ENIs in your VPC subnets (outbound)
- Use Resolver Rules to conditionally forward specific domains
π Exam pattern: "Hybrid cloud β EC2 instances need to resolve on-premises hostnames" β Route 53 Resolver outbound endpoint + forwarding rule. "On-prem servers need to resolve VPC private DNS" β Route 53 Resolver inbound endpoint. Pricing: ~$0.125/hour per endpoint (2 ENIs minimum per endpoint for HA).
DNS Firewall filters outbound DNS queries from your VPCs. It blocks queries to known-malicious domains (malware C2 servers, phishing) and can enforce allowlists for compliance.
DNS Firewall Capabilities
- Block lists: Deny queries to malicious domains (AWS managed + custom)
- Allow lists: Only permit queries to approved domains
- Actions: ALLOW, BLOCK (NXDOMAIN or custom response), ALERT (log only)
- AWS Managed lists: malware domains, botnet C2 servers (auto-updated)
Use Cases
- Prevent data exfiltration via DNS tunneling
- Block access to known-bad domains from VPC
- Compliance: restrict which external domains VPC can resolve
- Logging: audit all DNS queries for security analysis
Routing Policies
Routing policies determine how Route 53 responds when a record has multiple possible answers. This is the most exam-tested topic in Route 53. Know all 7:
| Policy | How It Works | Use Case | Health Check? |
|---|---|---|---|
| Simple | Returns one value (or random from multiple) | Single resource, no special routing needed | No |
| Weighted | Distribute traffic by percentage (weights) | A/B testing, gradual deployments (90%/10%) | Yes |
| Latency-based | Route to region with lowest latency for user | Global apps β send users to closest region | Yes |
| Failover | Primary + secondary. Switch on health check failure | Active-passive DR (primary fails β backup) | Yes (required) |
| Geolocation | Route based on user's geographic location | Content localization, legal restrictions by country | Yes |
| Geoproximity | Route based on geographic distance + bias | Shift traffic between regions with bias control | Yes |
| Multivalue Answer | Return up to 8 healthy IPs (client picks one) | Simple load balancing + health checking | Yes |
The default. One record, one (or multiple) values. If multiple values exist, Route 53 returns all of them and the client picks randomly. No health checks β even if an IP is dead, it's still returned.
π Simple: "One domain, one resource, no tricks." Most basic DNS. No health check support. If you need health-aware answers, use Multivalue instead.
Assign numeric weights to multiple records. Route 53 returns answers proportional to their weight. Total doesn't need to be 100 β it's relative.
Use cases: A/B testing (send 10% to new version), blue-green deployments (gradually shift from 100/0 to 0/100), load distribution across regions.
Route 53 measures latency between the user's DNS resolver and each AWS region, then returns the record with the lowest latency. This is NOT geographic distance β it's actual network latency.
Active-passive failover. You define a Primary and a Secondary record. Route 53 returns Primary unless its health check fails β then it automatically returns Secondary. Health check is mandatory on the primary.
π Failover pattern: Primary = production ALB in us-east-1. Secondary = static S3 "maintenance page" or DR ALB in eu-west-1. If primary health check fails β traffic routes to secondary instantly.
Routes based on the physical location of the user (continent, country, or US state). Unlike latency-based, this is about where you are, not what's fastest.
Geolocation Use Cases
- Legal compliance β EU users must hit EU servers (GDPR)
- Content localization β French users get French content
- Restrict access β block or redirect users from certain countries
- Regional pricing β different endpoints for different markets
Important Notes
- Must set a "Default" record β for IPs that don't match any location
- Location detection uses the IP of the DNS resolver (ISP), not the user directly
- More specific wins: US-California beats US beats North America
- Without default β users from unmatched locations get no answer (NXDOMAIN)
Like geolocation but with a bias dial. You can shift traffic toward or away from regions by adjusting the bias value (-99 to +99). Requires Route 53 Traffic Flow (visual policy editor).
π Geoproximity vs Geolocation: Geolocation = "if user is in France, go to X." Geoproximity = "route to nearest resource, but bias +25 toward us-east-1 to shift more traffic there." Geoproximity is more flexible but requires Traffic Flow ($50/month per policy).
Traffic Flow is a visual policy editor for building complex routing trees β combining multiple policies (geoproximity + weighted + failover) into a single reusable policy.
| Feature | Detail |
|---|---|
| What it does | Visual drag-and-drop editor for complex routing policies |
| Cost | $50/month per traffic policy record (on top of standard Route 53 pricing) |
| Required for | Geoproximity routing (bias). Complex multi-level routing trees. |
| NOT required for | Simple, Weighted, Latency, Failover, Geolocation, Multivalue |
| Versioning | Policies are versioned β roll back to previous versions |
| Reusable | One policy can be applied to multiple DNS names |
π Exam tip: You do NOT need Traffic Flow for basic routing policies. Only use it when combining policies (e.g., geoproximity with failover) or when you need geoproximity bias control. The $50/month cost is a common distractor.
Returns up to 8 healthy records to the client. The client picks one randomly. It's like a simple round-robin but with health checks β unhealthy IPs are excluded from answers.
π Multivalue vs Simple: Simple returns all IPs (including unhealthy). Multivalue returns only healthy ones (max 8). Multivalue is NOT a replacement for ELB β it's client-side selection, not true load balancing.
| If the Exam Says⦠| Use | Why |
|---|---|---|
| "Route to closest/fastest region" | Latency-based | Picks lowest network latency, not geo distance |
| "Active-passive DR failover" | Failover | Primary + secondary with health check |
| "A/B testing, canary deployment" | Weighted | Control % of traffic to each version |
| "EU users must use EU servers (compliance)" | Geolocation | Routes by physical location, not performance |
| "Shift traffic between regions with bias" | Geoproximity | Distance + adjustable bias (Traffic Flow required) |
| "Client-side load distribution with health" | Multivalue Answer | Returns up to 8 healthy IPs |
| "One domain, one server, nothing fancy" | Simple | Default. No health check. Just one answer. |
7 routing policies. Latency = fastest region. Failover = DR. Weighted = A/B testing. Geolocation = compliance/localization. Geoproximity = bias control. Multivalue = healthy round-robin. Simple = basic DNS.
- Simple: one value, no health check. Default for basic DNS.
- Weighted: split traffic by percentage. A/B testing, canary deploys.
- Latency: route to lowest-latency region. Best UX for global apps.
- Failover: primary/secondary with mandatory health check. Active-passive DR.
- Geolocation: route by user's location (country/continent). Compliance, localization.
- Geoproximity: route by distance + bias. Requires Traffic Flow ($50/mo).
- Multivalue: return up to 8 healthy IPs. Client picks. Not a real load balancer.
- Exam key: "fastest" = latency. "compliance by country" = geolocation. "DR" = failover. "% split" = weighted.
Health Checks & Failover
Route 53 health checks monitor the health of your endpoints and automatically remove unhealthy records from DNS responses. They're the mechanism that powers failover, weighted, latency, and multivalue routing.
π Think of health checks as: Route 53 periodically pinging your servers β "are you alive?" If no response β stop sending traffic there.
Endpoint Health Check
- Route 53 sends requests to your endpoint (IP or domain)
- HTTP, HTTPS, or TCP
- ~15 global health checkers query every 30s (or 10s for fast)
- Healthy if >18% of checkers report healthy
- Can check HTTP status code + response body (first 5120 bytes)
Calculated Health Check
- Combines results of multiple child health checks
- AND, OR, or M-of-N logic
- "Healthy if at least 2 of 3 children are healthy"
- Use for: complex multi-resource monitoring
- Up to 256 child health checks
CloudWatch Alarm Health Check
- Health status based on a CloudWatch alarm state
- Useful for private resources (Route 53 can't reach private IPs)
- Monitor DynamoDB throttles, Lambda errors, custom metrics
- Alarm in ALARM β unhealthy. OK β healthy.
| Setting | Options | Default | Notes |
|---|---|---|---|
| Protocol | HTTP, HTTPS, TCP | HTTP | HTTPS validates SSL cert. TCP = port open check only. |
| Port | Any (1β65535) | 80 | Must match your application port |
| Path | Any URL path (HTTP/HTTPS) | / | Use /health or /status endpoint |
| Interval | 30s (standard) or 10s (fast) | 30s | Fast = 3Γ cost but detects failures faster |
| Failure Threshold | 1β10 consecutive failures | 3 | Unhealthy after N consecutive failures |
| String Matching | Search response body (first 5120 bytes) | Disabled | Body must contain specified string to be healthy |
| Regions | Choose which regions check from | All recommended | Minimum 3 regions required |
Route 53 health checkers live on the public internet β they cannot reach private IP addresses in your VPC. For private resources, use this pattern:
Won't Work
- Health check pointing to private IP (10.0.x.x)
- Health check pointing to private DNS name
- Route 53 checkers are external β can't enter VPC
Solution: CloudWatch Alarm
- Create CloudWatch metric for your private resource
- Create CloudWatch alarm (threshold-based)
- Create Route 53 health check β type: CloudWatch alarm
- Alarm ALARM β unhealthy. Alarm OK β healthy.
| Health Check Type | Cost | Notes |
|---|---|---|
| Endpoint (AWS) | $0.50/month | Endpoints within AWS regions |
| Endpoint (non-AWS) | $0.75/month | On-premise or other cloud endpoints |
| Fast interval (10s) | Additional $1.00/month | vs standard 30s interval |
| String matching | Additional $1.00/month | Check body content for specific string |
| HTTPS | Additional $1.00/month | TLS connection required |
| Calculated | $1.00/month | Combines child health checks |
π Calculated health check: Combine multiple child checks with AND/OR/M-of-N logic. Example: "Healthy if at least 2 of 3 children pass."
- Child 1: ALB health check in us-east-1
- Child 2: ALB health check in us-west-2
- Child 3: CloudWatch alarm on RDS CPU
- Rule: Report healthy if β₯2 of 3 children are healthy
- Result: One region can fail without triggering parent unhealthy status
Health checks monitor endpoints globally (every 30s from ~15 locations). Unhealthy records are removed from DNS. Private resources use CloudWatch alarms. Failover routing requires health checks on the primary.
- Three types: Endpoint (HTTP/HTTPS/TCP), Calculated (AND/OR/M-of-N), CloudWatch Alarm (private resources).
- ~15 global checkers query every 30s. Healthy if >18% pass. Unhealthy after 3 consecutive failures (default).
- Private resources: health checkers can't reach VPC IPs. Use CloudWatch alarm-based health checks.
- Failover: Primary (health check mandatory) + Secondary. Automatic DNS switch on failure.
- String matching: check response body (first 5120 bytes) for specific text.
- Fast interval: 10s instead of 30s β detects failure faster but costs more.
- Pricing: $0.50β$0.75/month per check + extras for fast/HTTPS/string matching.
Domain Registration & DNS Flow
Route 53 is also a domain registrar β you can buy domain names directly (example.com, myapp.io, etc.). When you register through Route 53, it automatically creates a hosted zone and assigns nameservers.
Register via Route 53
- Buy domain directly in AWS console
- Hosted zone auto-created with NS + SOA records
- No manual nameserver configuration needed
- Supports: .com, .net, .org, .io, .dev, hundreds of TLDs
- Domain lock + privacy protection included
Use Route 53 with External Registrar
- Buy domain at GoDaddy/Namecheap/Google Domains
- Create hosted zone in Route 53 manually
- Copy Route 53's 4 NS records to your registrar
- Now Route 53 is authoritative for that domain
- Common when migrating existing domains to AWS
| Step | Action | Notes |
|---|---|---|
| 1 | Unlock domain at current registrar | Remove transfer lock/hold |
| 2 | Get authorization code (EPP code) | Current registrar provides this |
| 3 | Initiate transfer in Route 53 console | Enter domain + auth code |
| 4 | Confirm email (ICANN requirement) | Sent to registrant email on record |
| 5 | Wait (up to 7 days) | Current registrar can approve or let it auto-approve |
| 6 | Route 53 creates hosted zone automatically | NS records set up. Done! |
π Key point: You don't need to transfer your domain to Route 53 to use Route 53 DNS. Just update nameservers at your registrar to point to Route 53's NS records. Transfer is optional (convenience + billing consolidation).
- Route 53 is a registrar β buy domains directly, or bring existing domains by updating NS records.
- Registration auto-creates a hosted zone with NS + SOA records.
- External registrar: create hosted zone in Route 53 β copy 4 NS records to registrar settings.
- Transfer: unlock β auth code β initiate in Route 53 β confirm β up to 7 days.
- Transfer β required. You can use Route 53 DNS without transferring the domain (just update NS).
Integration with AWS Services
Route 53 integrates natively with nearly every AWS service that exposes an endpoint. The Alias record is what makes this seamless β it resolves to AWS resources without extra DNS hops, free of charge.
ELB (ALB / NLB)
- Alias record β ALB/NLB DNS name
- Works at zone apex (example.com β ALB)
- ALB IPs change β Alias auto-tracks
- Combine with latency/failover routing for multi-region
CloudFront
- Alias β CloudFront distribution (d111.cloudfront.net)
- Must add domain as Alternate Domain Name (CNAME) in CloudFront
- Requires ACM certificate in us-east-1
- Common: static site + CDN with custom domain
S3 Static Website
- Alias β S3 website endpoint
- Bucket name must match domain name (example.com bucket for example.com Alias)
- S3 website hosting must be enabled
- Limited: no HTTPS on S3 alone (use CloudFront for HTTPS)
API Gateway
- Custom domain name in API Gateway + Alias record
- Edge-optimized: ACM cert in us-east-1
- Regional: ACM cert in same region as API
- Pattern: api.example.com β API Gateway β Lambda
| Scenario | Route 53 Record | Target | Notes |
|---|---|---|---|
| Web app behind load balancer | Alias (A) | ALB DNS name | Auto-tracks ALB IP changes |
| Static site with custom domain + HTTPS | Alias (A) | CloudFront distribution | ACM cert in us-east-1 required |
| Static site (HTTP only, simple) | Alias (A) | S3 website endpoint | Bucket name = domain name |
| REST API with custom domain | Alias (A) | API Gateway custom domain | Edge or Regional API |
| Email routing | MX | Mail server DNS names | Priority + hostname |
| Domain verification (SSL/SES) | CNAME or TXT | Verification token | ACM auto-creates if using Route 53 |
| Internal service discovery | A (Private HZ) | Private IP / ENI | Private hosted zone associated with VPC |
π ACM + Route 53 bonus: When validating SSL certificates with ACM, if your domain is in Route 53, ACM offers a "Create record in Route 53" button β one-click DNS validation. No manual record creation needed.
- ALB/NLB: Alias record at apex. Auto-tracks IP changes. Free queries.
- CloudFront: Alias + alternate domain name + ACM cert (us-east-1).
- S3 website: Alias. Bucket name must = domain name. HTTP only (use CloudFront for HTTPS).
- API Gateway: Custom domain + Alias. Edge = us-east-1 cert. Regional = local cert.
- ACM validation: one-click DNS record creation when domain is in Route 53.
- Private HZ: internal VPC service discovery (db.internal.example.com β private IP).
Architecture Patterns
Primary region runs full application. If health check fails β Route 53 failover routes traffic to a static S3 "sorry" page or a warm standby in another region.
π Architecture: Failover routing. Primary = ALB in us-east-1 (health check). Secondary = S3 static website (maintenance page) OR secondary ALB in eu-west-1. Cost: cheap DR β S3 static page costs pennies until actually needed.
Use weighted routing to gradually shift traffic from the old version to the new version:
| Phase | Blue (v1) Weight | Green (v2) Weight | Traffic Split |
|---|---|---|---|
| Start | 100 | 0 | 100% β v1 |
| Canary | 90 | 10 | 90% v1, 10% v2 (test) |
| Expand | 50 | 50 | 50/50 split |
| Complete | 0 | 100 | 100% β v2 |
| Rollback? | 100 | 0 | Instant rollback β back to v1 |
| Scenario | Solution | Routing Policy |
|---|---|---|
| "Global app β users in US should have low latency, EU users too" | Deploy in us-east-1 + eu-west-1. Route 53 latency routing with health checks. | Latency |
| "DR β if primary region fails, serve maintenance page" | Failover: Primary = ALB. Secondary = S3 static site. | Failover |
| "Static website with custom domain + HTTPS" | Route 53 Alias β CloudFront β S3. ACM cert in us-east-1. | Simple (Alias) |
| "Gradually roll out new version to 10% of users" | Weighted routing: old=90, new=10. Health checks on both. | Weighted |
| "Legal: EU users MUST hit EU servers" | Geolocation routing: EU β eu-west-1 ALB. Default β us-east-1. | Geolocation |
| "Internal microservices communicate by name" | Private Hosted Zone associated with VPC. A records for each service. | Simple (Private) |
Route 53 powers multi-region, DR, CDN, and deployment patterns. Latency routing + health checks = active-active global. Failover = DR. Weighted = blue-green. CloudFront + Route 53 = static HTTPS sites. Private HZ = service discovery.
- Active-Active: Latency routing + health checks across 2+ regions. Both serve traffic. Failed region auto-removed.
- Active-Passive DR: Failover routing. Primary (health checked) + Secondary (S3 page or standby ALB).
- Static site: Route 53 Alias β CloudFront (HTTPS + CDN) β S3 origin. ACM cert in us-east-1.
- Blue-Green: Weighted routing. Shift traffic gradually (90/10 β 50/50 β 0/100). Instant rollback.
- Compliance: Geolocation routing. EU users β EU servers. Must set default record.
- Internal DNS: Private Hosted Zone. Service discovery without exposing to internet.