
You created your first AWS account. You launched an EC2 instance, maybe spun up a database, uploaded some files to S3. Everything felt free. Then, three weeks later, an email arrived with an unexpected bill.
This happens more often than you'd think. AWS Free Tier is genuinely generous, but it comes with limits that aren't always obvious. The good news is that avoiding surprise charges is straightforward once you understand how the Free Tier actually works.
What You'll Learn
By the end of this guide, you'll know how to:
- Understand the three types of AWS Free Tier offerings
- Recognize the most common mistakes that lead to unexpected bills
- Set up billing alerts to catch charges before they grow
- Build habits that keep your learning environment cost-free
Prerequisites
Before you begin, you'll need an AWS account. If you don't have one yet, you can create one at aws.amazon.com. You'll need to provide a credit or debit card during signup, but you won't be charged if you stay within Free Tier limits.
How the AWS Free Tier Actually Works
AWS Free Tier isn't a single program. It's three different types of offers bundled together, and confusing them is where most billing surprises begin.
Always Free services don't expire. You can use them forever, within their monthly limits. AWS Lambda gives you one million free requests per month. DynamoDB offers 25 GB of storage. These reset every month and never go away.
12 Months Free services are available for your first year after creating an account. This is where EC2, S3, and RDS live. Once your 12 months end, these services switch to standard pay-as-you-go pricing automatically. There's no warning email the day before. Your account simply starts getting billed.
Short-Term Trials are one-time offers for specific services. Amazon Redshift gives you a two-month trial. Once you use it, it's gone. These trials don't reset.
The distinction matters because many beginners assume everything is "free for 12 months" when that's only true for certain services. Lambda and DynamoDB stay free forever. EC2 and RDS do not.
The Five Mistakes That Lead to Unexpected Bills
Understanding these common pitfalls will save you from the frustration of an unexpected charge.
Choosing the Wrong Instance Type
AWS Free Tier gives you 750 hours per month of EC2 compute time, but only for t2.micro or t3.micro instances. If you select t2.small because it has more memory, you pay from the first hour.
The instance type matters more than the hours. A t2.micro running all month costs nothing. A t2.small running for a few weeks will generate a bill.
Before launching any instance, double-check that you've selected a Free Tier eligible option. AWS marks these with a "Free tier eligible" label, but it's easy to miss when you're clicking through setup screens quickly.
Running Multiple Instances at Once
The 750 hours per month applies to all your instances combined, not per instance. A month has roughly 730 hours. That means you can run one instance continuously for free.
But if you launch two instances, you're using 1,460 hours per month. AWS covers the first 750, then bills you for the remaining 710. Three instances triple your usage.
This catches people who spin up test environments and forget to terminate them. You think you're running one instance, but there's another one from last week's experiment still quietly running in the background.
Forgetting About Running Resources
EC2 instances aren't the only resources that accumulate charges. RDS databases, Elastic IPs, EBS volumes, and NAT Gateways all have their own pricing.
Elastic IPs are a common surprise. AWS provides them for free when they're attached to a running instance. But if you stop your instance and forget to release the Elastic IP, you start getting charged for it. It's a small amount, but it adds up over weeks.
The most common scenario goes like this: you follow a tutorial, launch a database, complete the exercise, then close your laptop. The database keeps running. A month later, you see a charge for something you forgot existed.
AWS resources don't stop when you log out. They run until you explicitly stop or terminate them.
Want to practice EC2 and Elastic IPs without risking your AWS bill?
CloudLearn's sandbox environments give you real AWS infrastructure to experiment with—no credit card charges, no billing surprises. Practice launching instances, allocating Elastic IPs, and cleaning up resources in an environment where mistakes don't cost money. **Recommended Lab: Allocating and Associating Elastic IP to an EC2 Instance
- ⏱️ 30 minutes | 📊 Beginner | 🎯 Learn to manage static IPs and understand why unattached Elastic IPs generate charges
Overlooking Data Transfer Costs
AWS gives you 100 GB of free data transfer out per month. For most learning scenarios, that's plenty. But if you're building something that moves large files, you can exceed this limit faster than you'd expect.
Downloading data from S3 to your local machine counts against this limit. So does serving content from EC2 to users. The transfer in is usually free, but transfer out adds up.
Missing the 12-Month Expiration
After your first year, the 12 Months Free services end automatically. There's no grace period. Your t2.micro instance that was free yesterday starts generating charges today.
Many people create AWS accounts, learn for a few months, then step away. They return 14 months later to find they've been billed for services they forgot were running.
Set a calendar reminder for your Free Tier expiration date. It's the simplest way to avoid this.
Setting Up Billing Alerts
AWS lets you create billing alarms that notify you when your spending exceeds a threshold you define. This is the single most important safeguard you can set up.
Step 1: Enable Billing Alerts
Navigate to the Billing Dashboard in the AWS Console. Under Billing Preferences, enable "Receive Billing Alerts." This setting must be turned on before you can create alarms.
Step 2: Create a CloudWatch Alarm
Go to CloudWatch, then Alarms, then Create Alarm. Choose "Billing" as the metric category and "Total Estimated Charge" as the metric. Set your threshold low—even a few dollars is enough to catch unexpected usage early.
Step 3: Configure Notifications
Create or select an SNS topic to receive alerts. Add your email address. Confirm the subscription when AWS sends a verification email.
Once configured, you'll receive an email whenever your bill exceeds your threshold. Starting with a low threshold means you catch problems while they're still small.
Building Good Habits
Beyond billing alerts, a few daily habits will keep your account clean.
Check Cost Explorer regularly. Even a quick glance at your daily spending graph reveals anomalies. A spike of a few dollars is often the first sign of a forgotten resource.
Terminate what you're not using. After completing a tutorial or experiment, delete the resources you created. Stopping an instance isn't enough—stopped instances can still incur storage charges for their attached volumes.
Use tags. Tagging your resources with project names or dates makes it easier to identify what's still needed and what can be cleaned up.
Review your account monthly. Spend five minutes checking for detached Elastic IPs, orphaned EBS volumes, or idle databases. These forgotten resources are the most common source of small, ongoing charges.
Taking It Further
Once you're comfortable with AWS Free Tier, you might want to explore Azure's equivalent offerings. Azure provides a similar free tier with 12 months of popular services and ongoing access to always-free products. The principles are the same: understand the limits, set up spending alerts, and clean up what you're not using.
Multi-cloud experience is increasingly valuable. Learning to navigate billing and resource management on one platform makes it easier to do the same on others.
Practice Without the Billing Risk
Here's the challenge with learning AWS: the best way to build confidence is hands-on practice, but practicing on your personal account means real billing risk. Even small mistakes—a forgotten instance, an unattached Elastic IP—cost real money.
CloudLearn solves this by providing sandboxed AWS environments where you can practice freely. You get access to real AWS infrastructure, but the billing stays with CloudLearn. Launch instances, create S3 buckets, configure VPCs, make mistakes, and learn from them—without watching your credit card statement.
This is especially valuable when you're learning foundational services like EC2, S3, and VPC. These are exactly the services covered by Free Tier, but they're also the ones where billing surprises happen most often. Practicing in a sandbox first means you understand the cleanup process before doing it in your own account.
Recommended Labs to Get Started
Creating your First S3 Bucket using AWS Console
- ⏱️ 20 minutes | 📊 Beginner | 🎯 Learn to create and configure S3 buckets without worrying about storage costs
Introduction to Amazon Virtual Private Cloud (VPC)
- ⏱️ 45 minutes | 📊 Beginner | 🎯 Build a custom VPC with subnets, route tables, and an Internet Gateway
Allocating and Associating Elastic IP to an EC2 Instance
- ⏱️ 30 minutes | 📊 Beginner | 🎯 Understand static vs dynamic IPs and why unattached Elastic IPs generate charges
Once you've practiced these in CloudLearn's sandbox, you'll know exactly what to do—and what to clean up—when working in your own AWS account.
Key Takeaways
- AWS Free Tier includes three types of offers: Always Free, 12 Months Free, and Short-Term Trials—each with different rules
- The 750 free EC2 hours per month apply to all instances combined, not per instance
- Elastic IPs are free when attached to running instances, but generate charges when unattached
- Resources keep running and accumulating charges until you explicitly stop or terminate them
- Setting up billing alerts is the single most important step you can take to avoid surprise charges
- Your 12 Months Free services expire automatically with no warning—mark your calendar
- Practicing in sandbox environments like CloudLearn lets you build confidence without billing risk
Ready to Master Cloud Engineering?
Get access to hands-on labs, expert-led courses, and a supportive community.
Practice it hands-on
Labs where you can apply what this article covers, in a real environment.
Working with AWS VPC Flow Logs to Log and View Network Traffic
Learn to configure AWS VPC Flow Logs to monitor network traffic in your AWS environment.
cloudlearn.ioStart labIntroduction to AWS Step Functions
Learn how to create and configure AWS Step Functions using AWS Console.
cloudlearn.ioStart labCreating your First S3 Bucket using AWS Console
In this lab, you will create your first S3 bucket using the AWS Console.
cloudlearn.ioStart lab

