Skip to main content

Command Palette

Search for a command to run...

Leaving Resources Running Was My First Cloud Mistake

Updated
4 min read
Leaving Resources Running Was My First Cloud Mistake

I Didn’t Understand Cloud Costs Until Resources Kept Running

A few months ago, I signed up for an AWS account. The promise of the cloud felt almost magical — servers I could spin up in minutes, no hardware to buy, just pay for what I use.

I launched my first EC2 instance, a tiny t2.micro, to practice deploying a simple Node.js app. I spent a Saturday afternoon on it: installed Nginx, cloned a repo, got everything running. When I was satisfied, I closed the SSH window and the AWS console tab. Done, I thought. Back to regular life.

Two weeks later, I opened an email from AWS. Subject line: “Your bill is ready.” It wasn’t a huge amount — maybe $12 — but it was money I hadn’t planned to spend. I stared at the breakdown, confused. The charges were almost entirely for “EC2: Running Hours.”

I hadn’t touched that instance in days. Why was it still costing me?

What I Believed About the Cloud

I had pictured “pay as you go” like electricity in an empty house. If no one’s home, the meter barely moves. I assumed that when I wasn’t actively using the instance — no SSH, no traffic, no processes I was running — the cost would drop to nearly zero.

The free tier reinforced that feeling. 750 hours a month sounded like more than enough for learning. I figured a single small instance left idle wouldn’t matter.

I also thought closing the browser or the terminal was enough to “pause” things. It felt intuitive — like logging out of a website.

The First Crack in That Picture

Logging back into the EC2 console, I saw the instance status: running. Green checks everywhere.

I clicked around. No obvious “power off” button that I remembered using. I started second-guessing myself. Had I forgotten to shut it down? Was there a setting I missed?

The billing dashboard showed a steady line of hourly charges, day after day, even though I hadn’t connected once.

That’s when the unease settled in. The system wasn’t broken. I had misunderstood something basic.

Trying to Understand What Was Actually Happening

Instead of panic-deleting everything, I slowed down.

I read the EC2 documentation carefully, line by line. I looked up blog posts from other beginners. I opened Cost Explorer and filtered to just that instance.

What I found was simple but jarring:

  • An EC2 instance in “running” state is a virtual machine that is fully powered on, 24 hours a day, until I explicitly stop or terminate it.

  • Being idle doesn’t reduce the compute cost. The clock keeps ticking because the provider is reserving CPU, memory, and network for me.

  • The free tier gives 750 hours per month, but those hours are consumed whether I’m using the instance or not.

In other words, I had rented a server and left the lights on.

I ran a small experiment. I selected the instance and chose Stop. Within minutes, the compute charges stopped appearing. Storage (the EBS volume) still had a tiny cost, but the big hourly line went flat.

Then, feeling brave, I Terminated it. Everything disappeared. The cost line went to zero.

I launched a fresh instance, did a quick task, and terminated it immediately after. No surprise charges.

The Moment It Clicked

The shift wasn’t in finding a clever trick. It was realizing the cloud isn’t a magic utility that senses when I’m done. It’s infrastructure I control.

The responsibility for turning things off sits entirely with me.

No timeout. No gentle reminder. Just whatever state I last left it in.

That small realization changed how I see every resource now — instances, databases, storage buckets. They all have their own metering rules, and silence doesn’t equal free.

What This Experience Is Teaching Me

  • Inactivity isn’t the same as off. Resources keep costing until I explicitly stop or delete them.

  • Assumptions are expensive when untested. I filled a knowledge gap with intuition, and intuition was wrong.

  • Early visibility matters. I now check the billing dashboard weekly, even when I think I’m being careful.

  • Small habits prevent big surprises. I started adding calendar reminders or simple scripts to terminate test instances after a few hours.

I still don’t know everything about cloud costs — far from it. But this mistake forced me to confront a quiet assumption I didn’t even know I had.

Now, every time I launch something, I pause and ask: How long do I actually need this to stay on?

That question feels small. But it’s already saving me money — and, more importantly, it’s making me think more clearly about the systems I’m building on.