Skip to main content
All posts

How to Reduce Your AWS Bill: The Fixes That Pay, With Real Prices

Why the AWS bill grows, how to find what drives it, what each fix saves at AWS's own prices, and the alerts that keep it down.

Bruno RochaFounder
Ler em portuguêsComo reduzir custos na AWS: as correções que pagam, com preços reais

Find out which services drive the bill, delete what nobody uses, fix the defaults that cost money every month, commit to the usage you always run, and set alerts so the bill can't grow quietly again. On most AWS accounts the same items come up: idle load balancers, NAT gateways and public IPv4 addresses that bill by the hour, traffic to S3 that pays NAT processing it doesn't need, gp2 volumes, CloudWatch logs kept forever, non-production servers running all night, and steady workloads on On-Demand rates.

Every price below is AWS's own for us-east-1 (N. Virginia), from its pricing pages and price data in October 2026, with a link to the page. Other Regions charge different rates.

Why is my AWS bill so high?

Most of the bill grows from three things: resources that keep billing after nobody needs them, defaults that cost more than the alternative, and steady usage paid at On-Demand rates. Some charges also bill by the hour whether or not anything flows through them: a NAT gateway costs $0.045 an hour, about $32.85 a month, an Application Load Balancer from $0.0225 an hour, about $16.43 a month, and each public IPv4 address $0.005 an hour, about $3.65 a month, in use or idle. VPC pricing · Elastic Load Balancing pricing · Public IPv4 charge.

How do I find what's driving my AWS bill?

  • Open Cost Explorer, set the last three months, and choose Group by: Service. The top five services usually hold most of the bill. Forecasts don't show while the view is grouped. Cost Explorer.
  • Group the top service again by usage type. It splits EC2 into instance hours, EBS, NAT, and data transfer, and shows which one grew.
  • Opt in to Cost Optimization Hub and Compute Optimizer. Both come at no additional charge, and they list idle resources and rightsizing across all your accounts and Regions. Cost Optimization Hub · No additional charge · Compute Optimizer pricing.

Which fixes cut the most, and what do they save?

Send S3 and DynamoDB traffic through gateway endpoints instead of a NAT gateway
What it costs today
NAT processing at $0.045 per GB; gateway endpoints are free
Example saving
10 TB a month to S3 through NAT: $460.80 a month
Move gp2 volumes to gp3
What it costs today
gp2 at $0.10 per GB-month, gp3 at $0.08 with 3,000 IOPS and 125 MiB/s included
Example saving
10 TB of gp2: $204.80 a month
Set a retention period on CloudWatch log groups
What it costs today
Logs never expire by default; storage at $0.03 per GB-month, compressed
Example saving
5 TB of old logs deleted: $153.60 a month, plus the growth you stop
Stop non-production instances outside working hours
What it costs today
An m7i.xlarge at $0.2016 an hour costs $147.17 a month around the clock
Example saving
Running 12 hours on weekdays only: $52.42 a month, 64% less
Delete idle load balancers and NAT gateways, and release unused public IPv4 addresses
What it costs today
$0.0225, $0.045, and $0.005 an hour
Example saving
$16.43, $32.85, and $3.65 a month each
Commit to steady compute with a Savings Plan
What it costs today
On-Demand rates
Example saving
26.5% to 60.5% off an m7i.xlarge, depending on plan and term

Sources: AWS pricing pages and price data for us-east-1, October 2026. 730 hours a month.

Is NAT gateway traffic to S3 and DynamoDB costing you?

A NAT gateway charges $0.045 for every GB it processes, on top of its hourly rate. Instances in private subnets that read from S3 or DynamoDB often send that traffic through NAT, though AWS gives both services gateway endpoints, and "there is no additional charge for using gateway endpoints." Gateway endpoints. Add an S3 and a DynamoDB gateway endpoint to each VPC and associate them with every private route table, including those of new subnets, or the traffic goes back through NAT.

Should you move gp2 volumes to gp3?

Yes, for almost every volume. gp3 costs $0.08 per GB-month against gp2's $0.10, includes 3,000 IOPS and 125 MiB/s whatever its size, and you change the type in place with no downtime. EBS pricing · General Purpose volumes. A large gp2 volume that relies on its size for IOPS may need extra gp3 IOPS, at $0.005 per IOPS-month above 3,000; check its peak IOPS before you switch.

How long do you keep CloudWatch logs?

Forever, unless you set a retention period. Storage costs $0.03 per GB-month, compressed, and ingestion costs $0.50 per GB on the Standard class or $0.25 on Infrequent Access. CloudWatch pricing. In the CloudWatch console, open Log groups, select the Retention column of a group, choose how long to keep its events, and save. AWS usually deletes the older events within 72 hours. Log retention.

Is S3 storage in the right class?

S3 Intelligent-Tiering starts an object in its frequent tier, from $0.023 per GB-month, moves it to cheaper tiers after 30 and 90 days without access, and, if you opt in, to archive tiers after 90 and 180 days, down to $0.00099 per GB-month in Deep Archive Access. It charges a monitoring fee of $0.0025 per 1,000 objects. Objects under 128 KB aren't monitored and stay in the frequent tier. S3 pricing · Intelligent-Tiering. It suits large objects with access you can't predict; small objects gain little from it.

Do your non-production environments run all night?

A development instance that runs 12 hours on weekdays bills about 260 hours a month instead of 730. For one m7i.xlarge at $0.2016 an hour, that's $52.42 instead of $147.17. EC2 On-Demand pricing. Schedule stops for development, staging, and test environments, and for RDS instances behind them.

Are you paying On-Demand rates for steady usage?

Compute that runs all month belongs on a Savings Plan. On an m7i.xlarge, a 1-year Compute Savings Plan with no upfront payment saves 26.5%, and a 3-year EC2 Instance Savings Plan paid upfront saves 60.5%. Rightsize first, then commit to the usage you never drop below. Our guide Savings Plans vs Reserved Instances works through the sizing.

What about data transfer?

The first 100 GB a month out to the internet is free across all services and Regions; after that, the first 10 TB costs $0.09 per GB. Data transfer pricing. Serve heavy downloads through CloudFront, keep chatty services in the same Availability Zone, and check which usage type grows in Cost Explorer before you redesign anything.

How do I stop the AWS bill from growing again?

  • Create a budget: in the Billing and Cost Management console, open Budgets, choose Create budget, pick a template such as Monthly cost budget or Zero spend budget, and add the emails to alert. One alert reaches up to 10 emails and an SNS topic, and forecast alerts need about five weeks of history. Monitoring and alerts are free. Budget templates · Budgets best practices · Budgets pricing.
  • Turn on Cost Anomaly Detection: open it, choose Cost monitors, then Create monitor, pick what to watch (services, linked accounts, a tag, or a cost category), and set an alert by amount or percentage. Alerts can start within 24 hours. Getting started.
  • Add a daily Savings Plans coverage budget and a daily reservation utilization budget, both templates in AWS Budgets, so a commitment that stops fitting reaches you by email.
  • Tag what you create with an owner and an environment, so the next spike has a name on it.
  • Hand the recurring work to a tool once the list outgrows your team. We compare AWS's own tools and the third-party ones in The Best AWS Cost Optimization Tools in 2026.

Common mistakes when cutting AWS costs

  • Buying a Savings Plan before deleting idle resources and rightsizing, which locks a discount onto waste.
  • Adding a gateway endpoint to some route tables and not others, so part of the S3 traffic keeps paying NAT processing.
  • Fixing a resource in the console when Terraform manages it, so the next apply brings the old setting back.
  • Setting log retention once and forgetting new log groups, which start with no expiry.
  • Counting the saving from the recommendation instead of checking next month's bill.

LevelFour finds this waste across 53 AWS services, prices each fix against what you pay today, and applies it in your account or ships it as a pull request to your infrastructure code. Savings Audit then confirms each saving on the bill. See what LevelFour can save you in 5 minutes, with read-only access.

Frequently asked questions

Why is my AWS bill so high?

Usually resources that keep billing after nobody needs them, defaults that cost more than the alternative, and steady usage on On-Demand rates. NAT gateways, load balancers, and public IPv4 addresses bill by the hour even when idle, CloudWatch logs never expire by default, and gp2 volumes cost 25% more per GB than gp3.

What is the fastest way to reduce AWS costs?

Delete idle resources and fix defaults first: release unused public IPv4 addresses, remove idle load balancers and NAT gateways, add gateway endpoints for S3 and DynamoDB, move gp2 volumes to gp3, and set CloudWatch log retention. Then rightsize and buy Savings Plans for the usage that remains steady.

How do I find unused AWS resources?

Opt in to Cost Optimization Hub and Compute Optimizer. Both come at no additional charge and list idle resources, such as unattached EBS volumes and idle NAT gateways, across your accounts and Regions. Trusted Advisor's cost checks cover idle load balancers and unassociated Elastic IPs on Business Support+ and the higher support plans, and on the older Business and Enterprise On-Ramp plans until they end on January 1, 2027. Trusted Advisor checks.

Do VPC gateway endpoints cost anything?

No. AWS charges nothing for gateway endpoints, which exist for S3 and DynamoDB. Gateway endpoints.

Is gp3 cheaper than gp2?

Yes. In us-east-1, gp3 costs $0.08 per GB-month and gp2 $0.10, and gp3 includes 3,000 IOPS and 125 MiB/s at any size. You can change a volume from gp2 to gp3 in place, with no downtime.

How do I set up an AWS cost alert?

In the Billing and Cost Management console, open Budgets, choose Create budget, pick the Monthly cost budget template, set the amount, and add up to 10 emails. Budget monitoring and alerts are free. For spikes no budget expects, turn on Cost Anomaly Detection with a cost monitor and an alert threshold.

More posts

See what LevelFour can save you