Short Work
  1. Home
  2. Guides
  3. Cut your AWS bill

How to cut your AWS bill

Most AWS bills don't grow because of one big mistake. They grow from dozens of small ones: a test server nobody switched off, logs kept forever, an old database version quietly charged extra. Here is the order we work in, with the real prices behind each fix.

Updated 31 October 2026 · 12 minute read · Short Work guides

Short answer

Work in this order, because each step makes the next one cheaper and safer:

  1. See it: turn on the free billing tools and alerts.
  2. Delete it: remove what nobody uses.
  3. Shrink it: rightsize, schedule and modernise what is left.
  4. Commit to it: only then buy Savings Plans for the steady baseline.

Respondents to Flexera's 2026 State of the Cloud survey estimated 29% of their cloud infrastructure spend was wasted, the first rise in five years. In an account that has never been reviewed, a fifth to a third is a realistic target.

Prices below are the US East figures AWS uses in its own examples, in US dollars. London (eu-west-2) and other regions are often a little higher. Check the AWS pricing pages in the sources for your region.

Step 1: See where the money goes (free)

  • Cost Explorer. Group by service, then by usage type. The usage type is where the surprises live: NAT gateway bytes, public IPv4 hours, snapshot storage.
  • Cost Anomaly Detection. Free. Accounts that switched on Cost Explorer from March 2023 get a default monitor that emails a daily summary when a service's spend runs well above normal. If yours predates that, set it up in five minutes.
  • A budget with an alert. One monthly budget for the whole account, alerting at 80% and 100% of forecast, catches runaway costs in days rather than at month end.
  • Tags. Tag resources by environment (production, staging, dev) and owner, and activate them as cost allocation tags. Untagged spend is spend nobody owns.

Step 2: Quick wins that rarely need downtime

FixThe chargeTypical effect
Unattached EBS volumes and old snapshotsCharged per GB every month whether used or notOften the first few hundred dollars found in any review
Public IPv4 addresses$0.005 an hour each, in use or idle, since February 2024About $3.65 a month each. Twenty spare addresses is around $876 a year
gp2 volumes to gp3gp3 is $0.08 per GB-month against $0.10 for gp220% off block storage, changed live with Elastic Volumes
Log retentionIngesting logs is $0.50 per GB on the Standard class, then storage every monthNew log groups keep data forever by default. Set 30 to 90 days for most
S3 traffic through a NAT gatewayNAT processing is $0.045 per GB, plus $0.045 an hour per gatewayA gateway endpoint for S3 and DynamoDB is free and skips the NAT charge

Public IPv4 is the new hidden line

Since 1 February 2024 AWS has charged for every public IPv4 address, attached or not. It is small per address and easy to miss across load balancers, test servers and forgotten Elastic IPs. Public IP Insights in the VPC console lists them all.

gp3: the easiest 20% on AWS

gp3 includes 3,000 IOPS and 125 MB/s at any size, and AWS designed it to replace gp2 for every use. The change happens live without detaching the volume. One check first: big gp2 volumes over 1 TB get more baseline IOPS and throughput from their size, so match that by provisioning extra IOPS and throughput on the gp3 volume. Even then it usually works out cheaper.

NAT gateways cost money just to exist

Each NAT gateway costs about $33 a month before it moves a single byte ($0.045 an hour). A dev environment copied from production with one gateway in each of three zones is around $99 a month for nothing. Use one gateway in non-production, and route S3 and DynamoDB traffic through free gateway endpoints everywhere.

Step 3: Check for Extended Support charges

This is the one we see catch people out most. When a database or Kubernetes version reaches the end of standard support, AWS keeps it running but adds a fee, automatically.

  • RDS and Aurora (MySQL and PostgreSQL). Charged per vCPU per hour, on every instance including replicas and Multi-AZ standbys, and Reserved Instance discounts don't apply. AWS's own example: a 2 vCPU db.r5.large costs an extra $1,752 a year in years one and two, then $3,504 in year three. MySQL 5.7 moved to year-three pricing on 1 March 2026, at $0.200 per vCPU-hour in US East (Ohio).
  • EKS. A cluster on a Kubernetes version in extended support costs $0.60 an hour instead of $0.10, an extra $365 a month per cluster. Extended support is switched on by default, so clusters drift into it unless you set the upgrade policy or keep upgrading.

The fix is an upgrade, which needs testing. It is usually the single largest saving on accounts running older databases.

Step 4: Rightsize, schedule and modernise

Rightsize

Look at at least two weeks of CPU and memory for each server and database. Anything sitting under 20% most of the time is a candidate for the next size down. AWS Compute Optimizer gives recommendations for EC2, EBS, Lambda and more. Install the CloudWatch agent if you want memory included, because EC2 doesn't report it by default.

Switch off what only runs in office hours

Dev, test and staging servers rarely need to run at night or weekends. Running them 12 hours a day on weekdays is 60 of the week's 168 hours, which cuts their compute cost by about 64%. A scheduled job or the AWS Instance Scheduler handles it.

Move to Graviton where you can

AWS says its Arm-based Graviton instances give up to 40% better price performance than comparable x86 instances, and its testing whitepaper puts them at 10 to 20% cheaper per hour on average in the same family. Most Linux workloads in Java, Python, Node, Go and containers move with little or no code change. Build multi-architecture images and test before switching. If you need to stay on x86, AWS's own comparison shows AMD instances about 10% cheaper than the Intel equivalents.

Tier your S3 storage

S3 Intelligent-Tiering moves objects nobody has opened for 30 days to a tier 40% cheaper, and after 90 days to one 68% cheaper, with no retrieval fees and a small monitoring charge. Objects under 128 KB aren't tiered. Add lifecycle rules to delete old object versions and incomplete multipart uploads, which build up silently.

Turn down the logging

Debug logging left on in production is a common surprise. Drop to info level, set retention on every log group, and move logs you keep only for audit to the Infrequent Access class, which halves the ingestion price but doesn't support live alarms.

Step 5: Commit to the baseline

Once the account is clean, look at the spend that stays flat every hour of every day. That is what to commit to.

  • Compute Savings Plans: up to 66% off on-demand, applied across EC2, Fargate and Lambda in any region. The flexible default for most small businesses.
  • EC2 Instance Savings Plans and Standard Reserved Instances: up to 72% off, in exchange for sticking to one instance family in one region.
  • Spot: up to 90% off for work that can be interrupted with two minutes' notice, such as batch jobs, CI runners and test environments. AWS says Spot is interrupted less than 5% of the time on average.

The biggest discounts need three-year terms or upfront payment. For a growing small business, a one-year, no-upfront Compute Savings Plan covering 60 to 80% of the steady baseline is a sensible start. Cost Explorer recommends an hourly commitment from your last 30 or 60 days of usage.

A worked example

An illustrative account spending $4,000 a month: a small web product with production, staging and dev environments, never reviewed. Your numbers will differ.

AreaMonthly spendChangeMonthly saving
EC2, production$1,500Rightsize and move to Graviton (15%), then a Compute Savings Plan on the rest (25%)$544
EC2, dev and test$400Run 12 hours on weekdays only$256
RDS$700Rightsize one oversized instance$100
EBS$300gp2 to gp3, delete orphaned volumes and snapshots$110
NAT and data transfer$350S3 gateway endpoint, one NAT in non-production$120
CloudWatch$200Retention on every log group, audit logs to Infrequent Access$70
Public IPv4$40Release unused addresses$20
Everything else$510No change$0
Total$4,000New bill about $2,780$1,220 (about 30%)

That is about $14,600 a year. If this account were also running MySQL 5.7 on a Multi-AZ instance, the database upgrade alone could add several hundred dollars a month on top.

Mistakes to avoid

  • Committing before cleaning up. A three-year plan on oversized servers is three years of paying for the wrong thing.
  • Deleting without a snapshot or a check. Confirm with the owner, snapshot anything uncertain, and set a date to delete the snapshot.
  • Rightsizing on averages alone. Look at peaks too. A server idle 23 hours a day may need its size for the month-end run.
  • One-off clean-ups. Without alerts, tags and an owner, the bill creeps back within a year.

Want it done for you?

Our tech cost review covers AWS, Azure, Google Cloud, software subscriptions and AI spend for £1,500, using read-only access. You get a costed list of cuts with the saving, effort and risk for each. If we don't find savings worth at least the fee over the next year, you don't pay.

Questions

How much can a small business usually save on AWS?

Flexera's 2026 State of the Cloud survey put estimated waste at 29% of infrastructure and platform spend. In accounts that have never been reviewed, a saving of a fifth to a third is common. Accounts that are already tidy will see less.

Should I buy Savings Plans first?

No. Clean up and rightsize first, then commit to the usage that is left. Buying a plan before cleaning up locks in a discount on waste for one or three years.

Will cutting costs cause downtime?

Most quick wins do not. Deleting unattached volumes, changing gp2 to gp3, setting log retention and adding S3 gateway endpoints are done without restarts. Rightsizing, Graviton moves and database upgrades need testing and a planned change window.

Does this apply to Azure and Google Cloud?

The ideas do: idle resources, oversizing, old storage, logging, network charges and commitment discounts exist on every cloud. The product names and prices differ.

Sources

  1. Flexera, 2026 State of the Cloud Report key findings
  2. AWS, New Cost Explorer users now get Cost Anomaly Detection by default
  3. AWS, Public IPv4 address charge and Public IP Insights
  4. AWS, Amazon VPC pricing (NAT gateway and public IPv4)
  5. AWS, Amazon EBS General Purpose volumes (gp3 and gp2)
  6. AWS, Migrate EBS volumes from gp2 to gp3
  7. AWS, Amazon RDS for MySQL pricing (Extended Support)
  8. AWS, Estimating the charges for Amazon RDS Extended Support
  9. AWS, Amazon EKS pricing
  10. AWS, Amazon EKS cluster upgrade policy
  11. AWS, Amazon CloudWatch pricing
  12. AWS, CloudWatch Logs Infrequent Access log class
  13. AWS, Getting started with Graviton
  14. AWS, Graviton performance testing whitepaper
  15. AWS, Optimize your x86-based EC2 workloads (AMD instances)
  16. AWS, S3 Intelligent-Tiering
  17. AWS, Compute Savings Plans and Reserved Instances
  18. AWS Well-Architected, Select the best pricing model (Spot)

Prices and figures were checked on 31 October 2026 and are AWS list prices in US dollars. AWS changes prices and features regularly. This guide is general information, not financial advice.

Send us your last AWS bill

Book a free 30 minute call and we'll tell you where we'd look first, and whether a review is worth it.

Book a free call