🏗️
Web App (EC2 + RDS)
ALB → EC2 in VPC with RDS PostgreSQL. Classic 2-tier web application.
What you can build with this
Run a traditional web application on a server — Node.js, Python/Django, Ruby on Rails, or PHP. Your code runs on an EC2 instance (Amazon Linux 2023). A managed PostgreSQL database (RDS) stores your data, with credentials auto-generated into AWS Secrets Manager. An Application Load Balancer routes traffic to your server. You access the server through SSM Session Manager — no SSH key pair, no port 22 exposed to the internet.
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 (early in stack deploy) |
| Load Balancer | 2–3 min |
| EC2 Instance launched | 2–4 min |
| EC2 registered with SSM (shell access works) | 3–5 min |
| RDS Database available | 5–10 min |
| Your app starts accepting traffic | After you deploy and start your app on EC2 |
| Custom domain DNS | 5–30 min after Route53 record saved |
DNS / Certificate note: The load balancer DNS name (e.g. my-alb-123456789.us-east-1.elb.amazonaws.com) is the correct target for a Route53 alias A record — do not use a raw IP address as it can change. HTTPS requires a Certificate ARN set on the ALB node before export (or an HTTPS listener added manually post-deploy) — the exported default is HTTP-only.
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 |