AWS Reserved Instances

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.

AWS Services Reserved 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

The matrix below shows reservation variables, which are necessary to take into account when purchasing an AWS Reserved Instance.

AWS Reserved Instance

Some AWS RI parameters are similar in all reservations:

Size Flexibility

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:

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)
nano 0.25          
micro 0.5 1 1.5      
small 1 2 3 1.3 3 3.9
medium 2 4 6 2.6 6 7.8
large 4 8 12 5.2 12 15.6
xlarge 8 16 24 10.4 24 31.2
2xlarge 16 32 48 20.8 48 62.4
3xlarge 24          
4xlarge 32 64 96 41.6 96 124.8
6xlarge 48 96 144      
8xlarge 64 128 192 83.2 192 249.6
9xlarge 72          
10xlarge 80 160 240      
12xlarge 96 192 288 124.8 288 374.4
16xlarge 128 256 384 166.4 384 499.2
18xlarge 144          
24xlarge 192 384 576 249.6 576 748.8
32xlarge 256 512 768 332.8 768 998.4
56xlarge 448          
112xlarge 896          

example:

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

RI Sharing

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.

AWS Reserved Instance Sharing

Some examples of Consolidated Billing and RI Sharing can be found in AWS Documentation.

Reserved Instance and Savings Plans discount Sharing Documentation

Capacity Reservation

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.

AWS Services

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.

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.

Summary

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.