How Do You Exchange Multiple EC2 Convertible RIs?
Exchanging multiple Amazon EC2 Convertible Reserved Instances for a different instance family allows organizations to adapt their cloud compute commitments as workload demands evolve. You can consolidate or merge two or more active Convertible Reserved Instances in the same AWS Region into a new configuration with a different instance family, operating system, tenancy, or payment option. To complete the exchange through the Amazon EC2 console or AWS Command Line Interface, the new target reservation must have an equal or greater total commitment value than the combined remaining value of the original reservations, and it cannot downgrade from an All Upfront or Partial Upfront payment option to a No Upfront option.
Prerequisites and Exchange Rules
Before initiating an exchange across multiple Convertible Reserved Instances, verify that your existing reservations and target instance configurations satisfy Amazon EC2 requirements:
- Active State and Region: All source Convertible
Reserved Instances must be in the
activestate and located within the same AWS Region. You cannot exchange Standard Reserved Instances or combine reservations across different Regions. - Equal or Greater Value: The total upfront and recurring commitment of the new Convertible Reserved Instance configuration must be equal to or greater than the remaining value of the combined source reservations.
- Expiration Date Calculation: When merging multiple Convertible Reserved Instances with different end dates, AWS sets the expiration date of the new reservation to match the furthest expiration date among all the source reservations being exchanged.
- Payment Option Compatibility: If any of the source reservations use the All Upfront or Partial Upfront payment option, the new target reservation must also use All Upfront or Partial Upfront. You can only select a No Upfront target configuration if every source reservation being exchanged is already a No Upfront reservation.
- Uncovered Upfront Costs: If the new instance family configuration requires a higher upfront commitment than the remaining upfront credit of the exchanged reservations, you are billed immediately for the true-up difference.
Understanding the Exchange Value Calculation
When you exchange \(n\) Convertible Reserved Instances, AWS calculates the remaining list value of your current commitments and compares it against the list cost of the target instance family over the remaining term.
Let \(V_{\text{old}}\) represent the combined remaining commitment value of the \(n\) source reservations, calculated as:
\[V_{\text{old}} = \sum_{i=1}^{n} \left( U_{\text{rem}, i} + H_{i} \times t_{\text{rem}, i} \right)\]
where \(U_{\text{rem}, i}\) is the prorated remaining upfront value of reservation \(i\), \(H_{i}\) is the hourly recurring rate of reservation \(i\), and \(t_{\text{rem}, i}\) is the remaining hours until reservation \(i\) expires.
The new expiration timestamp \(T_{\text{new}}\) is determined by the maximum expiration timestamp among the source reservations:
\[T_{\text{new}} = \max_{1 \le i \le n} \left( T_{\text{end}, i} \right)\]
For a target configuration of \(N_{\text{new}}\) instances in the new instance family with an upfront cost per instance of \(U_{\text{new}}\) and an hourly rate per instance of \(H_{\text{new}}\) over the remaining duration \(t_{\text{new}}\), the total new commitment value \(V_{\text{new}}\) must satisfy:
\[V_{\text{new}} = N_{\text{new}} \times \left( U_{\text{new}} + H_{\text{new}} \times t_{\text{new}} \right) \ge V_{\text{old}}\]
AWS automatically computes the minimum required instance count \(N_{\text{new}}\) so that \(V_{\text{new}} \ge V_{\text{old}}\) and calculates any true-up upfront payment due at checkout.
Exchanging Multiple Reservations via the AWS Management Console
You can merge and exchange multiple Convertible Reserved Instances simultaneously using the Amazon EC2 console:
- Sign in to the AWS Management Console and open the Amazon EC2 dashboard.
- In the left navigation pane, choose Reserved Instances under the Instances section.
- Select the checkboxes next to the two or more
Convertible Reserved Instances that you want to
exchange. Verify that the Offering class column shows
convertibleand the State column showsactivefor every selected item. - Choose Actions, and then select Exchange Reserved Instance.
- In the Exchange Reserved Instances configuration
dialog, specify the target attributes for your new reservation:
- Instance type: Select the desired target instance
family and size (for example, moving from
c5.largeandm5.largetom6i.xlarge). - Platform: Select the operating system (such as Linux/UNIX, Red Hat Enterprise Linux, SUSE Linux, or Windows).
- Tenancy: Choose
DefaultorDedicated. - Payment option: Select
All Upfront,Partial Upfront, orNo Upfront(subject to the payment compatibility rules).
- Instance type: Select the desired target instance
family and size (for example, moving from
- Choose Find offering (or review the automatically populated target calculation). The console displays the minimum number of instances required in the new instance family to cover the remaining value of your selected reservations, along with any additional upfront true-up cost.
- Review the summary table comparing your current reservations to the new reservation, and then choose Exchange to submit the request.
Exchanging Multiple Reservations via the AWS CLI
For automated workflows or bulk reservation management, use the AWS
Command Line Interface (aws ec2) to find a target offering,
request a quote, and execute the exchange.
Step 1: Identify Your Current Reserved Instance IDs
List your active Convertible Reserved Instances to retrieve their
ReservedInstancesId values:
aws ec2 describe-reserved-instances \
--filters "Name=offering-class,Values=convertible" "Name=state,Values=active" \
--query "ReservedInstances[*].{ID:ReservedInstancesId,Type:InstanceType,Count:InstanceCount,End:End}" \
--output tableStep 2: Find a Target Offering in the New Instance Family
Query the available Convertible Reserved Instance offerings for your
target instance family (for example, m6i.xlarge):
aws ec2 describe-reserved-instances-offerings \
--offering-class convertible \
--instance-type m6i.xlarge \
--product-description "Linux/UNIX" \
--instance-tenancy default \
--no-include-marketplace \
--query "ReservedInstancesOfferings[*].{OfferingId:ReservedInstancesOfferingId,Payment:OfferingType,Duration:Duration}" \
--output tableStep 3: Preview the Exchange Quote
Before committing to the exchange, run
get-reserved-instances-exchange-quote by passing multiple
space-separated reservation IDs to --reserved-instance-ids
and the target offering ID from the previous step:
aws ec2 get-reserved-instances-exchange-quote \
--reserved-instance-ids \
11111111-2222-3333-4444-555555555551 \
11111111-2222-3333-4444-555555555552 \
--target-configurations OfferingId=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeenote that omitting InstanceCount inside
--target-configurations instructs AWS to automatically
calculate the minimum number of instances of the target offering
required to equal or exceed the combined value of the source
reservations. Examine the PaymentDue,
OutputReservedInstancesWillExpireAt, and
TargetConfiguration.InstanceCount fields in the JSON
output.
Step 4: Execute the Exchange
Once you verify the quote details, execute the exchange using
accept-reserved-instances-exchange-quote:
aws ec2 accept-reserved-instances-exchange-quote \
--reserved-instance-ids \
11111111-2222-3333-4444-555555555551 \
11111111-2222-3333-4444-555555555552 \
--target-configurations OfferingId=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeeThe command returns an ExchangeId. Your original
Convertible Reserved Instances transition to the retired
state, and the new Convertible Reserved Instance in the target instance
family transitions to payment-pending and then
active within a few minutes.
Splitting a Reservation Before Exchanging
When you include a Convertible Reserved Instance in an exchange, all
instances within that specific ReservedInstancesId must be
exchanged together unless you specify a smaller subset or split the
reservation first. If a reservation contains \(10\) instances and you only want to combine
\(4\) of them with another reservation
into a new instance family, first use the Modify Reserved
Instances action (modify-reserved-instances in the
AWS CLI) to split the original reservation into two separate
reservations of \(6\) and \(4\) instances, and then include only the
\(4\)-instance reservation ID in your
multi-reservation exchange.