AWS Reserved Instances28 Jun 2022
Grasping all the rules and limitations of Instance Reservations is quite challenging. This article is designed to summarise key concepts and provide hints on further investigation.
Reserving AWS Instances is a purchasing option for Amazon EC2 instances. It is a way to reduce cloud spend for applications with steady or predictable utilization. By committing to a certain amount of usage, one can receive a significant reduction in the usage rate. Reserved Instances are not physical instances, but rather a billing discount applied to the use of On-Demand Instances.
Instance Reservations cannot be canceled. It is possible to modify certain parameters of Standard reservations for EC2, exchange Convertible EC2 reservations, or sell Standard EC2 reservations - see AWS EC2 Reserved Instances section for more details.
An alternative (and easier to manage) way to receive compute usage discounts is AWS Savings Plans. This option will be discussed in a separate article.
Amazon offers Reserved Instances for EC2 and several other services. These reservations cannot be used across services and slightly differ in usage.
Services that offer AWS RI
- RDS / Aurora
The matrix below shows reservation variables, which are necessary to take into account when purchasing an AWS Reserved Instance.
Some AWS RI parameters are similar in all reservations:
An instance or node type is a combination of the instance family (like
c5) and instance size (like
large). Some services like EC2 or RDS are size-flexible, but it is important to remember that not all support size flexibility
- Region An AWS Reserved Instance is tied to a specific region and it cannot be changed even for Convertible Reserved Instances.
- Term Commitment (One-year / Three-year) AWS Reserved Instances require a commitment of either one or three years. This commitment determines the length of the reservation and the size of the discount received. Generally speaking, longer commitment offers bigger discounts.
- Payment Options (All Upfront / Partial Upfront / No Upfront) AWS Reserved Instances can be paid for in three ways. The payment option chosen affects the amount of discount received. Bigger upfront payment yields bigger discounts. No Upfront payment option bills a discounted hourly rate for every hour of the term even if no instances are running.
Size Flexibility allows utilizing AWS Instance Reservations for instances of the same family and in the same region, but of different size.
No extra configuration is required to use size flexibility. Such AWS RIs also apply to instances running across multiple accounts if Consolidated Billing and RI Sharing are enabled. Instance reservations apply to any AZ in the region.
The following AWS Services offer Size-Flexible reservations:
- Only for Linux/UNIX with shared tenancy
- G4ad, G4dn, G5, G5g, and Inf1 instances are not supported
- RHEL and SUSE Linux Enterprise Server are not supported
- Zonal RIs are not supported
- RDS / Aurora (Only for MariaDB, MySQL, Oracle BYOL, PostgreSQL)
The RIs size is calculated according to a normalization factor based on the instance size:
|Instance Size||Standard Normalization Factor||Normalization Factor (Multi-AZ one standby)||Normalization Factor (Multi-AZ two standbys)||Normalization Factor (Aurora I/O Optimized)||Normalization Factor (Aurora Standard 3 DB)||Normalization Factor (Aurora I/O Optimized 3 DB)|
t3.large ec2 instance has a normalization factor of 4. It is possible to use it to cover 4
t3.small instances (which have a normalization factor of 1). Using this reservation to cover 50% of one t3.xlarge instance is also possible.
Bare Metal instances also support size flexibility. The normalization table for these instances can be found here: Normalization factor for bare metal instances
AWS RI Sharing allows for the sharing of Reserved Instances (RIs) across multiple accounts within an AWS Organization. Shared RI discounts can be automatically applied to running instances across all accounts, where Consolidated Billing is configured. RI Sharing is enabled by default - but can be switched off if required.
Some examples of Consolidated Billing and RI Sharing can be found in AWS Documentation.
AWS Capacity Reservation is a feature that allows reserving capacity for EC2 instances in a specific Availability Zone. Capacity Reservation ensures that the required instance types will be available in the AZ, providing greater predictability and control over instance placement. This feature is particularly useful when access to specific instance types is required.
Capacity Reservations do not have a term commitment, they can be created and canceled as needed. They do not provide billing discounts.
Zonal Reserved Instances automatically grant Capacity Reservations. Regional RI and Savings Plans do not.
There are some platform limitations for Capacity Reservations, see On-Demand Capacity Reservations documentation for more info.
This section summarises key differences per AWS Service
AWS EC2 Reserved Instances
EC2 Reserved Instances provide up to 72% discount from the on-demand price. EC2 Reserved instances have some additional variables that must be considered when purchased.
- Tenancy Defines if the instance runs on shared or single-tenant (dedicated) hardware.
- Platform Operating system, such as Linux/Unix or Windows.
- Offering Class A Reserved Instance’s offering class can be either Standard or Convertible. Standard Reserved Instances offer a bigger discount and they can be traded in the Reserved Instance Marketplace. Convertible Reserved Instance can be exchanged for another instance family, type, platform, scope, and tenancy.
- Scope An EC2 AWS Reserved Instance can either be purchased as a Regional or Zonal RI. The scope does not affect the price. A zonal RI discount only applies to the selected Availability Zone. A regional Reserved Instance does not reserve capacity, while a zonal does. A zonal Reserved Instance does not support Size Flexibility. Another key differentiator is that regional RI support queueing purchases for a time future.
Standard Reserved Instances can also be traded on a Reserved Instance Marketplace. This allows us to have some more flexibility when it comes to reservations by reclaiming the money for unused RI. This requires registering as a seller by providing additional bank and tax information to AWS.
ElastiCache Reserved Nodes
ElastiCache reservations are not size-flexible. They are also tied to the selected engine (Redis or Memcached), and this selection cannot be modified after the purchase.
MemoryDB Reserved Nodes
MemoryDB Reserved Nodes are size flexible and offer up to 55% of savings.
OpenSearch Reserved Instances
OpenSearch reservations provide a significant discount, but they are not flexible, and cannot be modified after purchase.
Redshift Reserved Nodes
Redshift Reserved Nodes are not size flexible.
RDS Reserved Instances
RDS Reserved Instances are size flexible, but the database engine cannot be modified. When purchasing, it is possible to select either a Single-AZ or a Multi-AZ cluster. Essentially, a Multi-AZ reservation is just providing a double reservation for the purchased instance type. It is also possible to purchase two or three Single-AZ reservations to cover a Multi-AZ database setup with reservations.
We discussed different types and parameters of Amazon Web Services (AWS) Reserved Instances. Reservations are long-term commitments, and most of them cannot be modified after the purchase. One must be very attentive to the nuances to benefit from reduced prices. An alternative and simpler way to get discounts for some of the AWS services is AWS Savings Plans, which will be covered in another article.