High Availability Web App
Multi-AZ ECS Fargate + Aurora Serverless v2 (PostgreSQL) + ElastiCache Redis, behind a WAF-protected internet-facing ALB.
What you can build with this
A production-grade, multi-AZ stack: Fargate tasks across two AZs, an Aurora Serverless v2 cluster that scales 0.5–16 ACUs with a promotable reader, and an encrypted Redis replication group for sessions/caching — all behind AWS WAF's managed rule sets. This template does NOT put CloudFront in front of the load balancer: CloudFront's origin config for a load balancer is hardcoded to HTTPS-only, which only works with a real ACM certificate on the ALB, and provisioning one requires DNS validation this starter template can't automate for you sight-unseen. WAF attaches directly to the (internet-facing) ALB instead — a real, deploy-clean front door. Add CloudFront + a validated ACM certificate yourself later if you want a CDN layer on top.
Deployment timing
After you run the deploy command, resources come online at different times. Check the validation steps in order.
| Resource | Ready in |
|---|---|
| VPC, subnets, security groups | 1–2 min |
| WAF Web ACL + association | 1–2 min |
| NAT Gateway (both AZs) | 2–4 min |
| Load Balancer | 2–3 min |
| ECS tasks running (placeholder image) | 2–3 min |
| ElastiCache Redis replication group | 8–12 min |
| Aurora Serverless v2 cluster (writer + reader) | 10–15 min |
CloudFormation parameters
These are the values you will fill in when deploying the exported template. Changing these does not break the template — that is the point.
| Parameter | What to provide | Example |
|---|---|---|
| Environment | Environment tag applied to resources (does not rename them) | dev |