Skip to main content
Cloud · 10 min read

How to Cut Your AWS Bill by 60%: A Cloud Cost Optimization Playbook

A practical FinOps playbook for cutting AWS, GCP, and Azure spend — rightsizing, egress, autoscaling, and Terraform-driven governance that keeps costs down for good.

ET
EdgeSteed Team
Cloud & MSP, EdgeSteed

Most cloud bills aren’t expensive because the workload is expensive. They’re expensive because nobody owns the number. Cloud cost optimization is less about clever discounts and more about a disciplined FinOps loop — visibility, then action, then guardrails — that stops waste from creeping back. Done right, it’s normal to reduce your AWS bill by 30–60% without touching a single line of application code.

This playbook is the same approach we use to clean up AWS, GCP, and Azure spend: where the money leaks, the concrete levers that move it, and how to use Terraform so the savings actually stick.

Why cloud bills balloon

Cloud pricing rewards convenience and punishes inattention. Spinning up a bigger instance takes thirty seconds; remembering to scale it down never happens. A few patterns account for most of the waste we find.

  • Idle and over-provisioned resources. Instances sized for a peak that arrives twice a year, databases running production tiers for a staging app, GPUs sitting at 4% utilization.
  • Forgotten environments. Proof-of-concept stacks, abandoned dev accounts, that load-test cluster from last quarter — all billing 24/7.
  • Data egress. Cross-region replication, chatty microservices in different availability zones, and traffic leaving the cloud entirely. Egress is metered, unglamorous, and easy to ignore until it’s 20% of the bill.
  • Premium managed services. Managed everything is fast to ship and expensive to run. Some of it earns its keep; a lot of it is a default nobody revisited.
  • No tagging. If you can’t attribute spend to a team, service, or environment, you can’t optimize it. Untagged resources are where accountability goes to die.

None of this requires incompetence. It’s the natural entropy of a fast-moving engineering org. Cloud cost optimization is the practice of fighting that entropy on purpose.

The FinOps loop: visibility, optimization, governance

FinOps isn’t a tool you buy — it’s an operating loop you run continuously. Skip a phase and the other two stop working.

Visibility comes first because you can’t fix what you can’t see. That means cost and usage reports broken down by service, account, region, and — critically — tags. AWS Cost Explorer and the Cost and Usage Report (CUR), GCP’s billing export to BigQuery, and Azure Cost Management are the native starting points. The goal is a single view where any engineer can answer “what does my service cost, and why?”

Optimization is the action phase: rightsizing, commitment discounts, autoscaling, storage tiering, egress reduction, and killing dead resources. This is where the headline savings come from, and it’s the bulk of this playbook.

Governance is what keeps the bill flat after the cleanup. Tagging policies, budgets, alerts, and Infrastructure as Code guardrails turn a one-time project into a durable habit. Without governance, you’ll be back here in six months doing the same cleanup. This loop — and the discipline to run it every month — is the core of MSP & cloud optimization.

Key takeaway: The first cleanup is the easy 40%. The lasting savings come from governance — tagging, alerts, and Terraform guardrails — that prevent re-bloat after you leave.

The optimization levers that actually move the bill

Here’s the order we work in, roughly highest ROI first. You don’t need all of them, but the early ones almost always pay off.

1. Rightsizing

Pull two to four weeks of utilization metrics and match instance size to real demand. Most fleets are over-provisioned on CPU and memory by a wide margin. AWS Compute Optimizer, GCP Recommender, and Azure Advisor will surface candidates automatically; treat their suggestions as a starting list, not gospel, and validate against your own latency and headroom requirements. Moving to current-generation instance families (and ARM-based options like Graviton on AWS) often adds another 10–20% for the same performance.

2. Commitment discounts vs on-demand

On-demand pricing is the rental-car rate — fine for spikes, terrible for your steady-state baseline. Once you know your stable floor of usage, cover it with Savings Plans or Reserved Instances (AWS), Committed Use Discounts (GCP), or Reservations (Azure). Discounts of 30–70% are typical versus on-demand.

The discipline is to commit only to your baseline, not your peak. Buy commitments for the workload you’ll definitely run, keep on-demand and spot for the variable layer on top, and re-evaluate quarterly as the baseline shifts.

3. Autoscaling

Static capacity sized for peak means you pay for peak around the clock. Horizontal autoscaling — by request rate, queue depth, or a custom metric — matches spend to load. For bursty or fault-tolerant work (batch jobs, CI runners, stateless workers), spot or preemptible instances cut that layer by up to 70–90%. The win is structural: you stop paying for capacity you’re not using.

4. Storage tiering

Storage quietly compounds. Move infrequently accessed data to cheaper tiers (S3 Infrequent Access or Glacier, GCP Nearline/Coldline, Azure Cool/Archive) with lifecycle policies that do it automatically. Delete orphaned EBS volumes and snapshots, clean up old AMIs, and put expiration rules on log buckets. None of it is glamorous; all of it adds up.

5. Egress reduction and CDN offload

Egress is the cost everyone forgets. Three high-leverage moves:

  • Put a CDN in front of static and cacheable content. Serving from CloudFront, Cloud CDN, or Azure CDN is far cheaper than origin egress, and it’s faster for users. Pushing cacheable traffic to the edge is also where edge compute earns its keep — less origin load, lower egress, better latency.
  • Keep chatty services in the same region and AZ. Cross-AZ and cross-region traffic is metered. Co-locate components that talk constantly.
  • Use private endpoints and VPC endpoints so traffic to managed services stays on the cloud backbone instead of routing out and back.

6. Kill zombie resources

Zombies are resources that cost money and do nothing: unattached IPs, idle load balancers, empty Kubernetes clusters, stopped instances still holding provisioned storage, dev databases nobody has queried in months. A monthly sweep — manual at first, automated later — finds them. The fastest cloud cost optimization win is usually deleting things, not tuning them.

7. Schedule non-production

Dev, staging, and test environments rarely need to run nights and weekends. A simple scheduler that stops them outside business hours cuts non-prod compute by roughly 65% — you’re paying for ~45 hours a week instead of 168. This one change often funds the rest of the effort.

Infrastructure as Code: making savings repeatable

Manual cleanup is a treadmill. The reason savings evaporate is that the next deploy re-creates the over-provisioned, untagged, always-on resources you just removed. Terraform fixes this by making the correct configuration the default.

Encode your standards in code so they apply automatically:

  • Right-sized defaults in shared modules, so a new service inherits sensible instance types instead of someone’s copy-pasted xlarge.
  • Mandatory tags enforced at the module level — every resource gets team, environment, service, and cost-center or it doesn’t deploy.
  • Lifecycle and scheduling baked in, so storage tiering and non-prod shutdown happen without anyone remembering.
  • Policy as code with tools like OPA, Sentinel, or tflint to block expensive misconfigurations in CI before they ever reach the cloud.

A trimmed example of a tagging guardrail in a Terraform module:

variable "tags" {
  type = map(string)
  validation {
    condition     = alltrue([for k in ["team", "environment", "service"] : contains(keys(var.tags), k)])
    error_message = "Resources must include team, environment, and service tags."
  }
}

Now untagged resources fail the plan instead of failing your next cost review. Repeatable infrastructure is what turns a cleanup project into a permanent baseline — and it’s central to how MSP & cloud optimization keeps spend flat over time.

Tagging, allocation, and alerting

Tagging is the connective tissue of the whole loop. Without it, every cost question becomes archaeology. Adopt a small, mandatory tag schema — four or five keys, no more — and enforce it in Terraform. Then use those tags to build allocation reports so each team can see and own its spend. Visibility plus ownership changes behavior faster than any mandate from finance.

Layer alerting on top. Set budgets per account and per major service, and configure anomaly detection (AWS Cost Anomaly Detection, GCP budget alerts, Azure alerts) so a runaway job or a fat-fingered instance type pages someone the same day instead of surprising you on the invoice. The cost of a mistake should be measured in hours, not in a month of billing.

For routine, repeatable hygiene — nightly non-prod shutdowns, weekly zombie sweeps, tagging compliance checks — a workflow engine handles the toil nicely. Wiring those checks into n8n automation means the loop runs whether or not anyone remembers to look.

How to avoid re-bloat

Savings rot without maintenance. Four habits keep the number down:

  1. Run the loop monthly. A short, recurring cost review with the engineering team, not a one-off project.
  2. Make spend visible by default. A dashboard everyone sees, broken down by team and tag.
  3. Enforce guardrails in CI. Tagging, sizing, and policy checks that block bad config before merge.
  4. Re-evaluate commitments quarterly. Baselines shift; your Savings Plans and reservations should follow.

Cloud cost optimization isn’t a sprint you finish. It’s a habit that compounds, and the teams that treat it that way stop fearing the monthly invoice.

Frequently asked questions

How much can I realistically save on my cloud bill?

For most teams that haven’t run a structured FinOps effort, savings of 30–60% are typical — and the higher end is attainable when there’s significant over-provisioning, untagged sprawl, and no commitment discounts in place. The exact figure depends on your starting point. The first cleanup delivers the biggest jump; governance preserves it.

Will cost optimization hurt performance or reliability?

Done correctly, no. Rightsizing targets unused headroom, not capacity you actually need, and autoscaling improves resilience by matching capacity to demand. The risks come from cutting blindly — which is why visibility comes first and you validate every change against real utilization and latency data before applying it.

Do I need a dedicated FinOps team to do this?

Not to start. A focused initial cleanup plus Terraform guardrails and automated alerts gets most organizations most of the way there. The ongoing loop can be owned by a small group, embedded in engineering practice, or run by an MSP partner. What matters is that someone owns the number and the loop runs on a schedule.

Cut the bill, then keep it cut

The fastest cloud cost optimization wins come from deleting waste; the lasting ones come from governance that stops it returning. If you’d rather see results than spreadsheets, we’ll run the full loop — visibility, optimization, and Terraform-backed guardrails — across your AWS, GCP, or Azure estate. Contact us and we’ll start with a cost review that pays for itself.

Ready to put this into production?

Tell us what you're building. We'll map the shortest path to shipping it.

Keep reading

More from the blog

Infrastructure

Servir assets estáticos desde Cloudflare R2 en vez de S3: ventajas, reglas y límites

Cuándo mover assets y directorios estáticos a Cloudflare R2 en lugar de S3: costes, SSG, dominios personalizados, reglas de caché y patrones de producción.

Infrastructure

Servir des assets statiques depuis Cloudflare R2 plutôt que S3 : bénéfices, règles et limites

Quand déplacer des assets et répertoires statiques vers Cloudflare R2 au lieu de S3 : coûts, SSG, domaines personnalisés, règles de cache et architecture de production.

Infrastructure

Servire asset statici da Cloudflare R2 invece che da S3: vantaggi, regole e limiti

Quando spostare asset e directory statiche su Cloudflare R2 invece che su S3: costi, SSG, domini personalizzati, regole di cache e architettura di produzione.