🚨 I Thought I Destroyed My AWS Infrastructure β€” But a $600 Bill Told Me Otherwise

EnochEnoch
3 min read

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, not us-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).

0
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.