EC2 Instance Pricing: Models, Live Rates, and the Costs AWS Buries

Alberto Grande
Head of Marketing

EC2 instance pricing is the single largest line on most AWS bills, and it is quoted as a tidy hourly number that hides four different pricing models, a per-region rate table, and a set of charges that never appear next to the instance itself. Pick m7i.xlarge, read "$0.20 per hour," multiply by 730, and the real invoice still comes in higher once storage, data transfer, and idle capacity are counted. This guide breaks down AWS cloud computing pricing for EC2: the four ways to pay for the same hardware, what each instance family costs right now, what the AWS pricing page does not tell you, and how a realistic monthly bill actually adds up. Every rate below is a live snapshot of the same dataset that powers DevZero's instance pricing explorer.
Last updated: 2026-09-12. AWS EC2 on-demand, Spot, and Reserved pricing for Linux in us-east-1, from the DevZero instances dataset.
Live EC2 instance pricing by family (us-east-1)#
EC2 groups instances into families: general purpose (M), compute optimized (C), memory optimized (R), burstable (T), and accelerated (G/P). Each is priced by vCPU, memory, and generation. The table below is the set of reference SKUs DevZero tracks for AWS in US East (N. Virginia), Linux, with the current on-demand hourly rate and an approximate monthly figure at 730 hours of continuous use.
| Instance Type | Family | vCPU | RAM | On-Demand $/hr | Approx $/month |
|---|---|---|---|---|---|
| t3.medium | Burstable (T) | 2 | 4 GiB | $0.0416/hr | ~$30.37/mo |
| m5.large | General purpose (M) | 2 | 8 GiB | $0.0960/hr | ~$70.08/mo |
| m6i.large | General purpose (M) | 2 | 8 GiB | $0.0960/hr | ~$70.08/mo |
| m7i.xlarge | General purpose (M) | 4 | 16 GiB | $0.2016/hr | ~$147.17/mo |
| c5.xlarge | Compute optimized (C) | 4 | 8 GiB | $0.1700/hr | ~$124.10/mo |
| r5.xlarge | Memory optimized (R) | 4 | 32 GiB | $0.2520/hr | ~$183.96/mo |
| g4dn.xlarge | GPU (G) | 4 | 16 GiB | $0.5260/hr | ~$383.98/mo |
The monthly column assumes the instance never stops. That is the right assumption for a load balancer target and the wrong one for a nightly batch box. The hours you run matter more than the rate you picked.
The four EC2 pricing models#
The same physical instance can be billed four ways. The hardware does not change; the commitment and the interruption risk do.
On-demand. Pay per second, no commitment, no interruption. The most expensive per hour and the right default for anything new, spiky, or short-lived.
Spot. Spare EC2 capacity at a steep discount, reclaimed by AWS with a two-minute warning when it needs the capacity back. Suited to stateless workers, batch jobs, CI, and anything behind a queue that can retry.
| Instance Type | On-Demand | Spot | Spot Discount |
|---|---|---|---|
| t3.medium | $0.0416/hr | $0.0168/hr | ~60% |
| m5.large | $0.0960/hr | $0.0427/hr | ~56% |
| m6i.large | $0.0960/hr | $0.0398/hr | ~59% |
| m7i.xlarge | $0.2016/hr | $0.0880/hr | ~56% |
| c5.xlarge | $0.1700/hr | $0.0630/hr | ~63% |
| r5.xlarge | $0.2520/hr | $0.0717/hr | ~72% |
| g4dn.xlarge | $0.5260/hr | $0.2780/hr | ~47% |
Reserved Instances. A 1- or 3-year commitment to a specific instance family and region in exchange for a lower rate. Best for the baseline capacity you know you will run around the clock.
| Instance Type | On-Demand | 1-yr Reserved (no upfront) | 3-yr Reserved | 3-yr Discount |
|---|---|---|---|---|
| t3.medium | $0.0416/hr | $0.0286/hr | $0.0191/hr | ~54% |
| m5.large | $0.0960/hr | $0.0675/hr | $0.0455/hr | ~53% |
| m6i.large | $0.0960/hr | $0.0671/hr | $0.0451/hr | ~53% |
| m7i.xlarge | $0.2016/hr | $0.1410/hr | $0.0946/hr | ~53% |
| c5.xlarge | $0.1700/hr | $0.1176/hr | $0.0760/hr | ~55% |
| r5.xlarge | $0.2520/hr | $0.1739/hr | $0.1218/hr | ~52% |
| g4dn.xlarge | $0.5260/hr | $0.3624/hr | $0.2522/hr | ~52% |
Savings Plans. A commitment to a dollars-per-hour spend level rather than a specific instance, giving Reserved-like discounts with more flexibility to change instance types. Not shown in the table above because it is a billing construct, not a per-instance rate, but it lands in roughly the same discount band as Reserved for equivalent commitment.
Same hardware, four rates. The discount ladder from on-demand down to a 3-year Reserved commitment is large, often more than half, which is why the pricing model is usually a bigger lever than the instance type.
What the AWS pricing page doesn't tell you#
- List price is not your price. Enterprise Discount Program and Private Pricing Agreement customers get negotiated rates the public page never shows. Large committed-spend deals move the real number well below the sticker.
- The pricing page is per-resource; your bill is per-workload. The page prices one instance for one hour. It has no view of how many instances an Auto Scaling group will actually launch under load, or how long they sit idle after the load passes.
- EBS is not included. Every instance needs a root volume, and the pricing page for EC2 does not add it. A gp3 root volume plus any data volumes bill separately, by provisioned size, whether or not you fill them.
- Data transfer is a guess field. Outbound bytes are billed per GB on a sliding scale, and the page assumes you know your monthly egress. Most estimates enter a number that is far too low.
- Per-region drift. Rates are set per region. An estimate built for us-east-1 will not match a deployment that landed in eu-west-1 or ap-southeast-2.
Treat a pricing-page figure as a single-moment list-price floor for one region, not a monthly budget.
Hidden and egress costs#
Instance compute is the largest line on almost every EC2 bill, but never the only one:
- EBS volumes and snapshots. Root and data volumes bill by provisioned GB-month, not usage. Snapshots bill on top, and orphaned snapshots from deregistered AMIs accumulate silently.
- Internet egress. Outbound to the internet is free for the first tier per month, then billed per GB on a schedule that steps down as volume grows, per AWS's published data transfer pricing (rates as of 2026-09-06). Image pulls, backups, and API responses all count.
- Cross-AZ traffic. Traffic between Availability Zones inside a region is billed per GB in both directions. A service spread across three AZs for resilience pays on every internal hop that crosses one.
- NAT Gateway. Private subnets route outbound through it at an hourly charge plus a per-GB data-processing charge that often exceeds the hourly one.
- Elastic IPs and idle load balancers. An unattached Elastic IP is billed hourly. An Application Load Balancer bills hourly plus per LCU-hour even when traffic is light.
- Detailed monitoring and per-instance CloudWatch. Turning on 1-minute metrics across a fleet is a per-instance charge that scales with node count.
None of these appear in a per-instance rate, which is why compute-only estimates come in optimistic.
Worked example: 12 m7i.xlarge instances running 24/7#
Take a small production tier in us-east-1: twelve m7i.xlarge instances behind an ALB, running continuously, each with a 100 GiB gp3 root volume, plus about 4 TB of internet egress per month.
Compute. Call the live m7i.xlarge on-demand rate from the table above R dollars per hour. Twelve instances at 730 hours is 12 x 730 = 8,760 instance-hours per month, so compute is 8,760 x R. Read R off the on-demand table on this page for the current figure; it is by far the largest number in this example.
Storage. A 100 GiB gp3 volume is roughly $8 per volume per month at AWS's published gp3 rate (as of 2026-09-06), so twelve volumes is about $96 per month, independent of how much data you store.
Egress. The first tier is free; the remaining bytes bill at roughly $0.09 per GB in the first paid tier (AWS data transfer pricing, 2026-09-06). About 3.9 TB paid is roughly $350 per month.
Load balancer. An ALB with modest traffic is roughly $25 per month.
Monthly total: (8,760 x R) + $96 + $350 + $25. Compute dominates. Now change the model: moving the twelve instances to a 1-year Reserved commitment cuts the compute term by roughly the discount shown in the reserved table above, while storage, egress, and the load balancer stay flat. Moving an interruptible subset to Spot cuts their compute term further, at the cost of eviction handling. The non-compute lines do not care which model you pick, which is why they become a larger share of the bill as you optimize the instances.
DevZero's angle#
Most EC2 waste is not a bad rate. It is idle and oversized instances. An Auto Scaling group that provisions for peak and never scales down, or a Kubernetes pod that requests 2 vCPU and uses 0.4, pays full on-demand price for capacity nobody uses. DevZero rightsizes Kubernetes workloads on AWS by matching nodes and pod requests to real usage, so the instance-hours you pay for are hours you actually need. See Kubernetes cost optimization for how that works in practice.
Last updated#
Last updated: 2026-09-12. AWS EC2 on-demand, Spot, and Reserved pricing for Linux in us-east-1, from the DevZero instances dataset.
The EC2 rates on this page are a live snapshot from the same dataset that powers DevZero's /instances pages, so they refresh on every deploy. Non-compute figures (egress per GB, gp3 storage, load balancer rates) cite AWS's published pricing pages as of 2026-09-06 and should be re-checked against your own region. For how EC2 costs roll up when you run Kubernetes on it, see EKS pricing; for the Azure equivalent, AKS pricing; and for a three-cloud view, AWS vs Azure vs GCP pricing.

Alberto Grande
Head of Marketing
