SaveMyCert
Log in
5 of 5 free questions left today·for 30 a day
Networking and Content Delivery

Route 53 DNS and CloudFront Content Delivery for SOA-C03

20 min readSOA-C03 · Networking and Content DeliveryUpdated

Amazon Route 53 is AWS's DNS service — hosted zones, records, routing policies, health checks, and the Resolver that answers every query inside your VPCs — and Amazon CloudFront is the CDN that delivers your content from edge locations worldwide. Task 5.2 of the SOA-C03 exam tests whether you can configure both as an operator: choose alias records over CNAMEs at the zone apex, wire hybrid DNS with Resolver endpoints and share it across accounts, pick the routing policy and health check a scenario demands, enable the query log that answers the question being asked, and build CloudFront distributions with Origin Access Control, ordered cache behaviors, sane TTLs, origin failover, and an ACM certificate in the right Region. It closes with the exam's favorite comparison: CloudFront versus AWS Global Accelerator. Configuration lives here; diagnosing cache misses and failed resolutions belongs to Task 5.3.

What you’ll learn
  • Configure public and private hosted zones, choose the right record type for each job, and use alias records at the zone apex
  • Plan DNS changes with TTL reductions ahead of a cutover
  • Set up Route 53 Resolver endpoints and forwarding rules for hybrid DNS, and share private zones and rules across accounts
  • Select the routing policy — simple, weighted, latency, failover, geolocation, geoproximity, or multivalue — and the health check that matches a scenario
  • Enable the right query logging surface: public DNS query logs versus Resolver query logs
  • Configure CloudFront origins with OAC, ordered cache behaviors with cache and origin request policies, TTLs, invalidations, origin failover, and custom-domain HTTPS
  • Choose between CloudFront and Global Accelerator by protocol, caching, static IP, and failover needs

Hosted zones and record types in practice

Route 53 organizes DNS records into hosted zones, and the first configuration decision is visibility. A public hosted zone answers queries from anywhere on the internet for a domain you control. A private hosted zone answers only from the VPCs you explicitly associate with it — you can associate more VPCs at any time, but each VPC must have DNS resolution and DNS hostnames enabled or queries fall through. You can run both zones for the same name (split-horizon DNS): inside an associated VPC the private zone wins, so db.example.com can resolve to a private IP internally while the public internet sees nothing.

The record types you will actually operate:

  • A — name to IPv4 address; AAAA — name to IPv6 address.
  • CNAME — name to another name. A CNAME cannot coexist with other record types at the same name, and DNS forbids it at the zone apex (the bare domain).
  • TXT — arbitrary text: domain-ownership verification, SPF and DKIM email policy.
  • MX — mail servers with priorities; the lowest number is tried first.

Operationally, remember that hosting a zone and registering a domain are separate functions: you can host a zone for a domain registered elsewhere by pointing that registrar at your zone's four Route 53 name servers. Record changes propagate quickly from Route 53's side; what limits how fast the world sees them is resolver caching — which is where TTLs and alias records, the next section, come in.

Alias records and TTL operations

Alias records are a Route 53 extension to standard DNS that solve the CNAME problem. Where a CNAME can only point at another name and is illegal at the zone apex, an alias record points directly at an AWS resource — a CloudFront distribution, an Application or Network Load Balancer, an API Gateway API, a Global Accelerator, or another record in the same hosted zone — and it works at the apex. “Point example.com (no www) at an ALB” is an alias-record answer every time. Alias queries to AWS resources are also free, unlike standard queries, so swapping a busy CNAME that targets a load balancer for an alias cuts query charges. Route 53 manages the alias's TTL itself and tracks the target: when the load balancer's or the distribution's addresses change, the alias follows automatically, which is why a hard-coded A record listing today's IPs is never the right fix. An alias can also evaluate its target's health (Evaluate Target Health, covered with health checks below).

For everything else, TTL is your main operational lever. A record's TTL tells every caching resolver in the world how long it may keep the answer — which means the TTL that hurts you during a change is the one that was set before the change. Lowering the TTL at the moment of the cutover, converting to an alias at that moment, or submitting the change as a change batch all leave resolvers holding the old answer for the old TTL. The standard migration play: well ahead of a planned cutover, and at least one full old-TTL period in advance, lower the record's TTL from, say, 86400 seconds to 60. Wait for the old value to age out of caches, make the change, confirm the new target is healthy (a rollback is now just as fast), then raise the TTL back so resolvers stop hammering your zone. Low TTLs buy fast changes at the cost of more queries; high TTLs buy a cheap, resilient steady state at the cost of slow changes.

Route 53 Resolver and hybrid DNS

Every VPC has a built-in DNS server: the Route 53 Resolver, reachable at the VPC CIDR base plus two — in 10.0.0.0/16, that is 10.0.0.2 (the link-local address 169.254.169.253 also works). It resolves private hosted zone names, VPC-internal names, and public internet names for every instance in the VPC, and it is reachable only from inside the VPC. That last property is exactly what hybrid DNS has to work around, in two directions.

Inbound Resolver endpoint — on premises resolves AWS names. An inbound endpoint places ENIs with fixed private IPs into your subnets. You configure your on-premises DNS servers to conditionally forward AWS zones — say internal.example.com — to those IPs; the queries arrive over your Site-to-Site VPN and hand off to the Resolver. Result: data-center servers resolve private hosted zone records.

Outbound Resolver endpoint — VPCs resolve on-premises names. An outbound endpoint gives the Resolver a path out. You create forwarding rules — “for corp.example.com, forward to 10.10.0.53” — and associate each rule with the VPCs that need it. Instances keep querying their normal .2 address; matching queries are forwarded through the endpoint to your on-premises DNS servers.

Full hybrid DNS uses both endpoints at once, one per direction. On the exam, direction is everything: “on-premises servers must resolve VPC or private-zone names” is an inbound endpoint; “EC2 instances must resolve data-center domains” is an outbound endpoint plus forwarding rules. Neither replaces network connectivity — endpoints carry DNS queries over the private links you already have. And on-premises DNS cannot simply forward to a VPC's .2 address over the VPN: that address serves only queries from inside the VPC, which is the whole reason the inbound endpoint exists.

Why not just a DHCP options set? Pointing a VPC's DHCP options set at on-premises DNS servers does make instances query the data center directly — but it bypasses the Route 53 Resolver, so instances lose private hosted zone and AWS-internal name resolution unless the on-premises servers forward those names back. Keeping instances on the .2 Resolver and adding a forwarding rule forwards only the matching domain and leaves everything else working.

Sharing private zones and Resolver rules across VPCs and accounts

A private hosted zone or a Resolver forwarding rule built once can serve many VPCs and accounts, but each resource crosses account boundaries in its own way, and the exam tests which mechanism belongs to which.

GoalMechanism
Another VPC in the same account must resolve a private hosted zoneAssociate the VPC with the zone. Peering does not help — each VPC sees only the private zones associated with it.
A VPC in another account must resolve a private hosted zoneTwo steps, in order: the zone owner's account creates a VPC association authorization (CreateVPCAssociationAuthorization); the VPC owner's account then associates the VPC (AssociateVPCWithHostedZone). Both are done with the CLI, SDK or API — the console cannot select another account's VPC. Delete the authorization afterwards; the association stays.
Many accounts' VPCs must use one set of hybrid DNS forwardingShare the Resolver rule through AWS Resource Access Manager (RAM). The outbound endpoint stays in the owner account; each consumer associates the shared rule with its own VPCs in the same Region, and queries leave through the owner's endpoint.
Hand a whole DNS configuration to many accountsA Route 53 Profile groups private hosted zone associations, Resolver rules and DNS Firewall rule groups, and the Profile is shared through RAM. A private hosted zone on its own is not a RAM share target.

Two traps follow from the table. Endpoints are not what you share — rules (or Profiles) are. And authorize-then-associate is the private hosted zone flow only; Resolver rules never use it. Whichever mechanism you choose, the records stay maintained in one place, which is usually the requirement that rules out copying a zone into each account.

Routing policies compared — and a canary migration

Routing policies decide how Route 53 answers when multiple records share a name, and the exam tests them as scenario-to-policy matching.

PolicyHow it answersReach for it when
SimpleOne record, all its values returned; health checks cannot be usedA single resource, nothing to steer
WeightedSplits answers by assigned weights; one record per response, unhealthy records skipped when health-checkedCanary releases, gradual migrations, A/B splits
Latency-basedThe Region measured fastest for that userMulti-Region deployments chasing performance
FailoverPrimary while its health check passes; otherwise secondaryActive-passive DR, a static fallback page
GeolocationBy the user's location (country, continent)Compliance or localized content; always set a default record
GeoproximityBy distance to your resources, with a bias knobDeliberately shifting the share of traffic a Region absorbs
Multivalue answerUp to eight healthy records; the client picksCheap DNS-level load spreading with per-record health checks

Distinguish the geo pair: geolocation is about where the user is — an exact-match lookup, so Germany gets the Frankfurt answer, full stop — while geoproximity is about how far the user is from your resources, with a bias value that grows or shrinks each resource's catchment area. Geolocation answers only the locations you list, so a location with no matching record gets no answer unless you add a Default record. Latency routing is a third, separate idea: it measures network latency from the user's resolver to each Region, so it cannot honor a border-exact compliance rule.

Simple, weighted and multivalue are easy to confuse. Simple routing returns every value in its one record but cannot use health checks, so a failed server stays in the answer. Weighted routing can skip unhealthy records, but each response comes from a single weighted record, so a client never gets a set of independently health-checked addresses to fall back on. Multivalue answer returns up to eight healthy records per response, each with its own health check, letting a client fail over to another address without querying again. It is still not a load balancer — the client chooses.

The canary walkthrough — migrating an API from an old load balancer to a new one:

  1. Days ahead, lower the record TTL to 60 seconds and let the old TTL age out of caches.
  2. Create two weighted alias records for the same name: old target weight 90, new target weight 10.
  3. Watch the new target's error rates and latency while it takes a tenth of production traffic.
  4. Shift weights in stages — 50/50, then 0/100. A bad stage rolls back by setting the new record's weight to 0.
  5. Once stable, delete the old record and raise the TTL back up.

Health checks that drive routing

A routing policy only steers around failures if Route 53 knows what is healthy, and there are two ways to tell it. Health checks themselves are configured as Route 53 resources; Domain 2 covers their resilience role, and here the question is which one a record can use.

OptionHow it decides healthWorks for
Endpoint health checkRoute 53 health checkers on the internet probe an IP or domain name over HTTP, HTTPS or TCPPublicly reachable endpoints only — the checkers cannot reach a private IP inside a VPC
CloudWatch alarm health checkMirrors the state of a CloudWatch alarm you choosePrivate resources: publish a metric the service emits, alarm on it, and monitor the alarm
Calculated health checkCombines the results of other health checks“Healthy if at least N of these are healthy”
Evaluate Target HealthAn alias record inherits the health of its AWS target, such as a load balancer with no healthy targetsAlias records only — a record holding an instance IP has no target to evaluate

Records accept health checks, not alarms directly: for a private service behind failover records in a private hosted zone, the pattern is metric → CloudWatch alarm → health check that monitors the alarm → attached to the primary record. For multi-Region latency or failover records that alias load balancers, turning on Evaluate Target Health (or attaching a health check) lets Route 53 skip that Region's record when its load balancer has no healthy targets and answer with the next-best record instead.

Query logging: two logs, two questions

Route 53 offers two query logs, and exam questions hinge on knowing which log records which queries — and which tools record none.

Public DNS query loggingResolver query logging
CapturesQueries internet resolvers send to Route 53's authoritative name servers for your public hosted zoneQueries originating inside associated VPCs — everything instances ask the .2 Resolver, whatever the domain
Configured onThe public hosted zoneA query logging configuration associated with VPCs
DestinationsCloudWatch Logs only, in a log group in us-east-1CloudWatch Logs, Amazon S3, or Amazon Data Firehose
PermissionsA CloudWatch Logs resource policy allowing route53.amazonaws.com to create log streams and put events (not an IAM role)Set up when you create the configuration
Typical fieldsRecord name and type, response code, the Route 53 edge location that answered, the resolver's IP addressSource IP and source instance ID, name, type, response code, DNS Firewall action

Public query logging answers “who is querying my public domain” — verifying a record is being queried after a cutover or spotting query floods. If the log group is in another Region, or the resource policy is missing, the configuration cannot be saved. Resolver query logging answers “what are my instances looking up” — which instance queried a suspicious domain, why an application resolves the wrong name, or what Route 53 Resolver DNS Firewall just blocked.

Two neighbors are not substitutes. VPC Flow Logs record IP traffic metadata with no domain names, and they do not capture traffic to the Amazon-provided DNS server at all. AWS CloudTrail records Route 53 API calls — management events such as record changes and hosted zone updates — not the DNS queries instances send to the Resolver.

CloudFront origins and Origin Access Control

A CloudFront distribution is configuration, not infrastructure you place: you define origins (where content lives) and cache behaviors (how requests are handled), and CloudFront serves users from its global edge locations.

S3 origins and Origin Access Control. The operational standard for S3 is a private bucket, Block Public Access left on, fronted by Origin Access Control (OAC). CloudFront signs its requests to S3 as the cloudfront.amazonaws.com service principal, and the bucket policy allows s3:GetObject to that principal only when AWS:SourceArn equals your distribution's ARN — so only this distribution can read, and direct bucket URLs fail. Signed URLs do not replace this: they control which viewers may use the distribution, not whether CloudFront may read the bucket. Referer-header bucket policies need public access and are trivially spoofed.

OAC works only with the bucket's REST endpoint. An S3 website endpoint is treated as a custom origin that serves public content; CloudFront cannot sign requests to it, so the bucket would have to be public.

SSE-KMS objects. If objects are encrypted with a customer managed KMS key, the bucket policy is not enough: the KMS key policy must also allow the CloudFront service principal kms:Decrypt, conditioned on the distribution's ARN. A bucket policy statement granting kms:Decrypt does nothing, because bucket policies govern S3 actions only. The telltale symptom is 403s on objects written after the encryption change while older SSE-S3 objects still load. OAC is also the successor to the legacy origin access identity (OAI), which does not support SSE-KMS; new configurations should use OAC.

Custom origins. These cover everything that speaks HTTP: an Application Load Balancer, an API Gateway API, or any web server with a resolvable DNS name. With CloudFront VPC origins (since November 2024), a distribution can also reach an internal ALB, NLB or EC2 instance in a private subnet without exposing it to the internet.

Cache behaviors, cache policies, and origin request policies

A distribution routes requests to origins by cache behavior: each behavior has a path pattern, a target origin, and its own policies. /api/* can go to the ALB origin with caching disabled, /static/* to the S3 origin with long TTLs, and the default * behavior catches whatever matches nothing else — changing the default's origin moves every unmatched request.

Precedence. Behaviors are evaluated in precedence order and the first matching pattern wins, so list specific patterns before general ones: /images/thumbs/* must sit above /images/* or thumbnail requests never reach it. In path patterns, * matches any characters including slashes, so /images/*.jpg still matches /images/thumbs/cat.jpg — rewriting a pattern is not a substitute for ordering.

Cache policy versus origin request policy. Each behavior also sets its viewer protocol policy (for example, redirect HTTP to HTTPS) and allowed methods, plus the two policies that trip people up:

Cache policyOrigin request policy
ControlsThe cache key (which headers, cookies and query strings make responses distinct) and the minimum/default/maximum TTLsAdditional headers, cookies and query strings forwarded to the origin without joining the cache key
Common managed policiesCachingOptimized (long TTLs, minimal key), CachingDisabled (TTLs of 0, nothing cached)AllViewer (forward every viewer header, cookie and query string)
Cannot—Choose an origin — only the behavior's path pattern does that

CloudFront forwards to the origin only what is in the cache key or in the origin request policy. That matters for dynamic, per-user pages: CachingDisabled on its own stops caching but forwards no cookies or query strings, because nothing is in its key; pairing it with AllViewer sends everything the application needs and caches nothing. Keying on every value with tiny TTLs is the wrong fix — it still caches briefly and fragments the cache. In general, forward what the origin needs through the origin request policy, and key only on what truly changes the response.

TTLs, cache headers, and invalidations

Caching lifetime is a negotiation between your origin's headers and each behavior's three TTL settings. If the origin sends Cache-Control: max-age (or Expires), CloudFront honors it — clamped between the behavior's minimum TTL and maximum TTL, so a max-age=30 against a 300-second minimum is cached for 300 seconds. If the origin sends no caching headers, the default TTL applies. An origin emitting Cache-Control: no-cache against a minimum TTL of 0 is effectively uncached, and a forgotten long default TTL is why a quick fix is not showing up for users.

Edge versus browser lifetimes. s-maxage applies to shared caches: when it is present, CloudFront uses it instead of max-age (still within the TTL bounds), while browsers ignore it and use max-age. So Cache-Control: max-age=60, s-maxage=3600 keeps a page at the edge for an hour and in browsers for a minute. stale-while-revalidate is different: the object still goes stale after its max-age, and CloudFront may keep serving the stale copy for the window while it fetches a fresh one from the origin in the background — it does not extend how long the edge treats the copy as fresh.

Removing stale content. Changing a behavior's TTL settings does not remove copies already in edge caches. When a file at a fixed URL must change now, an invalidation removes it from the edge ahead of expiry. Invalidations are billed per path beyond a monthly free allowance — the first 1,000 paths each month are free — and a wildcard such as /assets/* counts as a single path. An invalidation also takes time to complete across edge locations, so during a wide invalidation pages can load a mix of old and new assets, and rolling back needs another invalidation. The better pattern for deployable assets is versioned object names — app.a1b2c3.css instead of app.css: each deploy's HTML references new cache keys, pages always get the exact bundle they were built with, nothing needs invalidating, old versions age out, and rollback means serving the previous HTML. Reserve invalidations for content whose URL cannot change.

Origin Shield is a separate lever: an additional, centralized caching layer between the edge caches and your origin that raises the hit ratio and reduces origin load. It does not refresh or remove objects already cached at the edge.

Origin failover with origin groups

An origin group gives a cache behavior a primary and a secondary origin. CloudFront sends each request to the primary; if the primary returns a status code listed in the group's failover criteria (chosen from 400, 403, 404, 416, 500, 502, 503 and 504), or the connection fails or times out, CloudFront retries that same request against the secondary straight away. The connection attempts and timeout settings on an origin decide how quickly a non-responding primary counts as failed — raising them only makes CloudFront wait or retry longer against the same origin.

Origin failover applies only to GET, HEAD and OPTIONS requests. A POST or PUT — submitting a form, placing an order — goes to the primary origin even during an outage, and the primary's error goes back to the viewer. Failover depends on the method and the criteria, not on whether the response is cacheable.

MechanismWhat it does on an origin error
Origin group failoverRetries the individual request against the secondary origin immediately, so viewers still get content
Custom error responseReplaces the error with an error page (optionally cached); the viewer gets no real content
Route 53 failover recordsChanges DNS answers after health checks fail and cached answers expire — never per request

Custom-domain HTTPS on CloudFront

Serving https://shop.example.com through CloudFront without certificate warnings takes three pieces, and the exam likes to drop one:

  1. Certificate in us-east-1. Request or import a public ACM certificate covering the name in us-east-1 — CloudFront reads distribution certificates only from that Region, no matter where your origin, users, or you work. A certificate issued in the origin's Region simply does not appear as an option, and a certificate on the ALB's listener secures only the CloudFront-to-origin hop.
  2. Alternate domain name. Add shop.example.com to the distribution's alternate domain names (CNAMEs) and attach that certificate.
  3. DNS to the distribution. Create a Route 53 alias record for the name that targets the distribution's domain name (an alias is required at the apex, and preferred everywhere). Pointing DNS at the ALB instead bypasses the distribution.

Signed URLs or signed cookies are a separate control: they restrict delivery of private content to authorized viewers, and have nothing to do with the domain's certificate.

CloudFront vs Global Accelerator

CloudFront and AWS Global Accelerator both put your application behind AWS's global edge network, and the exam loves making you choose. They solve different problems: CloudFront is a content delivery network that caches HTTP responses at the edge; Global Accelerator is a network-layer front door that gives you two static anycast IP addresses and proxies TCP and UDP connections over the AWS backbone to the closest healthy regional endpoint — an ALB, NLB, EC2 instance, or Elastic IP. It caches nothing.

CloudFrontGlobal Accelerator
ProtocolsHTTP and HTTPSTCP and UDP, any port
AddressesDistribution domain name; opt-in Anycast Static IPs give a larger fixed list, HTTP/HTTPS onlyTwo static anycast IPv4 addresses (four when dual-stack)
CachingYes — edge caches, TTLs, invalidationsNone
FailoverOrigin failover within a distributionNear-instant health-based shift between Regions — no DNS change, no TTL wait
Typical triggers“Cache content at the edge,” static assets, video, APIs behind a CDN“Static IPs for firewall allowlists,” non-HTTP protocols (gaming, VoIP, MQTT), instant multi-Region failover

The static-IP point deserves emphasis: because Global Accelerator's two anycast IPs never change, enterprise customers can allowlist them permanently — something a bare load balancer cannot offer. CloudFront now has opt-in Anycast Static IPs too, but that is a larger IP list for HTTP/HTTPS delivery only; Global Accelerator gives just two static IPv4 addresses (four on a dual-stack accelerator) for any TCP or UDP application and fails over between Regions. And because failover happens inside the accelerator rather than in DNS, there is no resolver cache to wait out. Read the scenario's nouns: “cache,” “content,” and “HTTP” point to CloudFront; “static IP,” “UDP,” and “instant regional failover” point to Global Accelerator. Some architectures legitimately use both — but never claim Global Accelerator accelerates cacheable content delivery; that is CloudFront's job.

Tip. Questions are scenarios that state a constraint and expect the feature whose behaviour satisfies it: alias versus CNAME at the zone apex and for query charges; TTL as the lever that governs how fast a record change propagates; inbound versus outbound Resolver endpoints by the direction of the query; authorize-then-associate for a private hosted zone in another account versus RAM sharing for Resolver rules; weighted, failover, latency, geolocation and multivalue routing by what each returns and whether it honours health checks; and CloudWatch-alarm health checks for endpoints Route 53 cannot reach directly. Query-logging questions turn on which side of the Resolver the traffic originates and on the us-east-1 log group. CloudFront questions probe OAC (including SSE-KMS key policies), behavior precedence, cache versus origin request policy, max-age versus s-maxage, invalidations versus versioned names, and origin failover limits; certificate questions hinge on us-east-1. CloudFront versus Global Accelerator comes down to caching HTTP content versus a small fixed set of static IPs for any TCP/UDP application with in-network regional failover. Diagnosing broken resolution and cache misses appears under Task 5.3.

Key takeaways
  • Alias records work at the zone apex, track their AWS target automatically, and are free to query when targeting AWS resources; CNAMEs cannot sit at the apex.
  • Lower a record's TTL at least one old-TTL period before a cutover; lowering it at the moment of change leaves resolvers on the old answer.
  • On-prem must resolve VPC names: inbound Resolver endpoint. VPCs must resolve on-prem domains: outbound endpoint plus forwarding rules.
  • Cross-account private zones: owner authorizes, VPC owner associates (CLI/API). Resolver rules and Route 53 Profiles are shared through AWS RAM; endpoints are not.
  • Simple routing cannot use health checks; weighted returns one record per response; multivalue returns up to eight healthy records.
  • Private resources need a health check that monitors a CloudWatch alarm; Evaluate Target Health works only on alias records.
  • Public DNS query logs go to CloudWatch Logs in us-east-1 under a resource policy; Resolver query logs cover queries from your VPCs and can go to S3 or Firehose.
  • OAC plus a bucket policy scoped to the distribution ARN keeps S3 private; SSE-KMS also needs kms:Decrypt for CloudFront in the key policy.
  • Cache behaviors match in precedence order; the cache policy sets key and TTLs, the origin request policy adds forwarded values, neither picks an origin.
  • Prefer versioned object names over invalidations; origin groups fail over only GET, HEAD and OPTIONS requests.
  • Custom-domain HTTPS on CloudFront: us-east-1 ACM certificate, alternate domain name, and an alias record to the distribution.
  • Two static anycast IPs for any TCP/UDP app, or instant regional failover, means Global Accelerator; caching HTTP content means CloudFront (whose opt-in Anycast Static IPs are HTTP-only).

Frequently asked questions

Can I use a CNAME at the apex of my domain in Route 53?

No — DNS forbids a CNAME at the zone apex because it cannot coexist with the SOA and NS records that must live there. Route 53's answer is the alias record: it works at the apex, points directly at AWS resources like ALBs and CloudFront distributions, and queries to AWS targets are free.

What is the difference between geolocation and geoproximity routing?

Geolocation routes on where the user is — you map countries or continents to answers, which suits compliance and localized content, with a default record catching unmatched locations. Geoproximity routes on how close the user is to your resources and adds a bias value that expands or shrinks each resource's share, which suits deliberately shifting traffic between Regions.

How do on-premises servers resolve private DNS names in a VPC?

Create a Route 53 Resolver inbound endpoint, which places ENIs with fixed private IPs in your subnets, then configure the on-premises DNS servers to conditionally forward the AWS domains to those IPs over your VPN connection. For the reverse direction — VPC instances resolving on-premises names — use an outbound endpoint with forwarding rules.

How do I associate a private hosted zone with a VPC in another AWS account?

Use the authorize-then-associate flow: from the account that owns the private hosted zone, create a VPC association authorization for the other account's VPC, then from the account that owns the VPC, associate the VPC with the zone. Both steps use the AWS CLI, SDK or Route 53 API because the console cannot select another account's VPC. A private hosted zone is not shared through AWS RAM on its own; RAM shares Resolver rules and Route 53 Profiles.

How can Route 53 health-check a resource that only has a private IP address?

Route 53 health checkers run on the internet and cannot reach private IP addresses in a VPC. Instead, publish a metric that reflects the service's health, create a CloudWatch alarm on it, and create a Route 53 health check that monitors that alarm; attach the health check to the record, for example the primary failover record. Evaluate Target Health does not apply here, because it works only on alias records that target AWS resources such as load balancers.

Why must a CloudFront certificate be in us-east-1?

CloudFront is a global service that reads its custom-domain certificates from ACM in the us-east-1 Region only, regardless of where your origin, users, or other infrastructure live. Request or import the certificate there before attaching it to the distribution; a certificate in any other Region will not appear as an option.

When should I use Global Accelerator instead of CloudFront?

Use Global Accelerator when you need a small fixed set of static anycast IP addresses (two IPv4, or four on a dual-stack accelerator) for any application, for example for customer firewall allowlists; when the traffic is not HTTP — TCP or UDP workloads like gaming, VoIP, or MQTT; or when you need near-instant failover between Regions without waiting on DNS caches. If the goal is caching HTTP content close to users, that is CloudFront, which can also offer an opt-in list of Anycast Static IPs for HTTP/HTTPS delivery.

Why does CloudFront origin failover not protect POST requests?

CloudFront origin groups fail over only GET, HEAD and OPTIONS requests. Other methods, such as a POST submitting a form, are always sent to the primary origin, and if it fails the error goes back to the viewer. Failover for those requests has to come from the application tier or from multi-Region routing outside CloudFront.

Source

This lesson covers the "Networking and Content Delivery" domain of the official SOA-C03 exam guide. Vendors revise their guides — check the source for the current version.

Test yourself on this topic
Practice now

Sign up free to mark lessons complete, bookmark topics and track your exam readiness.

Spotted a mistake in this lesson?