π¨ I Thought I Destroyed My AWS Infrastructure β But a $600 Bill Told Me Otherwise


In early April, I spun up a simple 3-tier architecture on AWS using Terraform. It was just for testing, and like any good engineer, I ran terraform destroy
immediately after. Confident that everything was cleaned up, I moved on.
Until AWS sent me an email forecasting a bill of over $600. π³
βοΈ What I Deployed
Using Terraform, I provisioned a basic 3-tier app architecture that included:
EC2 instances for compute
An Aurora RDS cluster
An Application Load Balancer
A NAT Gateway
All the supporting networking components (VPC, subnets, route tables)
All of this was deployed in the us-west-2
(Oregon) region.
π£ The Mistake
After my testing, I ran:
terraform destroy
Terraform confirmed the destruction was successful. To be thorough, I opened the AWS Console and verified that everything was gone. Or so I thought.
β Problem: I was checking
us-east-1
, notus-west-2
.
Since AWS Console defaults to the last-used region, I didn't realize I was looking at an empty region. Meanwhile, the Aurora DB cluster and NAT Gateway were still active in Oregon, silently incurring charges.
πΈ The $600 Surprise
Weeks later, my AWS billing dashboard showed:
RDS: $236.24
EC2-Other (NAT Gateway, etc): $102.24
Elastic Load Balancing: $1.20
Forecasted total: $606.96
When I reached out to @AWSSupport, they helped confirm the issue: the resources I thought were destroyed were still running β in the wrong region.
π§Ή The Fix
Once I switched to the correct region (us-west-2
) in the console, I immediately deleted:
β Aurora DB cluster
β NAT Gateway
β Any leftover EBS volumes and RDS snapshots
I also verified everything using:
terraform state list
and made sure no resources were still tracked or orphaned.
π§ Lessons Learned
Hereβs what I took away from this (expensive) experience:
β Double-check your region β both in the AWS Console and your Terraform config.
β Don't rely solely on
terraform destroy
output β cross-verify in the correct region.β Use AWS Cost Explorer (daily granularity) to spot spikes in usage early.
β NAT Gateways and RDS can be very expensive β especially when idle.
β Snapshots are not automatically deleted β clean them up manually when needed.
π Shout-out to AWS Support
Thanks to @AWSSupport for helping clarify what happened and pointing me in the right direction. If you ever run into weird billing issues, donβt hesitate to reach out β they were very responsive.
π§© Final Thoughts
Cloud infrastructure is incredibly powerful, but it's easy to forget how real the costs can get. If you're learning Terraform or managing AWS resources, take the time to:
Understand where you're deploying
Automate cleanup checks
Monitor your cost dashboard regularly
Hopefully, my $600 mistake saves you some trouble (and money).
Subscribe to my newsletter
Read articles from Enoch directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Enoch
Enoch
I have a passion for automating and optimizing cloud infrastructure. I have experience working with various cloud platforms, including AWS, Azure, and Google Cloud. My goal is to help companies achieve scalable, reliable, and secure cloud environments that drive business success.