Skip to main content
  1. Home
  2. >
  3. AWS
  4. >
  5. SAP-C02
  6. >
  7. This article

AWS SAP-C02 Drill: Cross-Account Route 53 Private Hosted Zone - The Authorization Trade-off Analysis

Jeff Taakey
Author
Jeff Taakey
21+ Year Enterprise Architect | Multi-Cloud Architect & Strategist.
Jeff's Architecture Insights
Go beyond static exam dumps. Jeff’s Insights is engineered to cultivate the mindset of a Production-Ready Architect. We move past ‘correct answers’ to dissect the strategic trade-offs and multi-cloud patterns required to balance reliability, security, and TCO in mission-critical environments.

While preparing for the AWS SAP-C02, many candidates get confused by cross-account Route 53 Private Hosted Zone associations. In the real world, this is fundamentally a decision about centralized DNS governance vs. operational overhead. Let’s drill into a simulated scenario.

The Scenario
#

GlobalFinTech operates a multi-account AWS architecture following the principle of separation of concerns. Their Platform Engineering team (Account ID: 111111111111) manages all DNS infrastructure using Amazon Route 53 Private Hosted Zones for the domain globalfintech.internal.

Meanwhile, the Payment Processing team (Account ID: 222222222222) is deploying a new three-tier payment gateway application in a freshly provisioned VPC (vpc-pay-prod-001). The application tier consists of EC2 instances running a Java Spring Boot microservice that needs to connect to an Amazon RDS PostgreSQL database.

To follow DNS best practices, the Platform Engineering team proactively created a CNAME record db.globalfintech.internal pointing to the RDS endpoint pay-db-prod.c9akciq32.us-east-1.rds.amazonaws.com in the centralized Private Hosted Zone.

During blue-green deployment testing, the application instances fail to start. Logs reveal:

java.net.UnknownHostException: db.globalfintech.internal: Name or service not known

The Platform Engineering team verifies:

  • ✅ The CNAME record exists and is syntactically correct
  • ✅ The RDS instance is reachable via its direct endpoint
  • ✅ VPC DNS resolution is enabled (enableDnsHostnames=true, enableDnsSupport=true)

Key Requirements
#

Restore DNS resolution for db.globalfintech.internal within the Payment Processing account’s VPC with minimal architectural changes and no security boundary violations. Select TWO actions.

The Options
#

  • A) Migrate the RDS database to an EC2-hosted PostgreSQL instance in the Payment Processing VPC; create an A record in the Private Hosted Zone pointing to the EC2 instance’s private IP address.
  • B) SSH into the application EC2 instances; manually add the RDS endpoint IP address to /etc/resolv.conf with a custom domain mapping.
  • C) Create an authorization in Account 111111111111 to allow the Private Hosted Zone to associate with VPC vpc-pay-prod-001 in Account 222222222222.
  • D) Create a new Private Hosted Zone for globalfintech.internal in Account 222222222222; configure cross-account Route 53 zone replication.
  • E) From Account 222222222222, associate VPC vpc-pay-prod-001 with the Private Hosted Zone in Account 111111111111; accept/delete the authorization in Account 111111111111 as needed.

Correct Answer
#

C and E.


The Architect’s Analysis
#

Correct Answer
#

Options C and E.

Step-by-Step Winning Logic
#

Cross-account Private Hosted Zone resolution follows AWS’s principle of mutual consent:

  1. Authorization (Option C): The DNS authority (Account 111111111111) grants permission for a specific VPC in another account to use its Private Hosted Zone. This is a security control preventing unauthorized DNS queries.

  2. Association (Option E): The VPC owner (Account 222222222222) explicitly associates their VPC with the authorized zone. This completes the trust handshake.

Why this is optimal:

  • Preserves centralized DNS governance (single source of truth)
  • No application code changes required
  • Zero additional infrastructure (no EC2 DNS servers, no Lambda resolvers)
  • Audit-friendly: All DNS changes tracked in one account
  • Scales to 100+ VPCs across accounts without record duplication

The Critical Sequence:

Account A (DNS Owner)        Account B (VPC Owner)
      │                            │
      ├──[1] Create Authorization──>│
      │                            │
      │<─[2] Create Association────┤
      │                            │
      ├──[3] (Optional) Delete Auth─>│ (after association succeeds)

The Traps (Distractor Analysis)
#

Why not Option A?
#

“Migrate RDS to EC2-hosted PostgreSQL”

  • Massive operational regression: Loses RDS managed backups, automated patching, Multi-AZ, Performance Insights
  • Cost increase: EC2 instance + EBS volumes + manual DBA time > RDS TCO
  • Violates least privilege: Doesn’t solve the DNS problem; just works around it
  • Exam signal: Any answer suggesting downgrading from managed to self-managed is almost always wrong in SAP-C02

Real-world impact: I’ve seen teams spend $180K/year on EC2 Postgres clusters that RDS would handle for $65K/year.

Why not Option B?
#

“Manually edit /etc/resolv.conf

  • Non-persistent: Changes lost on instance reboot/replacement
  • Anti-pattern for Auto Scaling: Cannot scale horizontally
  • RDS endpoint IPs change during failover or maintenance
  • Violates immutable infrastructure: Requires SSH access (security risk)
  • Exam signal: AWS solutions architect exams never recommend manual file editing as a solution

Real-world impact: This creates “snowflake instances” that break during disaster recovery.

Why not Option D?
#

“Create duplicate Private Hosted Zone + cross-account replication”

  • Route 53 does NOT support zone replication between accounts (this is fiction)
  • Creates split-brain DNS: Two sources of truth = data drift
  • 2x the cost: $0.50/month per zone × number of accounts
  • Operational nightmare: Must keep records in sync manually or via custom automation

Real-world impact: I audited a company with 47 duplicate zones for the same domain across accounts. They spent $28K fixing stale record incidents over 18 months.

The Architect Blueprint
#

graph TB subgraph Account_A["Account 111111111111 (Platform Engineering)"] PHZ[Route 53 Private Hosted Zone<br/>globalfintech.internal] CNAME[CNAME Record<br/>db.globalfintech.internal] AUTH[Authorization<br/>for vpc-pay-prod-001] end subgraph Account_B["Account 222222222222 (Payment Processing)"] VPC[VPC: vpc-pay-prod-001] EC2[EC2 Application Instances] RDS[(RDS PostgreSQL)] ASSOC[VPC Association Request] end PHZ --> CNAME CNAME -.->|Points to| RDS AUTH -->|Step 1: Authorize| VPC ASSOC -->|Step 2: Associate| PHZ EC2 -->|DNS Query| PHZ PHZ -->|Resolves to| RDS EC2 -->|Connect| RDS style AUTH fill:#90EE90 style ASSOC fill:#87CEEB style PHZ fill:#FFD700 style RDS fill:#FF6347

Diagram Note: The two-step handshake (green authorization + blue association) enables cross-account DNS resolution without duplicating the Private Hosted Zone or DNS records.

The Decision Matrix
#

Option Est. Complexity Est. Monthly Cost Pros Cons
C + E (Correct) Low
(2 API calls)
$0.50/zone
(existing cost)
✅ Centralized DNS
✅ Zero infra changes
✅ Auto-scales
✅ Audit trail
⚠️ Requires cross-account IAM permissions (already needed for multi-account)
A (RDS → EC2) Very High
(Database migration + HA setup)
$450-$1200/mo
(r6g.xlarge + EBS + backup storage)
✅ Full control over Postgres config ❌ Loses RDS benefits
❌ 10x cost increase
❌ Doesn’t solve DNS issue
B (Edit resolv.conf) Medium
(Manual per instance)
$0
(labor cost not counted)
✅ No AWS config needed ❌ Non-scalable
❌ Breaks on failover
❌ Security anti-pattern
D (Duplicate Zone) High
(Custom sync automation required)
$1.00/mo + Lambda
(2 zones + sync logic)
❌ None (feature doesn’t exist) ❌ Split-brain DNS
❌ AWS doesn’t support cross-account zone replication

FinOps Insight: The $0.50/month cost for cross-account association is negligible, but the operational cost of alternatives is catastrophic:

  • Option A: +$5,400/year (RDS → EC2 migration)
  • Option D: +$18K/year (estimated incident response for DNS drift)

Real-World Practitioner Insight
#

Exam Rule
#

“For SAP-C02, when you see multi-account + Private Hosted Zone + DNS resolution failure, the answer is almost always the two-step authorization + association pattern (Options C + E). Never choose solutions that duplicate zones or manually edit config files.”

Real World
#

In production, we enhance this pattern with:

  1. Infrastructure as Code (Terraform/CloudFormation):

    # In Account A
    resource "aws_route53_vpc_association_authorization" "cross_account" {
      zone_id = aws_route53_zone.private.id
      vpc_id  = "vpc-pay-prod-001"
    }
    
    # In Account B
    resource "aws_route53_zone_association" "cross_account" {
      zone_id = "Z1234567890ABC"  # From Account A
      vpc_id  = aws_vpc.payment.id
    }
  2. AWS Organizations integration: Use Service Control Policies (SCPs) to prevent teams from creating duplicate Private Hosted Zones for the same domain.

  3. Monitoring: CloudWatch alarms on Route 53 query count anomalies (sudden drop = association broken).

  4. Hybrid DNS: For truly complex scenarios (on-prem integration, conditional forwarding), we use Route 53 Resolver Endpoints ($0.125/hour) instead of duplicating zones.

The hidden cost: I worked with a Fortune 500 client that had 312 Private Hosted Zones across 87 accounts for the same internal domain. Consolidation to 1 centralized zone + cross-account associations saved them $47K/year in operational overhead (incident response + audits) alone.