How an AWS bill is built
Every bill is
three meters
AWS documents pricing one service at a time, so every new service looks like a new billing model to learn. It isn't. There are three meters (Time, Bytes, Units), and a service either turns one or it doesn't. Once you can say which, a pricing page stops being a lesson and becomes a lookup.
Since you opened this page, one t3.micro somebody forgot to terminate has been turning its meter.
Elapsed
Accrued, USD
You sent no requests. You moved no data. The meter ran anyway. That is the whole of Time, the first of the three, and it is the one that quietly dominates most bills.t3.micro on-demand at $0.0104/hour, us-east-1. EBS and the public IPv4 address would each add their own line.
The three meters
01
Time
Does the thing exist?
- Counts
- Something exists, multiplied by how long it existed. Instances bill per second, storage per GB-month, seats per month.
- Gets missed
- It runs whether or not you use it. Forgetting to delete costs more than forgetting to stop.
- On the bill
BoxUsage, Hours, GB-Mo
02
Bytes
Did bytes cross a boundary, pass through a box, or get read where they sat?
- Counts
- Gigabytes, counted three ways: leaving a boundary, handled by a box you put in the path, or scanned in place.
- Gets missed
- "Inbound is free" is a rule about transfer, not about this meter. A NAT Gateway or interface endpoint bills both directions, and Athena bills bytes that never moved at all.
- On the bill
DataTransfer-Out-Bytes, NatGateway-Bytes
03
Units
How many countable things did you ask for?
- Counts
- Countable units of work. Requests are just the commonest kind: tokens, pages, characters, destinations and every 64 KB slice of a payload all count the same way.
- Gets missed
- One call is often not one unit. A 1 MiB queue message is 16 of them, a 200 KB event is 4. And about half of all services never turn this meter: EC2, IAM and STS charge nothing per call.
- On the bill
Requests
Reading a diagram here
One rule holds across every picture on this site: colour means billed, grey means free. You can find the money before you read a word. Here is the simplest case: a request arrives, a response leaves.
Path through Client, API Gateway, EC2, hop by hop:
- Client (internet)
- API Gateway (per request) is billed on the Units meter for as long as it exists.
- EC2 (t3.micro) is billed on the Time meter for as long as it exists.
- Client to API Gateway: Request (inbound). Billed on the Units meter, 1 unit.
- EC2 to Client: Response, 1 GB (outbound). Billed on the Bytes meter, $0.09/GB.
All three meters appear here. The lamp on the EC2 box is Time, turning before the request arrived and after the response is sent. The inbound request is free as bytes but still counts as one unit at the API. Only the response out turns the Bytes meter.
Topics
Each page opens with the model, then earns it.
- The billA line item is a usage type, an operation, and a charge type. Learn that grammar and the bill decodes.
- Free tierFree is a discount applied to a meter that already ran. Nothing was switched off.
- Free servicesA service that turns no meter is not the end of the question. What it creates turns three.
- EC2Time and outbound bytes. Calling the API is free.
- IdleThe Time meter measures existence, not activity. Only deleting stops it, and "stopped" rarely means deleted.
- Storage classesA storage class sets five prices at once. Per-GB is the only one a colder class always improves.
- BoundariesEgress is not about the internet. It is about which ring you crossed.
- RoundingEvery meter rounds up to a minimum unit. You are billed for the box your usage landed in, not the usage.
- UnitsOne call is very often not one billed unit. The payload decides how many.
- TiersTiered rates are marginal. Once you cross a boundary the headline rate is nobody's actual rate.
- RegionsThere is no AWS price. There is a price per region, and the usage type on your bill names which one.
- CommitmentsA commitment changes the rate, not which meter turns. The meter runs the same; only the price moves.
- Account chargesSome charges attach to an account, not a thing. Nothing to tag, and deleting infrastructure will not move them.
- EstimatingAn estimate is a model of which meters will turn. It fails by omitting one, not by mispricing it.
- AllocationThe bill records what AWS metered, not who caused it. Turning one into the other is a system you build in advance.
- MarketplaceSome lines are software someone else sells, billed through AWS. The seller picked the meter; your levers stop there.