3.1.3.4. Testing Failover of Multi-AZ and Multi-Region Workloads (RDS, Aurora, Route 53, CloudFront)
3.1.3.4. Testing Failover of Multi-AZ and Multi-Region Workloads (RDS, ECS)
DR testing that only exists in documentation provides zero confidence. Regular, automated failover tests are the only way to validate recovery capability.
Testing approaches:
| Approach | Risk | Realism | Frequency |
|---|---|---|---|
| Tabletop exercise | None | Low | Quarterly |
| Component failover (RDS reboot) | Low | Medium | Monthly |
| AZ failure simulation (FIS) | Medium | High | Quarterly |
| Full region failover | High | Highest | Annually |
Work up that ladder: a team that has never tested DR starts with a tabletop walk-through of the runbook, which finds missing steps and unclear ownership at no risk to production, then moves to component tests and live failovers.
RDS failover testing:
# Force RDS Multi-AZ failover (causes 1-2 min downtime)
aws rds reboot-db-instance \
--db-instance-identifier prod-db \
--force-failover
# Monitor: RDS event "Multi-AZ instance failover started"
AWS Fault Injection Service (FIS) provides managed chaos experiments:
- Terminate EC2 instances in a specific AZ
- Inject CPU/memory stress on instances
- Disrupt network connectivity between services
- Throttle API calls to simulate service degradation
- Cut a dependency without code changes:
aws:network:disrupt-connectivitywith scopedynamodbors3blocks a subnet's traffic to that service's Regional endpoint, and the ECS/EKS network latency and packet-loss actions can target theDYNAMODB/S3endpoints
Game Day pattern:
- Schedule a maintenance window
- Run the DR playbook against the production environment
- Measure actual RTO (time from failover trigger to full recovery)
- Compare actual RTO vs. target RTO
- Document gaps and fix before next test
Metrics to capture during DR tests:
- Time to detect failure
- Time to execute failover
- Data loss during failover (actual RPO)
- Application error rate during transition
- Time to full recovery (actual RTO)
Exam Trap: Testing RDS failover in production causes a brief outage (1-2 minutes). Schedule it during a maintenance window and ensure the application handles the connection drop gracefully. If the exam asks "how to test DR without affecting production," the answer is to run tests in a separate environment that mirrors production architecture, after a tabletop walk-through has shaken out a runbook that has never been exercised.