How Does an EC2 Instance Savings Plan Apply Discounts?
An EC2 Instance Savings Plan reduces Amazon EC2 costs by exchanging a fixed hourly monetary commitment for discounted compute rates over a one-year or three-year term. The plan scopes its discount to a chosen instance family and AWS Region while automatically covering eligible usage across different instance sizes, operating systems, and tenancies within those boundaries. Each hour, AWS evaluates eligible compute usage and applies the commitment to the configurations that yield the highest percentage savings first, billing any usage beyond the hourly commitment at standard On-Demand rates.
Scope and Flexibility Within an Instance Family and Region
When purchasing an EC2 Instance Savings Plan, you commit to a specific dollar amount of compute usage per hour (for example, \(\$10.00\) per hour) and lock in two attributes:
- Instance Family: A specific series of instances,
such as
m5,c6i, orr6g. - AWS Region: A specific geographic region, such as
us-east-1oreu-west-1.
Unlike Standard Reserved Instances, an EC2 Instance Savings Plan does not lock you into a single instance size, operating system, or tenancy. As long as the running instances belong to the selected instance family and run in the designated region, the discount automatically shifts across:
- Instance Sizes: Moving between
m5.large,m5.xlarge,m5.4xlarge, or bare metal equivalents without manual modification. - Operating Systems: Switching between Linux, Windows, Red Hat Enterprise Linux (RHEL), or SUSE Linux Enterprise Server (SLES).
- Tenancy: Transitioning between Shared (default), Dedicated Instance, and Dedicated Host tenancies.
- Availability Zones: Deploying workloads across any Availability Zone within the selected region.
Hourly Evaluation and Discount Prioritization
Savings Plans are evaluated on an hourly basis without rollover. If your hourly commitment is \(C\) dollars and your discounted eligible usage in a given hour is less than \(C\), the unused portion of the commitment expires at the end of that hour.
During each billing hour, the AWS billing engine aggregates all eligible On-Demand EC2 usage matching the plan's instance family and region. If multiple instances are running simultaneously with varying operating systems or tenancies, AWS calculates the effective Savings Plan discount percentage for each combination:
\[\text{Discount Percentage} = \left( \frac{R_{\text{OD}} - R_{\text{SP}}}{R_{\text{OD}}} \right) \times 100\%\]
where \(R_{\text{OD}}\) is the hourly On-Demand rate and \(R_{\text{SP}}\) is the hourly Savings Plan rate for that specific instance configuration.
The billing engine sorts the eligible usage and applies your hourly commitment \(C\) starting with the usage that offers the highest discount percentage down to the lowest. Once the hourly commitment \(C\) is fully exhausted, any remaining usage in that hour is billed at standard On-Demand rates.
Calculating Usage Coverage and Overage
Because commitment is measured in dollars per hour of Savings Plan rates rather than normalized instance units, the amount of commitment consumed by an instance depends directly on its specific Savings Plan rate.
For an instance configuration \(i\) running for \(t_i\) hours inside a single one-hour billing window (where \(0 < t_i \le 1\)), the commitment consumed \(U_i\) is:
\[U_i = t_i \times R_{\text{SP}, i}\]
If the total eligible usage at Savings Plan rates across \(n\) instances is less than or equal to the commitment \(C\):
\[\sum_{i=1}^{n} U_i \le C\]
then \(100\%\) of the eligible usage is covered by the Savings Plan, and your total cost for that usage is simply the fixed commitment \(C\).
If your usage exceeds the commitment \(C\) for a given instance configuration after prior configurations have consumed \(C_{\text{used}}\) of the commitment, the remaining available commitment is \(C_{\text{rem}} = C - C_{\text{used}}\). The fraction of that instance's usage covered by the Savings Plan is:
\[f_{\text{covered}} = \frac{C_{\text{rem}}}{R_{\text{SP}, i}}\]
The uncovered fraction is billed at the On-Demand rate \(R_{\text{OD}, i}\), resulting in an additional On-Demand charge \(O_i\) for that hour:
\[O_i = \left( t_i - f_{\text{covered}} \right) \times R_{\text{OD}, i}\]
Practical Calculation Example
Suppose you have an EC2 Instance Savings Plan for the
c6i family in us-east-1 with an hourly
commitment of \(C = \$1.00\). During a
specific hour, you run two instances:
- Instance A (
c6i.4xlargeLinux, Shared tenancy): Suppose \(R_{\text{OD}, A} = \$0.68\) and \(R_{\text{SP}, A} = \$0.43\) (a \(36.76\%\) discount). - Instance B (
c6i.4xlargeWindows, Shared tenancy): Suppose \(R_{\text{OD}, B} = \$1.416\) and \(R_{\text{SP}, B} = \$1.166\) (a \(17.66\%\) discount).
The billing engine applies the \(\$1.00\) commitment in the following sequence:
- Highest Discount First: Instance A has the higher discount percentage (\(36.76\%\) vs. \(17.66\%\)), so it is covered first. Covering \(100\%\) of Instance A consumes \(\$0.43\) of the commitment.
- Remaining Commitment: The remaining commitment for the hour is \(\$1.00 - \$0.43 = \$0.57\).
- Partial Coverage of Next Instance: The remaining \(\$0.57\) is applied to Instance B. The fraction of Instance B covered by the plan is: \[f_{\text{covered}} = \frac{\$0.57}{\$1.166} \approx 0.48885\]
- On-Demand Overage: The uncovered portion of Instance B (\(1 - 0.48885 = 0.51115\) hours) is billed at the Windows On-Demand rate: \[O_B = 0.51115 \times \$1.416 \approx \$0.7238\]
For that hour, your total outlay is the \(\$1.00\) Savings Plan commitment plus \(\$0.7238\) in On-Demand charges, totaling \(\$1.7238\) instead of the combined On-Demand cost of \(\$2.096\).
Interaction With Other AWS Pricing Models
When an account holds multiple discount instruments, AWS applies them in a strict hierarchy each hour before falling back to On-Demand pricing:
- Zonal Reserved Instances: Applied first to exact matching usage in specific Availability Zones.
- Standard and Convertible Regional Reserved Instances: Applied next to matching instance families within the region.
- EC2 Instance Savings Plans: Applied to remaining uncovered usage within the committed instance family and region, ahead of Compute Savings Plans because EC2 Instance Savings Plans have a narrower scope and offer higher discount rates.
- Compute Savings Plans: Applied to any remaining eligible compute usage across families, regions, AWS Fargate, or AWS Lambda.
- On-Demand Rates: Applied to all remaining uncovered usage.