TL;DR: "The free tier" is three things, and conflating them is how people get hurt. 12-Month Free (750 hrs t3.micro EC2, 5 GB S3, db.t3.micro RDS) ends on your account's first anniversary. Always Free (1M Lambda requests, 25 GB DynamoDB, 1 TB CloudFront egress, 50K Cognito MAUs) is permanent. Trials are time-boxed per service. The two failure modes: cliff-diving into a month-13 bill when 12-month items expire, and paying for "un-free" traps (NAT Gateway, ALB, unattached EIPs) that were never free at all. Instrument the account as if the free tier doesn't exist.
The numbers
- 12-Month → expires at anniversary: t2/t3.micro EC2 (
$7.50/mo after), db.t3.micro RDS ($15–20/mo with 20 GB), 30 GB EBS, 5 GB S3, 1M API Gateway calls, ElastiCache/OpenSearch/MQ micro hours. - Always Free → permanent: Lambda 1M requests + 400K GB-s, DynamoDB 25 GB + 25 RCU/WCU, CloudFront 1 TB egress + 10M requests, Cognito 50K MAU, SQS 1M, Step Functions 4K transitions.
- The un-free traps: NAT Gateway ~$32/mo + $0.045/GB (×AZ count), ALB/NLB ~$16–25/mo each, Elastic IP billed $0.005/hr while unassociated or on a stopped instance, CloudWatch Logs $0.50/GB ingest (no free tier), Secrets Manager $0.40/secret, KMS CMK $1/mo, Route 53 zone $0.50/mo.
- New-account Free Plan: 6 months or $200 credits, whichever first — treat the dollar figure as a real ceiling.
- Field examples: a bootcamp grad's single NAT Gateway ran up $480 in three weeks (AWS credited it as a first-time gesture); a side project hit a $32/mo month-13 baseline when all 12-month items expired together, later rebuilt serverless to $0.85/mo.
Do this
- Set a $5 AWS Budget with alerts on day one — the single most important step; five dollars is well below where real damage happens.
- Enable Free Tier usage alerts (Billing preferences, email at 85% of any limit) and add a free Cost Anomaly Detection monitor.
- Tear down every tutorial — they don't clean up after themselves and happily leave a $32/mo NAT Gateway behind; prefer VPC endpoints over NAT in the learning phase.
- Before the anniversary, audit the Billing → Free Tier page — anything in the 12-month column is about to bill; decide keep/downgrade/delete and snapshot before deleting.
- For permanently-free "production," go serverless — Lambda + DynamoDB + CloudFront + Cognito avoids the EC2 anniversary and the ALB/NAT traps; realistic cost ~$0.50–3/mo for a Route 53 zone and small logs.
Gotchas
- Month 13 is the classic surprise — only the 12-month items expire; DynamoDB and Lambda stay free, so people wrongly assume everything flips (or wrongly assume nothing does).
- Stopping a free-tier EC2 instance over the weekend converts its "free" Elastic IP into a paid one — EIPs are free only while attached to a running instance.
- Small-object S3 and chatty apps are dominated by request and log-ingestion charges, not storage — easy to overlook.
- Surprise bills are often reversible — AWS is generous with first-time accidental charges; open a factual billing case (account age, what happened, amount).
Skip this if
- You're past small-scale — the free tier saves money on the first ~$20–50/mo only; beyond that the levers are rightsizing, Reserved Instances, and architecture, not chasing free-tier qualification.
- You just need the alerting that makes the free tier a measured guarantee — that's AWS Budgets plus Cost Anomaly Detection; set them before you rely on the free tier.