Keel

Why is our AWS bill so high when we have almost no users?

By the Keel team · Last checked · 4 min read

Short answer

An AWS bill stays high with almost no users because most costs are for resources that run whether anyone uses them or not: NAT gateways, load balancers, databases sized for future growth, staging and preview environments left on, public IPv4 addresses, and logs or snapshots that are never cleaned up. Usage-based costs are often the small part of an early-stage bill.

Why does AWS cost money when nobody is using the product?

Many AWS resources are billed by the hour they exist, not by the requests they serve.

A database instance, a NAT gateway or a load balancer costs roughly the same at three users as at three hundred. Early-stage products often build production-ready infrastructure before the traffic arrives, so the always-on costs dominate.

Where does the money go in an early-stage AWS bill?

In an early-stage account, the money usually goes on always-on resources: NAT gateways, databases, load balancers, non-production environments, public IPv4 addresses, logs and storage.

These are common places to look first. Your bill will differ, so check each against Cost Explorer rather than assuming.

Common always-on costs in an early-stage AWS account
ResourceWhy it costs money idleWhat to check
NAT gatewaysHourly charge per gateway, plus a charge per GB processedOne per availability zone in every environment adds up; VPC endpoints can cut data processing
DatabasesBilled per instance hour, sized for future scaleCPU and memory use; Multi-AZ on non-production
Load balancersHourly charge per load balancerOne per service or environment when one could be shared
Staging and preview environmentsRun 24 hours a day by defaultSchedule them off overnight and at weekends
Public IPv4 addressesAWS charges for each public IPv4 addressUnused Elastic IPs and public IPs on internal resources
CloudWatch LogsIngestion and storage, kept forever by defaultRetention periods and noisy debug logging
EBS volumes and snapshotsBilled while they exist, attached or notUnattached volumes and old manual snapshots

How do you find the cause of a high AWS bill in your own account?

Find the cause by grouping Cost Explorer by service, then usage type, then tag, and comparing what is running with what is in your infrastructure code.

  1. In Cost Explorer, group the last three months by service and note the top five.
  2. For each, group by usage type to see whether it is hours, storage or data transfer.
  3. Group by tag or by linked account to see whether the cost is production or non-production.
  4. List resources with low utilisation, for example with AWS Compute Optimizer.
  5. Check for anything created by hand that is not in your Terraform, because forgotten resources are usually the hand-made ones.

What AWS costs can you safely cut first?

The safest first cuts are unused volumes, snapshots and IP addresses, log retention, scheduling non-production off, a shared NAT gateway outside production, and no Multi-AZ on non-production databases.

  • Delete unattached volumes, old snapshots and unused Elastic IPs, after checking they are not needed.
  • Set retention on every CloudWatch log group.
  • Turn staging and preview environments off outside working hours.
  • Use one NAT gateway for non-production, and add VPC endpoints for services such as S3 and ECR.
  • Turn off Multi-AZ on non-production databases.
  • Downsize databases that run at low CPU and memory, during a maintenance window.

Make each change through infrastructure as code, so it does not quietly come back.

When is a high AWS bill actually fine?

A higher bill can be the right call when it buys safety you need, such as Multi-AZ on the production database or backups kept long enough to meet your recovery targets.

The goal is not the lowest bill. It is a bill where every line has a reason. The monthly cost review checklist helps keep it that way.

Is your AWS bill high for avoidable reasons?

Tick each item you find in your own account.

  • A NAT gateway in every availability zone of non-production.
  • Staging or preview environments running overnight.
  • Log groups with no retention period.
  • Unattached EBS volumes or old manual snapshots.
  • Unused Elastic IPs or public IPs on internal resources.
  • Resources running that are not in your infrastructure code.

Decision point: Any tick is a saving waiting to be taken. Three or more: run a clean-up this week before thinking about commitments.

Can data transfer explain a high AWS bill?

Sometimes. Data transfer out to the internet, between availability zones and through NAT gateways is charged per GB, and it is easy to miss because it does not appear as a resource you can see in the console.

Group Cost Explorer by usage type and look for data transfer lines. Common fixes include VPC endpoints for AWS services and keeping chatty services in the same availability zone.

Is the AWS Free Tier hiding real costs?

It can. Free Tier allowances cover limited usage of some services for a period, and a bill that looks small in the first months can jump when allowances end or when usage passes them.

Check the Free Tier usage page in the Billing console to see which services are close to their limits, and budget as if they were already paid.

Should an early-stage startup use fewer AWS services?

Often, yes. Every extra environment, availability zone and managed service adds always-on cost and something else to look after.

An early product can usually run on one region, a small number of services and a shared load balancer, with production-grade safety where it counts: tested backups, automatic rollback and least-privilege access. Add complexity when traffic or customers require it.

How much should a small SaaS spend on AWS?

There is no standard figure, because it depends on the product, the data and the architecture.

A more useful question is whether each line on the bill has a reason you can explain, and whether cost is growing faster than usage. If you cannot explain the top five lines, start there.

Sources

  1. AWS, Amazon VPC pricing (NAT gateway) (checked October 2026)
  2. AWS News Blog, New charge for public IPv4 addresses (July 2023)
  3. AWS docs, Analyzing your costs with AWS Cost Explorer (checked October 2026)
  4. Flexera, 2026 State of the Cloud Report (2026)

Keep reading

Keel is an AWS release and recovery operations service for SaaS teams of 3 to 15 developers, provided by Bargainn Services Ltd, a UK company registered at Companies House (16497746). Registered office: 3rd Floor, 86-90 Paul Street, London, EC2A 4NE, United Kingdom.