Skip to content
AWS aws cost 5 min read

Savings Plans & Reserved Instances

By default you pay AWS the full “On-Demand” rate (the pay-as-you-go price) for every hour your compute runs. But if you know you’ll keep running a certain amount of compute for a year or more, you can promise that to AWS in advance and get a big discount in return — often 30% to 72% off. The two main programs for this are Savings Plans and Reserved Instances (RIs). This page explains how each works, which one to pick, and how to avoid the classic mistake of over-committing.

Why commitment discounts exist

AWS makes more money when its servers run steadily rather than sitting idle. So it offers you a deal: commit to spending a certain amount over 1 or 3 years, and AWS gives you a lower hourly rate. The catch is that the commitment is use it or lose it — if you commit to more than you actually use, the unused part is wasted money. So the whole game is committing to your steady baseline usage, never your peaks.

Tip: A commitment discount is purely a billing arrangement. It does not reserve hardware or change how your servers behave. Your instances run exactly the same — you just get charged less for them.

Savings Plans vs Reserved Instances

A Savings Plan is a commitment to spend a fixed amount of money per hour on compute (for example, “$10/hour for 1 year”). As long as you use that much compute, you pay the discounted rate; usage above the commitment is billed at normal On-Demand prices.

A Reserved Instance is a commitment to a specific instance configuration — for example, a m5.large EC2 instance running Linux in the us-east-1 Region. The discount only applies to instances that match those attributes.

There are also flavours of each:

OptionWhat you commit toFlexibilityTypical max discount
Compute Savings Plan$/hour of any computeEC2 (any family/size/Region/OS), Fargate, Lambda~66%
EC2 Instance Savings Plan$/hour within one instance family + RegionChange size/OS in that family/Region~72%
Standard Reserved InstanceExact instance type, Region, OSAlmost none (size flex within a family for Linux)~72%
Convertible Reserved InstanceInstance type, Region, OSCan exchange for a different config~66%

EC2 is AWS’s virtual server service (Elastic Compute Cloud). Fargate is the serverless way to run containers, and Lambda runs your code as functions without managing servers — Compute Savings Plans cover all three.

When to use which

  • Compute Savings Plan — the default choice for most teams. It auto-applies across changing usage, so when you swap a t3.medium for a c6i.large, move Regions, or shift work to Fargate, the discount follows you. You don’t have to manage anything.
  • EC2 Instance Savings Plan — choose this only if you’re confident you’ll stay in one instance family and Region, and you want a slightly deeper discount than the Compute plan.
  • Reserved Instances — mostly legacy for EC2 now. Still relevant for services that don’t support Savings Plans, such as RDS (managed databases), ElastiCache, Redshift, and OpenSearch.

Gotcha: For EC2, Compute Savings Plans usually beat classic Reserved Instances in practice. RIs lock you to specific attributes, so the moment your fleet changes, the RI stops applying and you’ve wasted the commitment. Savings Plans float across your usage automatically.

Term length and payment options

Every commitment has two dials: how long, and how much you pay upfront.

Term is 1 year or 3 years. Three years gives a deeper discount but is a big bet — only commit for 3 years on workloads you’re sure will still exist in 2029.

Payment comes in three flavours:

Payment optionYou payDiscount
All upfrontEntire amount at purchaseHighest
Partial upfrontHalf now, rest monthlyMiddle
No upfrontMonthly over the termLowest

A 1-year, no-upfront Compute Savings Plan is the gentlest starting point: meaningful savings, low risk, no large bill.

How to analyze before committing

Never guess your baseline. AWS Cost Explorer studies your last 7, 30, or 60 days of usage and recommends exactly how much to commit.

Console steps

  1. Open the AWS Management Console and go to Cost Management > Savings Plans.
  2. Click Purchase Savings Plans, then Recommendations (or open Cost Explorer > Recommendations > Savings Plans).
  3. Set the Savings Plan type (Compute), term (1 year), payment option (No upfront), and a lookback period (30 days is a good default).
  4. Review the recommended hourly commitment and the estimated monthly savings.
  5. Add the recommendation to the cart and Submit order when ready.

AWS CLI

Use the Cost Explorer API to pull the same recommendation:

aws ce get-savings-plans-purchase-recommendation \
  --savings-plans-type COMPUTE_SP \
  --term-in-years ONE_YEAR \
  --payment-option NO_UPFRONT \
  --lookback-period-in-days THIRTY_DAYS

Output:

{
  "SavingsPlansPurchaseRecommendation": {
    "SavingsPlansType": "COMPUTE_SP",
    "TermInYears": "ONE_YEAR",
    "PaymentOption": "NO_UPFRONT",
    "SavingsPlansPurchaseRecommendationSummary": {
      "EstimatedMonthlySavingsAmount": "1284.50",
      "EstimatedSavingsPercentage": "27.4",
      "HourlyCommitmentToPurchase": "4.83",
      "EstimatedROI": "37.8",
      "CurrencyCode": "USD"
    }
  }
}

The key number is HourlyCommitmentToPurchase — this is your safe baseline. Commit to that amount (or slightly under it to be conservative), then let On-Demand cover the rest.

Once you’ve decided, purchase a Savings Plan from the CLI:

aws savingsplans create-savings-plan \
  --savings-plan-offering-id "abc12345-6789-0abc-def0-1234567890ab" \
  --commitment "4.83"

Output:

{
  "savingsPlanId": "sp-0a1b2c3d4e5f67890"
}

Warning: A Savings Plan cannot be cancelled or refunded once purchased. A 3-year all-upfront plan is a real, irreversible financial commitment — start small, watch the utilization reports, then layer on more.

Cost example

Suppose you run roughly $5,000/month of steady EC2 and Fargate compute. A 1-year, no-upfront Compute Savings Plan at 27% off saves about **$1,350/month ($16,000/year)** for zero engineering effort — you keep running the same workloads. Commit only to the steady portion; if you also have spiky batch jobs that come and go, leave those on On-Demand or Spot.

Best Practices

  • Run Cost Explorer recommendations before every purchase — never eyeball your baseline.
  • Prefer Compute Savings Plans for EC2/Fargate/Lambda because they auto-apply as your usage changes.
  • Commit to your steady baseline only, never your peak — unused commitment is wasted money.
  • Start with 1-year, no-upfront to limit risk, then add 3-year plans once usage is proven stable.
  • Use Reserved Instances for services Savings Plans don’t cover, like RDS, Redshift, and ElastiCache.
  • Check the Savings Plans utilization and coverage reports monthly so you catch under-use early.
  • Stack purchases over time (laddering) so commitments expire at different dates and you avoid a single risky renewal.
Last updated June 15, 2026
Was this helpful?