DEV Community

Cover image for AWS EC2 Pricing Explained: On-Demand, Savings Plans, Reserved and Spot
epifive
epifive

Posted on Originally published at epifive.com

AWS EC2 Pricing Explained: On-Demand, Savings Plans, Reserved and Spot

EC2 offers four main ways to pay for compute: On-Demand (pay as you go), Savings Plans and Reserved Instances (a 1- or 3-year commitment for lower prices), and Spot (spare capacity at a steep discount that can be interrupted). AWS lists up to 72% off for Savings Plans, up to 90% off for Spot, and no commitment for On-Demand. The right mix is usually On-Demand for the unpredictable, a commitment for the steady baseline, and Spot for flexible batch work.

This guide is for engineers, IT managers and small business owners who run workloads on EC2 and want to cut the bill without breaking anything. By the end you will know how each option works, what AWS says about its discount and flexibility, how to estimate cost in USD, and how to choose. Facts below come from AWS pricing and documentation pages checked on 31 October 2026. AWS does not publish a single price for all instances, so this article does not quote instance hourly rates; look up your instance type and Region in the Pricing Calculator.

For related cost tooling, see AWS Budgets and billing alerts setup. If you are comparing clouds, Azure VM reserved instances vs savings plan covers the Azure equivalents.

Who this is for and what you will have at the end

You already run, or plan to run, at least one EC2 instance. After this guide you will have a decision table, a worked estimate using a stated assumption, and a procedure to check coverage before and after committing.

Prerequisites

  • Access to the AWS Billing and Cost Management console.
  • A rough list of your instances: type, Region, operating system and how many hours a month each runs.
  • Cost Explorer enabled, so you can see historical usage and recommendations.

The four ways to pay

Option Commitment AWS-stated discount vs On-Demand Interruptible
On-Demand None Baseline No
Savings Plans 1 or 3 years, in $/hour Up to 72% No
Reserved Instances 1 or 3 years Up to 72% (Standard), up to 66% (Convertible) No
Spot None Up to 90% Yes

The EC2 pricing page also lists Dedicated Hosts (a physical server fully dedicated to you, priced On-Demand or through Savings Plans), On-Demand Capacity Reservations (reserve capacity in a specific Availability Zone) and Capacity Blocks for ML (reserve GPU instances in advance). These are specialist options, so most small workloads can ignore them.

Billing granularity

AWS states that usage is billed in one-second increments with a 60-second minimum, across all purchase options. A short-lived instance therefore costs close to what it runs, and stopping instances you do not need saves money. AWS says the same per-second billing applies to provisioned EBS storage, so storage is a separate line on the bill; check the EBS pricing page for how it is charged when an instance is stopped.

On-Demand

On-Demand Instances are pay-as-you-go by the hour or second, with no upfront payment or long-term commitment. Use them for:

  • New workloads whose usage you cannot predict yet.
  • Short-lived or spiky workloads.
  • Development and testing.

On-Demand is also the reference price for every discount percentage AWS quotes.

Savings Plans

A Savings Plan gives lower prices in exchange for committing to a consistent amount of usage, measured in dollars per hour, for 1 or 3 years. A year is 365 days and three years is 1,095 days in AWS's definition. Usage up to your commitment is billed at the Savings Plans rate, and usage beyond it at On-Demand rates.

There are two EC2-relevant types.

Type AWS-stated saving Applies to
Compute Savings Plans Up to 66% EC2 regardless of instance family, size, Availability Zone, Region, OS or tenancy, plus AWS Fargate and AWS Lambda
EC2 Instance Savings Plans Up to 72% One instance family in a specific Region (for example M5 in N. Virginia), regardless of Availability Zone, size, OS or tenancy

AWS also offers SageMaker AI Savings Plans for SageMaker usage. You can pay All upfront, Partial upfront or No upfront. The price you pay stays the same through the plan term.

Choose Compute Savings Plans when you might change instance families, move Regions or adopt Fargate or Lambda. Choose EC2 Instance Savings Plans when you are confident about the family and Region and want the highest discount.

You can use AWS Cost Explorer to view your recommended commitment, refresh recommendations, purchase plans and manage them. AWS says these recommendations help you know the optimal commitment level.

Reserved Instances

Reserved Instances (RIs) also commit you for 1 or 3 years. AWS lists two types:

  • Standard RIs offer up to 72% off. You can change the Availability Zone, the instance size (Linux) and the networking type.
  • Convertible RIs offer up to 66% off. You can exchange them for other Convertible RIs of equal or greater value, and change instance family, OS, tenancy and payment option.

AWS gives average discounts of 40% for Standard 1-year, 60% for Standard 3-year, 31% for Convertible 1-year and 54% for Convertible 3-year. You pay All Upfront, Partial Upfront or No Upfront, and with the last two the remainder is billed monthly.

An RI's scope matters. A zonal RI, tied to an Availability Zone, also reserves capacity in that zone. A regional RI has no capacity reservation, but the discount applies across Availability Zones and instance sizes in the Region. The discount applies when instance type, platform, tenancy and, if zonal, Availability Zone match.

Standard RIs can be sold on the Reserved Instance Marketplace, according to its requirements.

Savings Plans or Reserved Instances?

AWS's documentation has a section comparing Compute Savings Plans and Reserved Instances. In general, Savings Plans commit to a dollar amount and are more flexible, while RIs commit to instance attributes and are the option that can reserve capacity in a zone. Check the current comparison page before buying either, as offerings change.

Spot Instances

Spot Instances use spare EC2 capacity at a discount of up to 90% compared to On-Demand prices. You pay the Spot price in effect while your instance runs. AWS says Spot prices adjust gradually based on long-term trends in supply and demand.

The trade-off is interruption. AWS can reclaim capacity, mainly to repurpose it, though other reasons such as host maintenance or hardware decommission also occur. Depending on the interruption behavior you chose, the instance is terminated, stopped or hibernated. AWS issues an interruption notice two minutes before it stops or terminates the instance, on a best-effort basis. Hibernation gets a notice but not the two-minute warning because it begins immediately.

You can read the notice from the instance metadata using IMDSv2. AWS recommends checking every 5 seconds.

TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" \
  -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
curl -s -H "X-aws-ec2-metadata-token: $TOKEN" \
  http://169.254.169.254/latest/meta-data/spot/instance-action
Enter fullscreen mode Exit fullscreen mode

If no interruption is planned, the call returns HTTP 404. If one is, you get JSON with the action (for example stop or terminate) and an approximate UTC time. The EventBridge event can also report hibernate. The notice is also published as an EventBridge event named "EC2 Spot Instance Interruption Warning".

Good Spot candidates are stateless web workers behind a load balancer, batch processing, CI jobs, and anything that can checkpoint its work. Poor candidates are single databases and anything that cannot tolerate sudden loss.

AWS notes that if you specify a maximum price, your instances will be interrupted more frequently than if you do not.

How to choose

Workload pattern Typical choice
New, unpredictable, or under a few weeks On-Demand
Steady, always-on baseline Savings Plan or Reserved Instances
Steady but may change family, Region or move to containers or Lambda Compute Savings Plan
Fault-tolerant, flexible batch or worker fleets Spot
Needs guaranteed capacity in one zone On-Demand Capacity Reservation or zonal RI

A common structure is to cover your minimum steady usage with a commitment, run the variable part On-Demand, and push interruptible work to Spot.

Step-by-step: estimate and decide

  1. Inventory usage. For each instance record the Region, OS, instance type and hours per month. In Cost Explorer, look at the last several months of EC2 spend.
  2. Estimate On-Demand in the Pricing Calculator. The AWS Pricing Calculator is free and estimates costs for new workloads or changes to existing ones, including discounts and commitments. Add EC2, enter your values and note the monthly total.
  3. Find your steady floor. Identify the lowest hourly spend you reliably keep, not the average or peak.
  4. Check recommendations. In Cost Explorer open the Savings Plans recommendations and compare the suggested commitment to your floor.
  5. Start smaller than recommended if unsure. Because a commitment is a dollars-per-hour obligation, committing too high means paying for unused hours.
  6. Review monthly. Check Savings Plans utilization and coverage reports and add more commitment as the baseline grows.

Worked example with an assumed rate

The rate here is an assumption for arithmetic only, not an AWS price. Suppose an instance costs $0.10 per hour On-Demand and runs 24 hours a day for a 30-day month.

On-Demand: 0.10 x 24 x 30 = $72.00 per month
Enter fullscreen mode Exit fullscreen mode

If a commitment saved 40% on that instance, the monthly cost would be $43.20, a saving of $28.80. If the same instance ran only 8 hours a day, On-Demand would be $24.00, and a commitment sized for 24-hour use would charge for hours you do not use. That is why you commit to the floor, not the peak. Substitute real prices from the Pricing Calculator for your Region and instance.

Troubleshooting

Your bill is higher than the estimate

Check for items outside EC2 instance hours: EBS volumes, snapshots, Elastic IPs, load balancers and data transfer. Data transfer is billed separately from instance hours.

A Savings Plan shows low utilization

Your usage fell below the commitment. Look for stopped or downsized instances, or workloads that moved to a service the plan does not cover. An EC2 Instance Savings Plan is tied to one family in a Region, so a family or Region change leaves it unused. A Compute plan avoids this.

A Reserved Instance does not seem to apply

The discount applies when instance type, platform, tenancy and, if zonal, Availability Zone match. Compare the RI attributes with the running instances.

Spot instances keep being interrupted

Capacity varies by instance type and Availability Zone. Diversify across instance types and zones, avoid setting a low maximum price, and make the workload checkpoint its state.

The 404 from the Spot metadata call

That is normal when no interruption is scheduled.

Checklist

  • Know your steady hourly floor before committing.
  • Estimate in the free AWS Pricing Calculator for your Region and OS.
  • Prefer Compute Savings Plans if you expect change, EC2 Instance Savings Plans for the highest discount on a fixed family.
  • Use Spot only for work that tolerates a two-minute notice.
  • Watch EBS, data transfer and idle resources, not only instance hours.
  • Review utilization and coverage monthly.

References


This guide was researched and drafted with AI assistance and checked against the vendor documentation listed in its References. Read the maintained version and related guides on EpiFive.

Top comments (0)