Hero Light Hero Light
Hero Light

The 2025 AWS Cost Optimization Guide

A pragmatic playbook every CTO can hand to the DevOps team to slash cloud spend without sacrificing performance.

The 2025 AWS Cost Optimization Guide
February 20, 2025
nScope Team

Cloud agility is amazing — until the monthly invoice lands. If your AWS bill feels like it’s growing faster than revenue, you’re not alone. The good news: most teams can trim 25‑50% of AWS spend in under a quarter without rewriting their applications. This guide distills the highest‑impact moves — updated for the newest 2024‑25 features like Cost Optimization Hub and Graviton3 — so you can start saving today.

0. Hunt the Zombies First

Before dashboards and commitments, wipe out truly idle spend:

  • EC2 & RDS instances from last quarter’s experiment still running 
  • Orphaned EBS volumes / snapshots 
  • Unused Elastic IPs and NAT Gateways (swap to t4g NAT instances or VPC Endpoints for low‑throughput dev nets) 
  • Stale Lambdas, log groups, and AMIs

A one‑time cleanup here routinely chops 5‑15% off the bill and gives you a cleaner baseline for the steps that follow.

1. Measure Before You Optimize

You can’t optimize what you can’t see.

  • Enable AWS Cost Explorer and tag 95% of resources within 30 days.
  • Deploy the Cloud Intelligence Dashboards CloudFormation stack for exec‑friendly, real‑time KPIs.
  • Set budgets & alerts for both overall spend and key services (e.g., >10% MoM increase triggers Slack alert).
  • Create tiered billing alarms in CloudWatch (e.g., $100, $500, $1,000) so bill shocks never wait for month‑end.

Here is a CLI one-liner to see top 5 services by cost last month (excluding tax):

aws ce get-cost-and-usage \
  --time-period Start=$(date -v-1m +%Y-%m-01),End=$(date +%Y-%m-01) \
  --granularity MONTHLY --metrics UnblendedCost \
  --group-by Type=DIMENSION,Key=SERVICE |
  jq '[.ResultsByTime[0].Groups[]
        | select(.Keys[0]!="Tax")
        | {service:.Keys[0], cost:(.Metrics.UnblendedCost.Amount|tonumber)}]
        | sort_by(.cost) | reverse | .[:5]'

2. Right‑Size Continuously

  • Turn on AWS Compute Optimizer recommendations for EC2, EBS, and Lambda.
  • For Kubernetes, pair Karpenter with Cluster Autoscaler to downscale idle nodes in minutes.
  • Adopt Target Tracking Scaling Policies instead of manual instance sizing.
  • Run Trusted Advisor idle checks (Business/Enterprise Support) to surface under‑utilized RIs, EIPs, and NAT Gateways.

Pro tip: Treat right‑sizing as a daily automated job, not a one‑time project.

3. Switch to Efficient Silicon

  • Graviton3 instances deliver ~25% better price‑performance vs x86 for typical workloads.
  • For ML inference, evaluate Inferentia2 or AWS Trainium.
  • Benchmark first; many workloads need only a simple --platform linux/arm64 rebuild.

4. Commit Smartly (Savings Plans, RIs, Spot)

OptionTypical SavingsBest ForCaveats
Compute Savings Plan40–66%Flexible EC2/Fargate/Lambda usage1‑ or 3‑year commitment
Standard RI40–72%Steady, long‑running instancesTied to family/region
Spot Instances70–90%Fault‑tolerant & batch jobsCan be interrupted

Blend Savings Plans for baseline load and Spot for bursty tasks to maximize ROI.

5. Automate Shutdowns

  • Use the Instance Scheduler (Solution Library) to power off dev/test stacks outside business hours.
  • Lambda cron jobs can tag & stop idle RDS clusters and Redshift dev clusters.
  • For containers: employ horizontal-pod-autoscaler with zero‑replica floor during nights/weekends.
  • Replace small NAT Gateways in non‑prod VPCs with cheaper t4g NAT instances or private endpoints.

6. Storage Hygiene

  • Enable S3 Intelligent‑Tiering for unpredictable access patterns; no retrieval fees for >128KB objects.
  • Expire old EBS snapshots to Snapshot Archive — costs 75% less than standard.
  • Compress & partition logs before shipping to S3/Glacier; consider Parquet over raw JSON.

7. Database Savings

  • Migrate from general‑purpose to Graviton‑based RDS/TiDB/Aurora instances.
  • Adopt Aurora Serverless v2 for spiky workloads (provision to zero in <1 min).
  • Turn on RDS storage autoscaling to pay only for used GB.
  • Archive cold data from RDS to S3/Glacier, then query it on demand via Athena or Redshift Spectrum.

8. Leverage the Newest Services & Features

  • Amazon S3 Express One Zone (Dec 2024) offers SSD‑grade latency for 60% less than Multi‑AZ.
  • Run GPU‑intensive ML training or fine‑tune jobs on AWS Batch + Spot instead of long‑lived on‑demand GPU nodes — restart‑tolerant workloads often save 60–80%.

9. Observability on a Budget

  • Use FireLens to route container logs directly to S3 -> Athena rather than CloudWatch Logs.
  • Lower CloudWatch Logs retention to 14 days; ship older logs to cold storage.
  • Sample traces (X‑Ray) at 10–20% for prod to cut ingestion costs.

10. Adopt AWS Cost Optimization Hub

A single console aggregates Compute Optimizer, Trusted Advisor, and Savings Plan hints. Prioritize actions with highest $ impact and automate via AWS Systems Manager OpsCenter tickets.

11. Review & Repeat

Schedule a quarterly cost‑optimization sprint:

  1. Refresh Compute Optimizer & Hub reports.
  2. Triage actions >$500/mo.
  3. Automate the change via IaC pull requests.
  4. Celebrate wins publicly.

Conclusion

AWS cost optimization isn’t a one‑off exercise — it’s a continuous discipline that blends tooling, automation, and culture. By executing the twelve tactics above, SaaS teams routinely cut 30‑50% of spend within a single quarter, freeing budget for innovation.

Need a jump‑start? Schedule a discovery call with an nScope architect. Walk away with a prioritized action list and an AWS Savings Plan Decision Matrix tailored to your workloads.

Book your session

More Articles

Let's have a chat!

Just fill out the form, and we will be in touch with you soon.