Route 53 Routing Policies Compared: Choosing Among the 8 Policies

5 min read

Every record you create in Route 53 asks for a routing policy. There are eight, but the conclusion up front: most records are fine with Simple, and the four policies Simple (ordinary records), Weighted (splitting traffic), Latency (multi-region), and Failover (DR) cover nearly everything in practice. The other four have narrowly defined jobs: regulatory pinning (Geolocation), fine-grained traffic shifting (Geoproximity), load-balancer-less distribution (Multivalue), and special network mapping (IP-based). DNS and domain basics are in AWS Intermediate #5 Route 53, and hands-on record setup in DNS records in practice. Prices are for us-east-1.

Side-by-side comparison #

PolicyJobQuery rate (per million)Health checks
SimpleOrdinary record, one target~$0.40No
WeightedRatio splits, canary deploys~$0.40Attachable
LatencyNearest region in multi-region~$0.60Attachable
FailoverPrimary/secondary DR~$0.40Required
GeolocationCountry/continent pinning~$0.70Attachable
GeoproximityDistance-based plus bias tuning~$0.70Attachable
MultivalueSeveral IPs per answer, light LB~$0.40Attachable
IP-basedMapping by caller CIDR (ISPs, sites)~$0.80Attachable

Two pricing facts frame everything. Alias queries to AWS resources — ALB, CloudFront, S3 — are free, so architectures that stay inside AWS mostly pay nothing for queries. Paid queries are those to external endpoints or non-alias records, at rates from $0.40 to $0.80 per million depending on policy. Hosted zones cost $0.50 a month (first 25). Health checks run about $0.50 a month against AWS endpoints, about $0.75 against external ones, plus $1 per optional feature such as string matching.

The working four: Simple, Weighted, Latency, Failover #

Simple needs no explanation: one name, one target. It cannot take a health check, so the moment automatic failover matters, move to another policy.

Weighted splits traffic by ratio. The flagship use is canary deployment: give the new version weight 5 against 95, then raise it while watching metrics. The trick worth knowing is that weight 0 is a valid value — a record parked at 0 becomes a traffic switch you flip by raising the weight. The caveat is DNS caching: a long TTL delays ratio changes, so records used as cutover levers keep TTL around 60 seconds.

Latency is the default for multi-region. Create per-region records under one name and users route to the region with the lowest measured latency — network distance, not geographic distance, which is what separates it from Geolocation. With health checks attached, a failing region drops out automatically, so active-active multi-region generally ends up as this policy plus health checks.

Failover builds DR from a primary and a secondary record. When the primary’s health check fails, answers switch to the secondary — an S3 status page or a standby stack in another region, same structure. Health checks are mandatory here, and since DNS cutover waits on TTL, that delay belongs in the RTO math.

The narrow four: Geolocation, Geoproximity, Multivalue, IP-based #

Geolocation pins answers by the user’s country or continent. It is not a latency optimization but a requirement tool: data sovereignty, licensing territories, language-split sites. Always create a Default record for unmapped locations, or those users get no answer.

Geoproximity is distance-based routing with a bias dial. Raising a resource’s bias widens the area it attracts, which suits adjustments like “Oregon got more capacity, send it a bit more.” It is usually driven through the Traffic Flow policy editor; if your requirement is not this specific, Latency is enough.

Multivalue returns up to eight healthy records per query, and the client picks one — distribution without a load balancer. It fits small setups that do not justify an ALB, or cases where the point is dropping dead IPs from answers via health checks. It does not guarantee even spreading; real load balancing is the job of ALB and NLB.

IP-based maps answers by the caller’s CIDR block, for cases like steering a specific ISP or your own branch network — viable only when you actually know the source ranges. It is the last of the eight to reach for.

Decision order #

  1. One target means Simple, done: pointed at an AWS resource via an alias record, queries cost nothing either.
  2. Deploy cutovers and ratio tests mean Weighted: keep TTL short on canary and blue-green records, and use the weight-0 parking pattern as the switch.
  3. Multi-region defaults to Latency plus health checks: switch to Geolocation only when regions must be pinned for legal reasons.
  4. Build DR on Failover and put TTL in the RTO: health check interval plus TTL is the real switchover time.
  5. Use the remaining three only on exact requirement match: bias tuning means Geoproximity, LB-less spreading means Multivalue, source-range mapping means IP-based. When in doubt, return to the four above.

Summary #

  • Practice runs on four policies: Simple, Weighted, Latency, Failover. The other four are special-purpose tools with narrow jobs.
  • Alias queries to AWS resources are free; paid queries run $0.40–$0.80 per million depending on policy.
  • A weight-0 parked record with a short TTL is the standard traffic switch, and TTL is the lower bound on any DNS cutover.
  • Latency routes by network distance, Geolocation by jurisdiction. Performance means the former; regulation means the latter.
  • Health checks are mandatory for Failover and useful elsewhere, at about $0.50 a month for AWS endpoints and $0.75 external. Records that need automatic failover should not go without.
X