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
Calls
Did you invoke the API?
- Counts
- The number of API operations. Payload size and direction are irrelevant.
- Gets missed
- Most services do not have this meter at all. 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.
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.