Introduction
AWS Free Tier gives you access to 100+ cloud services at no cost. Whether you’re learning Terraform, testing a startup idea, or studying for AWS certifications, the Free Tier lets you use real AWS infrastructure without a credit card charge — as long as you stay within the limits.
This guide covers every Free Tier category, the most useful services with their exact limits, and how to avoid surprise bills.
Three Types of Free Tier
AWS organizes free offerings into three categories:
| Type | Duration | Who Qualifies |
|---|---|---|
| Always Free | Never expires | All AWS accounts |
| 12 Months Free | First 12 months after signup | New accounts only |
| Free Trials | Varies per service (30-365 days) | First use of the service |
Always Free Services (Never Expire)
These stay free forever, regardless of when you created your account:
Compute
| Service | Free Limit |
|---|---|
| AWS Lambda | 1M requests/month + 400,000 GB-seconds compute |
| AWS Step Functions | 4,000 state transitions/month |
Storage
| Service | Free Limit |
|---|---|
| Amazon DynamoDB | 25 GB storage, 25 read/write capacity units |
| Amazon S3 | Not always-free (see 12-month below) |
Networking & CDN
| Service | Free Limit |
|---|---|
| Amazon CloudFront | 1 TB data transfer out/month |
| Amazon API Gateway | 1M REST API calls/month |
Monitoring & Management
| Service | Free Limit |
|---|---|
| Amazon CloudWatch | 10 custom metrics, 10 alarms, 1M API requests |
| AWS CloudTrail | 1 management trail (90-day event history) |
| AWS Trusted Advisor | 7 core checks |
Developer Tools
| Service | Free Limit |
|---|---|
| AWS CodeBuild | 100 build minutes/month |
| AWS CodeCommit | 5 active users, 50 GB storage, 10,000 Git requests |
| AWS CodePipeline | 1 active pipeline |
AI & Machine Learning
| Service | Free Limit |
|---|---|
| Amazon SageMaker | 250 hours/month of ml.t3.medium notebooks |
| Amazon Comprehend | 50K units of text/month |
| Amazon Translate | 2M characters/month |
12 Months Free (New Accounts Only)
Available for 12 months after account creation:
Most Popular 12-Month Services
| Service | Free Limit | What You Can Build |
|---|---|---|
| Amazon EC2 | 750 hours/month of t2.micro (or t3.micro in regions that support it) | Web servers, dev environments |
| Amazon S3 | 5 GB storage, 20K GET, 2K PUT requests | Static websites, backups |
| Amazon RDS | 750 hours/month of db.t2.micro/db.t3.micro, 20 GB storage | MySQL, PostgreSQL databases |
| Amazon ElastiCache | 750 hours of cache.t2.micro/cache.t3.micro | Redis/Memcached caching |
| Amazon CloudFront | 50 GB data transfer (separate from always-free) | CDN for websites |
| Elastic Load Balancing | 750 hours of Classic/ALB + 15 GB data | Load balancing |
| Amazon EBS | 30 GB of General Purpose SSD | Block storage for EC2 |
| Amazon SNS | 1M publishes, 100K HTTP deliveries | Push notifications |
| Amazon SQS | 1M requests | Message queuing |
EC2 Free Tier Details
The most popular Free Tier service. Key details:
- 750 hours/month = enough to run 1 instance 24/7, or multiple instances that total 750 hours
- t2.micro or t3.micro (depending on region) — 1 vCPU, 1 GB RAM
- Linux or Windows (Windows counts the same hours)
- 30 GB EBS storage included (General Purpose SSD)
- Applies to On-Demand instances only (not Spot or Reserved)
# Terraform example: Free Tier EC2 instance
resource "aws_instance" "free_tier" {
ami = "ami-0c55b159cbfafe1f0" # Amazon Linux 2
instance_type = "t2.micro" # Free Tier eligible
tags = {
Name = "free-tier-instance"
}
}
RDS Free Tier Details
- 750 hours/month of db.t2.micro or db.t3.micro
- 20 GB General Purpose SSD storage
- 20 GB automated backup storage
- Supports MySQL, PostgreSQL, MariaDB, Oracle BYOL, SQL Server Express
# Terraform example: Free Tier RDS
resource "aws_db_instance" "free_tier" {
engine = "mysql"
engine_version = "8.0"
instance_class = "db.t3.micro"
allocated_storage = 20
storage_type = "gp2"
db_name = "mydb"
username = "admin"
password = var.db_password
skip_final_snapshot = true
}
Free Trials (Limited Duration)
Short-term trials for specific services. The timer starts when you first use the service:
| Service | Free Trial | Duration |
|---|---|---|
| Amazon SageMaker Studio | 250 hours of ml.t3.medium | 2 months |
| Amazon Redshift | 750 hours of dc2.large | 2 months |
| Amazon GuardDuty | Full features | 30 days |
| Amazon Inspector | Full features | 15 days |
| Amazon Macie | 1 GB/month data classification | 30 days |
| AWS Security Hub | Full features | 30 days |
How to Avoid Surprise Bills
1. Set Up Billing Alerts
# Terraform: Create a billing alarm
resource "aws_cloudwatch_metric_alarm" "billing" {
alarm_name = "billing-alarm-10-dollars"
comparison_operator = "GreaterThanThreshold"
evaluation_periods = 1
metric_name = "EstimatedCharges"
namespace = "AWS/Billing"
period = 21600 # 6 hours
statistic = "Maximum"
threshold = 10
alarm_description = "Alert when charges exceed $10"
alarm_actions = [aws_sns_topic.billing.arn]
dimensions = {
Currency = "USD"
}
}
2. Use AWS Budgets
Go to AWS Billing → Budgets → Create Budget and set a monthly budget of $0 or $1. AWS will email you when you approach the limit.
3. Common Gotchas
- Elastic IPs: Free only when attached to a running instance. Idle EIPs cost $0.005/hour ($3.60/month)
- EBS Snapshots: Not included in Free Tier. Charged at $0.05/GB-month
- Data Transfer: Outbound data beyond free allowances is charged
- Multi-AZ RDS: Not eligible for Free Tier (doubles the hours)
- NAT Gateway: Not in Free Tier ($0.045/hour = $32/month)
- Forgetting to terminate: Running instances after your 12 months expire
4. Monitor Your Usage
Check the Free Tier Usage Dashboard at: https://console.aws.amazon.com/billing/home#/freetier
This shows percentage used for each Free Tier service.
Using AWS Free Tier with Terraform
Terraform is the best way to manage Free Tier resources — you can create, track, and destroy everything with code:
# Complete Free Tier stack
provider "aws" {
region = "us-east-1"
}
# VPC (free)
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
tags = { Name = "free-tier-vpc" }
}
# Subnet (free)
resource "aws_subnet" "public" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
tags = { Name = "free-tier-subnet" }
}
# EC2 (750 hours/month free)
resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
subnet_id = aws_subnet.public.id
tags = { Name = "free-tier-web" }
}
# S3 Bucket (5 GB free)
resource "aws_s3_bucket" "data" {
bucket = "my-free-tier-bucket-unique-name"
tags = { Name = "free-tier-bucket" }
}
# Destroy everything when done:
# terraform destroy
Pro tip: Always run terraform destroy when you’re done experimenting. Forgotten resources are the #1 cause of unexpected AWS bills.
Links
Hands-On Courses
Learn by doing with interactive courses on CopyPasteLearn:
Conclusion
The AWS Free Tier is the best way to learn cloud computing and Terraform hands-on without spending money. Use the Always Free tier for Lambda, DynamoDB, and CloudWatch. Use the 12-month tier for EC2, S3, and RDS. Set up billing alerts on day one, and always terraform destroy your test infrastructure when you’re done. The Free Tier gives you enough to build real applications — just stay within the limits.




