Are EC2 Savings Plans More Flexible Than Reserved Instances?
Amazon EC2 Savings Plans offer significant flexibility advantages over legacy Reserved Instances by decoupling commitment discounts from rigid hardware configurations. Instead of locking into specific instance types, operating systems, or availability zones, organizations commit to a consistent hourly spend measured in US dollars for a one-year or three-year term. Compute Savings Plans automatically apply discounts across any EC2 instance family, size, operating system, tenancy, and AWS Region, while also covering AWS Fargate and AWS Lambda usage. Even the more restricted EC2 Instance Savings Plans eliminate manual modification overhead by automatically adjusting discounts across instance sizes, operating systems, and tenancies within a chosen family and region.
Commitment Models: Spend vs. Capacity Attributes
The primary structural difference between Reserved Instances (RIs) and Savings Plans lies in how the commitment is defined and tracked. Legacy Reserved Instances require you to commit to specific instance attributes:
- Instance Family and Size: Such as
m5.xlargeorc6i.2xlarge. - Platform (Operating System): Such as Linux/UNIX, Red Hat Enterprise Linux, or Windows Server.
- Tenancy: Default (Shared) or Dedicated.
- Scope: Regional or Zonal (tied to a specific Availability Zone).
In contrast, Savings Plans replace hardware-attribute commitments with a monetary commitment. You agree to spend a fixed hourly amount, denoted as \(C_{\text{hourly}}\), for the duration of the term (either \(8,760\text{ hours}\) for one year or \(26,280\text{ hours}\) for three years). During every billing hour, AWS evaluates your eligible usage and applies the discounted Savings Plan rates up to \(C_{\text{hourly}}\) in descending order of the discount percentage.
If your hourly discounted usage is \(U_{\text{discounted}}\) and the equivalent On-Demand spend is \(U_{\text{OD}}\), the effective hourly cost \(E_{\text{cost}}\) before excess On-Demand charges is governed by:
\[E_{\text{cost}} = \max(C_{\text{hourly}}, U_{\text{discounted}})\]
Any usage exceeding your hourly commitment (\(U_{\text{discounted}} > C_{\text{hourly}}\)) is billed at standard On-Demand rates.
Two Tiers of Savings Plans vs. Standard and Convertible RIs
AWS offers two distinct types of Savings Plans that parallel the pricing tiers of Standard and Convertible Reserved Instances while providing substantially greater operational freedom.
| Feature | Standard RI | Convertible RI | EC2 Instance Savings Plans | Compute Savings Plans |
|---|---|---|---|---|
| Max Discount (vs. On-Demand) | Up to \(72\%\) | Up to \(66\%\) | Up to \(72\%\) | Up to \(66\%\) |
| Instance Family Mobility | No | Manual exchange only | No (locked to one family) | Automatic across all families |
| Instance Size Flexibility | Linux/Default tenancy only | Manual exchange (if non-Linux) | Automatic across all sizes | Automatic across all sizes |
| OS / Platform Mobility | No | Manual exchange only | Automatic across all OS types | Automatic across all OS types |
| Tenancy Mobility | No | Manual exchange only | Automatic (Shared to Dedicated) | Automatic (Shared to Dedicated) |
| Regional Mobility | No | No | No (locked to one Region) | Automatic across all Regions |
| Serverless & Container Coverage | None | None | None | Automatic for Fargate & Lambda |
Automatic Application vs. Manual Exchanges
With Convertible Reserved Instances, changing your instance family, operating system, or tenancy requires a manual exchange process via the AWS Management Console or API. Furthermore, Convertible RI exchanges are subject to strict financial constraints: the total value of the new Reserved Instances must be equal to or greater than the remaining value of the exchanged RIs, which can gradually force upward commitment creep when migrating to differently priced instance families.
Compute Savings Plans eliminate manual exchanges entirely. If an
engineering team migrates a workload from c5.2xlarge in
us-east-1 to Graviton-based c7g.xlarge in
eu-west-1, the Compute Savings Plan automatically shifts
the billing discount to the new instances in the next hourly billing
cycle without any administrative action.
Operating System and Tenancy Freedom
A major limitation of Standard Reserved Instances is how instance
size flexibility is enforced through normalization factors. Each
instance size within a family is assigned a normalization factor \(N_{\text{size}}\) (for example,
nano \(= 0.25\),
large \(= 4\),
xlarge \(= 8\),
2xlarge \(= 16\)). Under a
Regional Standard RI, a commitment to one c5.2xlarge (\(N_{\text{size}} = 16\)) can cover two
c5.xlarge instances (\(2 \times 8
= 16\)) or four c5.large instances (\(4 \times 4 = 16\)), only
if the instances run on Linux/UNIX with shared tenancy and
contain no licensed software (such as SQL Server).
If you run Windows Server, RHEL, or SUSE Linux on Standard RIs,
instance size flexibility is disabled completely. Scaling a Windows
workload from m5.xlarge to m5.2xlarge causes
the existing Standard RI to go unutilized while the new instance incurs
full On-Demand charges.
Both EC2 Instance Savings Plans and Compute Savings Plans remove this barrier:
- Full OS Portability: Discounts apply automatically even if you switch an instance from Linux to Windows Server or RHEL.
- Size Flexibility on All Platforms: Scaling a Windows or RHEL instance up or down within the same family remains covered by both EC2 Instance Savings Plans and Compute Savings Plans without manual intervention.
- Tenancy Transitions: Workloads moving between default (shared) tenancy and dedicated instances or dedicated hosts remain automatically covered up to the hourly dollar commitment.
Multi-Service Modernization: EC2, Fargate, and Lambda
Legacy Reserved Instances are strictly bound to Amazon EC2 virtual machines. When organizations modernize architectures by moving workloads from EC2 instances into serverless containers (AWS Fargate) or event-driven functions (AWS Lambda), existing EC2 Reserved Instances become stranded financial commitments until their one-year or three-year terms expire.
Compute Savings Plans bridge this architectural transition by pooling compute usage across three services:
- Amazon EC2: Any instance family, size, OS, tenancy, or region.
- AWS Fargate: Coverage for both Amazon ECS and Amazon EKS tasks running on Fargate (applied to vCPU and memory consumption).
- AWS Lambda: Coverage for function duration and provisioned concurrency charges.
If your total hourly commitment is \(C_{\text{hourly}}\), the billing engine satisfies that commitment across services dynamically:
\[U_{\text{total}} = U_{\text{EC2}} + U_{\text{Fargate}} + U_{\text{Lambda}}\]
As EC2 instances are decommissioned and replaced by Fargate containers or Lambda functions, the same Compute Savings Plan continues to amortize and discount the new serverless compute resources seamlessly.
Capacity Reservations Decoupled from Billing
One scenario where Zonal Reserved Instances historically combined two features was providing both a billing discount and an Availability Zone capacity reservation. Savings Plans decouple financial discounts from physical capacity guarantees.
If you require guaranteed capacity in a specific Availability Zone while using Savings Plans, you can create On-Demand Capacity Reservations (ODCRs). ODCRs can be provisioned and canceled at any time without a one-year or three-year term lock-in, and any active Savings Plan automatically applies its discounted rate to the ODCR just as it would to a running instance. This separation allows infrastructure teams to adjust zonal capacity reservations dynamically without altering long-term financial commitments.