Loading...


Updated 25 Jul 2025 • 8 mins read

AWS pricing is pay-as-you-go, but every service is billed on different dimensions. This guide breaks down how EC2, S3, EBS, RDS, and more are priced, the four ways to pay for compute, the hidden costs that inflate a bill, and the levers that keep AWS spend down.
AWS runs on a simple promise: pay only for what you use, but that simplicity hides real complexity. Every service is metered on different dimensions: EC2 on compute time, S3 on stored gigabytes and requests, EBS on provisioned capacity, RDS on instance hours and storage. Understanding those dimensions is the difference between a predictable bill and a nasty surprise, and it is the first step toward cloud cost optimization.
This guide breaks down how AWS prices its most-used services, EC2, S3, EBS, and RDS, plus the ones that quietly add up, and shows the pricing models and levers that keep spend under control.
Key takeaway AWS pricing is usage-based and per-service. EC2 bills compute by the second with four ways to pay (On-Demand, Reserved Instances, Savings Plans, Spot). S3 bills storage per GB plus requests and egress. EBS bills provisioned capacity whether or not you use it. RDS bills instance hours plus storage. The hidden costs, data transfer, NAT Gateway, snapshots, and idle resources, are where bills balloon, so understanding each dimension is the key to controlling spend.
At its core, AWS is pay-as-you-go: no upfront hardware, no fixed monthly fee, just metered consumption. What varies is the meter. Most services price along a few common dimensions: compute time, storage volume, requests or operations, and data transfer. Region matters too, prices differ by 10 to 30 percent between Regions, as do operating system and tenancy. This variable, usage-based model is exactly why FinOps exists, and why cloud cost forecasting is harder than traditional IT budgeting.
Before the per-service detail, the most important pricing lever on AWS is how you buy compute. The same instance can cost wildly different amounts depending on the purchase model.
| Option | How it works | Typical savings | Best for |
|---|---|---|---|
| On-Demand | Pay per second or hour with no commitment | Baseline | Variable, short-term, or unpredictable workloads |
| Reserved Instances (1 or 3 years) | Commit to a specific instance configuration | Up to 72% | Stable, predictable workloads |
| Savings Plans (1 or 3 years) | Commit to an hourly spend amount with more flexibility | Up to 72% | Steady compute usage that evolves over time |
| Spot | Use spare capacity that can be reclaimed by the provider | Up to 90% | Interruptible, fault-tolerant workloads and batch jobs |
Commitments are the biggest single savings lever on AWS. For how they work and how to manage them without over-committing, see our cloud pricing models explained and discount manager guides.
Amazon EC2 is the foundation of most AWS bills. It provides resizable virtual servers, and you pay for the compute time they run. Linux instances bill by the second (with a 60-second minimum); most others bill by the second or hour depending on the OS.
Four factors drive the price: the instance type and family (general purpose, compute, memory, storage, or accelerated), the Region, the operating system (Linux is cheaper than Windows or RHEL, which carry licensing), and the purchase model above. Graviton (ARM-based) instances are typically 10 to 40 percent cheaper than comparable x86 instances at similar performance, which makes migrating to them one of the highest-leverage moves available.
Two billing nuances catch teams out. A stopped EC2 instance incurs no compute charge, but its attached EBS volume keeps billing. And matching the instance to the actual workload, rightsizing, is where most EC2 savings hide. Helping engineers understand cloud costs at provision time prevents the over-provisioning that inflates compute spend in the first place.
Amazon S3 charges on four dimensions: how much you store (per GB-month, by storage class), how many requests you make (PUT, GET, and others per 1,000), how much data you transfer out, and optional management features. Inbound transfer is free, as is transfer to other AWS services in the same Region; egress to the internet is where transfer charges appear.
The largest lever in S3 is choosing the right storage class for how often data is accessed.
| Storage class | Approx. price / GB-month | Best for |
|---|---|---|
| S3 Standard | ~$0.023 | Frequently accessed data |
| Standard-Infrequent Access | ~$0.0125 | Infrequent access with rapid retrieval |
| Intelligent-Tiering | Auto-tiered pricing | Unknown or changing access patterns |
| Glacier Instant Retrieval | ~$0.004 | Archived data requiring instant access |
| Glacier Flexible Retrieval | ~$0.0036 | Archived data with minutes-to-hours retrieval |
| Glacier Deep Archive | ~$0.00099 | Long-term cold archival storage |
Amazon EBS provides the persistent disk volumes attached to EC2 instances. Its pricing has one crucial catch that surprises almost everyone: you are billed for the provisioned size of a volume, and for some types the provisioned IOPS and throughput, whether or not you actually use them. Unlike S3, which charges for data stored, EBS charges for capacity allocated. That makes unattached volumes and oversized disks pure waste.
Choosing the right volume type is the main cost decision.
| Volume type | What it is | Billing basis |
|---|---|---|
| gp3 (General Purpose SSD) | Modern SSD with decoupled IOPS and throughput | ~$0.08/GB-month plus provisioned IOPS and throughput above the included baseline |
| gp2 (General Purpose SSD) | Older SSD where IOPS scale with volume size | ~$0.10/GB-month |
| io2 / io1 (Provisioned IOPS SSD) | High-performance storage for mission-critical databases | GB-month plus provisioned IOPS |
| st1 (Throughput HDD) | Low-cost HDD for big data, streaming, and throughput-intensive workloads | Lower cost per GB, throughput-oriented pricing |
| sc1 (Cold HDD) | Lowest-cost HDD for infrequently accessed data | Cheapest cost per GB |
Amazon RDS runs managed relational databases, and its bill has several components: DB instance hours (priced by instance class and database engine), storage (per GB-month), provisioned IOPS where applicable, backup storage beyond the free allocation, and data transfer. Licensed engines such as Oracle and SQL Server cost more than open-source engines like MySQL, PostgreSQL, and MariaDB, and running Multi-AZ for high availability roughly doubles the instance cost because it runs a standby replica.
As with EC2, RDS offers Reserved Instances (1 or 3 years, up to roughly 69 percent off) for steady database workloads, and Aurora Serverless v2 bills by capacity unit for spiky ones. The common RDS overspends are idle instances left running, over-provisioned storage that never shrinks, and Multi-AZ enabled on non-production databases that do not need it. These are exactly the patterns a dedicated FinOps platform surfaces automatically.
Plenty of smaller line items add up. Three deserve special attention:
Understanding the pricing is step one; acting on it is step two. The practical playbook:
For the native tooling and the operating practice around it, see our guides to AWS Compute Optimizer, the AWS Cost Optimization Hub, and AWS cost optimization with FinOps. A fuller strategy list lives in our cloud cost optimization strategies guide.
Knowing how each service is priced is the foundation of cloud financial management, but the real value comes from tying that spend to business outcomes. That means attributing cost to teams and products, tracking unit economics like cost per customer, and comparing options across providers, as in our AWS vs Azure pricing and AWS vs Azure vs GCP comparisons. For the complete picture, our cloud cost management guide and FinOps guide put AWS pricing in the wider context of visibility, allocation, and governance. And as AI workloads grow, the same discipline extends to GPUs and tokens, covered in FinOps for AI.
AWS pricing is not one model but many, each service metered on its own dimensions. EC2 charges for compute time, with four purchase options that swing the price by up to 90 percent. S3 charges for storage class, requests, and egress. EBS charges for provisioned capacity whether used or not. RDS charges for instance hours and storage. And the hidden costs, data transfer, NAT Gateway, idle resources, are where bills quietly balloon. Understand the dimensions, buy compute the right way, clean up waste, and attribute every dollar, and AWS becomes a predictable, optimizable line item rather than a monthly surprise. If you want help turning that understanding into governed, optimized spend, that is exactly the discipline Opslyft brings.
AWS is pay-as-you-go: you pay only for what you use, metered per service. Common dimensions are compute time, storage volume, requests, and data transfer, and prices vary by Region, operating system, and purchase model. There is no upfront hardware cost or fixed monthly fee.
EC2 charges for compute time, billed by the second for Linux (60-second minimum). Price depends on instance type, Region, operating system, and purchase model: On-Demand, Reserved Instances (up to 72% off), Savings Plans (up to 72%), or Spot (up to 90% off).
S3 charges for storage per GB-month by storage class, for requests per 1,000, and for data transferred out to the internet. Inbound transfer is free. Choosing the right storage class, from Standard down to Glacier Deep Archive, is the biggest S3 cost lever.
EBS bills for the provisioned size of a volume regardless of whether it is used or attached, so a stopped EC2 instance still incurs charges for its attached EBS volume. Unattached volumes and old snapshots are common sources of waste.