networking

Amazon Route 53

DNS that points your domain at AWS — the first hop before CloudFront or S3 ever get involved. Here's what Route 53 is good for, what it costs, how it connects to CloudFront, S3, and your load balancers, and the mistakes Design Beaver catches as you draw.

Updated July 12, 2026

What Route 53 is

Route 53 is AWS’s DNS service — it answers “where does example.com actually live” for anyone typing your domain into a browser. For a static site, it’s the outermost layer: a visitor’s browser resolves your domain through Route 53, which then points at your CloudFront distribution before anything else in your architecture gets involved. It routes a domain name to AWS resources, or to non-AWS ones.

Design Beaver models Route 53 as a global service with no VPC or subnet concept — nesting it inside a subnet is misleading — and validates as you draw which targets it can point at and what each record needs to be correct.

When to use Route 53 (and when not to)

Reach for Route 53 when a production site needs its own domain instead of a *.cloudfront.net URL, or when you need DNS-level routing policies: weighted rollouts, latency-based routing, geolocation, or health-check-driven failover. That routing lives at the DNS layer, above any single resource.

Don’t reach for it during purely local development, when there’s no real domain in play yet. And if you already manage DNS somewhere else and only need occasional references to AWS resources, you can — but ALIAS records specifically require the zone to actually live in Route 53, so that convenience has a catch.

Variants: routing policies, not instance sizes

Route 53 has no instance sizes. The meaningful choice point is the routing policy — how a name maps to one or more targets.

OptionWhat it is
Simple routingdefaultOne record, one resource. What a single static site uses.
Alias recordRoute 53-specific record type for AWS resources (CloudFront, S3 website endpoints, ALB, API Gateway, VPC endpoints). Free queries, works at the zone apex, auto-updates if the target's underlying address changes.
Weighted routingSplit traffic by percentage across multiple resources (e.g. canary rollout).
Latency-based routingRoute to the region with the lowest latency for the requester.
Failover routingActive-passive failover between a primary and secondary resource, driven by health checks.

Route 53 pricing

Route 53 is one of the few AWS services with essentially no meaningful free tier — you pay per hosted zone per month plus per-query charges, billed from the first zone. The big exception: ALIAS queries to AWS resources are free, permanently, not a 12-month trial.

Pay per hosted zone per month, plus per-query DNS charges. No free tier for hosted zones or standard queries — this is one of the few AWS services with essentially no meaningful free tier.

OptionRepresentative rate
simple$0.50/hosted-zone/month for the first 25 zones, $0.10/month after that
aliasFree — DNS queries to alias records pointing at AWS resources aren't billed
simple$0.40 per million standard queries (non-alias); latency/geo/IP-based routing queries are priced higher

Free tier

  • First 50 health checks of AWS endpoints in the same account are free
  • Alias queries to AWS resources are always free (not a time-limited free tier, a permanent free query type)

Rates as of 2026-07. Verify at the official pricing page before using for real cost estimates.

How Route 53 connects to other services

DNS looks like a single arrow on a diagram, but the record type on that arrow decides whether it works at the zone apex and whether you get billed for every query. Design Beaver models each connection — CloudFront, S3, EC2, ALB, API Gateway — so it knows what Route 53 can point at and what that record has to be.

  • Alias record pointing the domain (including the zone apex) at a CloudFront distribution

  • S3

    Alias record pointing at an S3 bucket configured as a website endpoint

  • EC2

    A/AAAA record pointing directly at an EC2 instance's Elastic IP, or at an ALB in front of an EC2 fleet

  • Alias record pointing the domain at an Application Load Balancer, so users hit a custom domain instead of the ALB's own *.elb.amazonaws.com DNS name

  • Alias record pointing a custom domain at an API Gateway API, so clients call api.example.com instead of the default execute-api URL

What Route 53 can’t connect to

Some edges look reasonable on a canvas but aren’t things a domain resolves to directly. Design Beaver flags them instead of letting you draw a diagram that can’t be built.

  • Lambda is not a valid Route 53 alias target — DNS resolves to a CloudFront distribution, S3 website endpoint, load balancer, API Gateway, or similar; not directly to a function

  • RDS

    Not a valid alias target and not something a domain resolves to directly

  • Same as RDS — not a DNS-addressable target

Anti-patterns Design Beaver catches

This is the Route 53 mistake that passes a diagram review but quietly costs you — the one the validation engine flags as you draw.

CNAME record pointing at a CloudFront distribution or S3 website endpoint instead of an ALIAS record

Why it breaksCNAME queries are billed per query and can't be created at the zone apex (e.g. example.com, only www.example.com); ALIAS records to AWS resources are free and work at the apex

Do this insteadUse an ALIAS record for any AWS resource target

Gotchas that bite in production

  • There’s essentially no free tier. Hosted zones and standard queries are billed from the first zone, unlike most AWS services that give you some runway before charges start.
  • ALIAS queries to AWS resources are free — permanently. Not a 12-month trial. This is one of the few “always free, not time-limited” line items in AWS pricing, so prefer ALIAS over CNAME wherever the target supports it.
  • Pointing directly at an S3 website endpoint works, but inherits S3’s gotcha. That endpoint has no HTTPS and no CDN caching in front of it. For production, the setup you actually want is Route 53 → CloudFront → S3, not Route 53 straight to the bucket.
  • EC2 isn’t a valid ALIAS target, but an ALB is. If you’re fronting an EC2 fleet, alias to the ALB rather than trying to alias directly to an instance. Pointing at a single instance’s Elastic IP also has no failover if that instance goes down.
  • Delete unused hosted zones. They’re billed as soon as they exist, not just when they’re queried.

Further reading

Frequently asked questions

When should you use Amazon Route 53?
Use Route 53 when a production site needs its own domain instead of a *.cloudfront.net URL, or when you need DNS-level routing policies — weighted rollouts, latency-based routing, or health-check-driven failover. It's a poor fit for local development with no real domain yet, or when you already manage DNS elsewhere — though note that ALIAS records specifically require the zone to live in Route 53.
Should you use an ALIAS record or a CNAME to point at a CloudFront distribution?
Use an ALIAS record. CNAME can't be created at the zone apex (example.com itself, not just www.example.com) and is billed per query. ALIAS records to AWS resources are free and work at the apex, and they auto-update if the target's underlying address changes. Design Beaver flags a CNAME to a CloudFront or S3 target as an anti-pattern.
Can Route 53 point directly at a Lambda function?
No. Route 53 resolves to targets like a CloudFront distribution, S3 website endpoint, load balancer, or API Gateway endpoint — not directly to a Lambda function, an RDS database, or a DynamoDB table. Design Beaver flags a Route 53 → Lambda edge as invalid.
Does Route 53 have a free tier?
Not a meaningful one for the basics — hosted zones and standard queries are billed from the first zone, unlike most AWS services that give you some runway before charges start. What is permanently free — ALIAS queries to AWS resources, plus a limited number of health checks on AWS endpoints in the same account. Verify the current figures and rates on the official pricing page before estimating a bill.

Validate your Route 53 architecture as you draw

Design Beaver checks your AWS design in real time — missing queues, invalid connections, and security anti-patterns, caught before you ship. It’s live in beta, free, and runs in your browser with no account.

Open the app →

Prefer email? Get new features in your inbox:

← All supported services