Menu
Amazon Relational Database Service
User Guide (API Version 2014-10-31)

Working with Reserved DB Instances

Reserved DB instances let you reserve a DB instance for a one- or three-year term. Reserved DB instances provide you with a significant discount compared to on-demand DB instance pricing. Reserved DB instances are not physical instances, but rather a billing discount applied to the use of certain on-demand DB instances in your account. Discounts for reserved DB instances are tied to instance type and region.

The general process for working with reserved DB instances is: First get information about available reserved DB instance offerings, then purchase a reserved DB instance offering, and finally get information about your existing reserved DB instances.

Overview of Reserved Instances

When you purchase a reserved instance in Amazon RDS, you purchase a commitment to getting a discounted rate, on a specific DB instance type, for the duration of the reserved instance. To use an Amazon RDS reserved instance, you create a new DB instance just like you do for an on-demand instance. The new DB instance you create must match the specifications of the reserved instance. If the specifications of the new DB instance matches an existing reserved instance for your account, you are billed at the discounted rate offered for the reserved instance; otherwise, the DB instance is billed at an on-demand rate.

Note

You can move a reserved DB instance from an EC2-Classic (non-VPC) instance into an Amazon Virtual Private Cloud (Amazon VPC) without additional charge.

For more information about reserved DB instances, including pricing, see Amazon RDS Reserved Instances.

Offering Types

Reserved DB instances are available in three varieties—No Upfront, Partial Upfront, and All Upfront—that let you optimize your Amazon RDS costs based on your expected usage.

No Upfront

This option provides access to a reserved DB instance without requiring an upfront payment. Your No Upfront reserved DB instance bills a discounted hourly rate for every hour within the term, regardless of usage, and no upfront payment is required. This option is only available as a one-year reservation.

Partial Upfront

This option requires a part of the reserved DB instance to be paid upfront. The remaining hours in the term are billed at a discounted hourly rate, regardless of usage. This option is the replacement for the previous Heavy Utilization option.

All Upfront

Full payment is made at the start of the term, with no other costs incurred for the remainder of the term regardless of the number of hours used.

Size-Flexible Reserved Instances

When you purchase a reserved instance, one of the things that you specify is the instance class, for example db.m4.large. For more information about instance classes, see DB Instance Class.

If you have a DB instance, and you need to scale it to larger capacity, your reserved instance is automatically applied to your scaled DB instance. That is, your reserved instances are automatically applied across all DB instance class sizes. Size-flexible reserved instances are available for DB instances with the same AWS Region, database engine, and instance family. Reserved instance benefits also apply for both Multi-AZ and Single-AZ configurations.

Size-flexible reserved instances are available for the following database engines:

  • Amazon Aurora

  • MariaDB

  • MySQL

  • Oracle, Bring Your Own License

  • PostgreSQL

You can compare usage for different reserved instance sizes by using normalized units. For example, one unit of usage on two db.m3.large DB instances is equivalent to 8 normalized units of usage on one db.m3.small. The following table shows the number of normalized units for each DB instance size.

Instance Size Single-AZ Normalized Units Multi-AZ Normalized Units

micro

0.5

1

small

1

2

medium

2

4

large

4

8

xlarge

8

16

2xlarge

16

32

4xlarge

32

64

8xlarge

64

128

10xlarge

80

160

16xlarge

132

264

For example, if you purchase a db.t2.medium reserved DB instance, and you have two running db.t2.small db instances in your account in the same region, the billing benefit is applied in full to both instances.


                    Applying a reserved DB instance in full to smaller DB instances

Alternatively, if you have one db.t2.large instance running in your account in the same region, the billing benefit is applied to 50% of the usage of the DB instance.


                    Applying a reserved DB instance in part to a larger DB instance

Deleting a Reserved Instance

The terms for a reserved instance involve a one-year or three-year commitment. You can't cancel a reserved instance. However, you can delete a DB instance that is covered by a reserved instance discount. The process for deleting a DB instance that is covered by a reserved instance discount is the same as for any other DB instance.

Your upfront payment for a reserved DB instance reserves the resources for your use. Because these resources are reserved for you, you are billed for the resources regardless of whether you use them.

If you delete a DB instance that is covered by a reserved instance discount, you can launch another DB instance with compatible specifications and continue to get the discounted rate during the reservation term (one or three years).

AWS Management Console

You can use the AWS Management Console to work with reserved instances as shown in the following procedures.

To get pricing and information about available reserved DB instance offerings

  1. Sign in to the AWS Management Console and open the Amazon RDS console at https://console.aws.amazon.com/rds/.

  2. In the navigation pane, choose Reserved Instances.

  3. Choose Purchase Reserved DB Instance.

  4. For Product Description, choose the DB engine and licensing type.

  5. For DB Instance Class, choose the DB instance class.

  6. For Multi-AZ Deployment, choose whether or not you want a Multi-AZ deployment.

    Note

    Reserved Amazon Aurora instances always have the Multi-AZ Deployment option set to No. When you create an Amazon Aurora DB cluster from your reserved instance, the cluster is automatically created as Multi-AZ.

  7. For Term, choose the length of time you want the DB instance reserved.

  8. For Offering Type, choose the offering type.

    After you select the offering type, you can see the pricing information.

    Important

    Choose X in the upper-right corner of the page to avoid purchasing the reserved instance and incurring any charges.

After you have information about the available reserved DB instance offerings, you can use the information to purchase an offering as shown in the following procedure.

To purchase a reserved DB instance

  1. Sign in to the AWS Management Console and open the Amazon RDS console at https://console.aws.amazon.com/rds/.

  2. In the Navigation pane, choose Reserved Instances.

  3. Choose Purchase Reserved DB Instance.

  4. For Product Description, choose the DB engine type.

  5. For DB Instance Class, choose the DB instance class.

  6. For Multi-AZ Deployment, choose whether or not you want a Multi-AZ deployment.

    Note

    Reserved Amazon Aurora instances always have the Multi-AZ Deployment option set to No. When you create an Amazon Aurora DB cluster from your reserved instance, the cluster is automatically created as Multi-AZ.

  7. For Term, choose the length of time you want the DB instance reserved.

  8. For Offering Type, choose the offering type.

  9. (Optional.) You can assign your own identifier to the reserved instances that you purchase to help you keep track of them. For Reserved Id, type an identifier for your reserved DB instance.

  10. After you select the offering type, you can see the pricing information, as shown following.

    
                        Purchase reserved DB instance console step 1
  11. Choose Continue.

    The Purchase Reserved DB Instance dialog box appears, with a summary of the reserved DB instance attributes that you've selected and the payment due, as shown following.

    
                        Purchase reserved DB instance console step 2
  12. On the confirmation page, review your reserved DB instance. If the information is correct, choose Purchase to purchase the reserved DB instance.

    Alternatively, choose Back to edit your reserved DB instance.

After you have purchased reserved DB instances, you can get information about your reserved DB instances as shown in the following procedure.

To get information about reserved DB instances for your AWS account

  1. Sign in to the AWS Management Console and open the Amazon RDS console at https://console.aws.amazon.com/rds/.

  2. In the Navigation pane, choose Reserved Instances.

    The reserved DB instances for your account appear. You can choose any of the reserved DB instances in the list to see detailed information about that reserved DB instance in the detail pane at the bottom of the console.

CLI

You can use the AWS CLI to work with reserved instances as shown in the following examples.

Example Get Available Reserved Instance Offerings

To get information about available reserved DB instance offerings, call the AWS CLI command describe-reserved-db-instances-offerings.

Copy
aws rds describe-reserved-db-instances-offerings

This call returns output similar to the following:


OFFERING  OfferingId                            Class         Multi-AZ  Duration  Fixed Price  Usage Price  Description  Offering Type
OFFERING  438012d3-4052-4cc7-b2e3-8d3372e0e706  db.m1.large   y         1y        1820.00 USD  0.368 USD    mysql        Partial  Upfront
OFFERING  649fd0c8-cf6d-47a0-bfa6-060f8e75e95f  db.m1.small   n         1y         227.50 USD  0.046 USD    mysql        Partial  Upfront
OFFERING  123456cd-ab1c-47a0-bfa6-12345667232f  db.m1.small   n         1y         162.00 USD   0.00 USD    mysql        All      Upfront
    Recurring Charges:   Amount  Currency  Frequency        
    Recurring Charges:   0.123   USD       Hourly
OFFERING  123456cd-ab1c-37a0-bfa6-12345667232d  db.m1.large   y         1y         700.00 USD   0.00 USD    mysql        All      Upfront
    Recurring Charges:   Amount  Currency  Frequency
    Recurring Charges:   1.25    USD       Hourly
OFFERING  123456cd-ab1c-17d0-bfa6-12345667234e  db.m1.xlarge  n         1y        4242.00 USD   2.42 USD    mysql        No       Upfront

After you have information about the available reserved DB instance offerings, you can use the information to purchase an offering as shown in the following example.

Example Purchase a Reserved Instance

To purchase a reserved DB instance, use the AWS CLI command purchase-reserved-db-instances-offering with the following parameters:

  • --reserved-db-instances-offering-id – the id of the offering that you want to purchase. See the preceding example to get the offering ID.

  • --reserved-db-instance-id – you can assign your own identifier to the reserved instances that you purchase to help you keep track of them.

The following example purchases the reserved DB instance offering with ID 649fd0c8-cf6d-47a0-bfa6-060f8e75e95f, and assigns the identifier of MyReservation.

For Linux, OS X, or Unix:

Copy
aws rds purchase-reserved-db-instances-offering \ --reserved-db-instances-offering-id 649fd0c8-cf6d-47a0-bfa6-060f8e75e95f \ --reserved-db-instance-id MyReservation

For Windows:

Copy
aws rds purchase-reserved-db-instances-offering ^ --reserved-db-instances-offering-id 649fd0c8-cf6d-47a0-bfa6-060f8e75e95f ^ --reserved-db-instance-id MyReservation

The command returns output similar to the following:

RESERVATION  ReservationId      Class        Multi-AZ  Start Time                Duration  Fixed Price  Usage Price  Count  State            Description  Offering Type
RESERVATION  MyReservation      db.m1.small  y         2011-12-19T00:30:23.247Z  1y        455.00 USD   0.092 USD    1      payment-pending  mysql        Partial  Upfront

After you have purchased reserved DB instances, you can get information about your reserved DB instances as shown in the following example.

Example Get Your Reserved Instances

To get information about reserved DB instances for your AWS account, call the AWS CLI command describe-reserved-db-instances.

Copy
aws rds describe-reserved-db-instances

The command returns output similar to the following:

RESERVATION  ReservationId     Class        Multi-AZ  Start Time                Duration  Fixed Price  Usage Price  Count  State    Description  Offering Type
RESERVATION  MyReservation     db.m1.small  y         2011-12-09T23:37:44.720Z  1y        455.00 USD   0.092 USD    1      retired  mysql        Partial  Upfront

API

You can use the RDS API to work with reserved instances as shown in the following examples.

Example Get Available Reserved Instance Offerings

To get information about available reserved DB instance offerings, call the Amazon RDS API function DescribeReservedDBInstancesOfferings.

Copy
https://rds.us-east-1.amazonaws.com/ ?Action=DescribeReservedDBInstancesOfferings &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-09-01 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20140411/us-east-1/rds/aws4_request &X-Amz-Date=20140411T203327Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=545f04acffeb4b80d2e778526b1c9da79d0b3097151c24f28e83e851d65422e2

This call returns output similar to the following:

<DescribeReservedDBInstancesOfferingsResponse xmlns="http://rds.amazonaws.com/doc/2014-10-31/">
  <DescribeReservedDBInstancesOfferingsResult>
    <ReservedDBInstancesOfferings>
      <ReservedDBInstancesOffering>
        <Duration>31536000</Duration>
        <OfferingType>Partial Upfront</OfferingType>
        <CurrencyCode>USD</CurrencyCode>
        <RecurringCharges/>
        <FixedPrice>1820.0</FixedPrice>
        <ProductDescription>mysql</ProductDescription>
        <UsagePrice>0.368</UsagePrice>
        <MultiAZ>true</MultiAZ>
        <ReservedDBInstancesOfferingId>438012d3-4052-4cc7-b2e3-8d3372e0e706</ReservedDBInstancesOfferingId>
        <DBInstanceClass>db.m1.large</DBInstanceClass>
      </ReservedDBInstancesOffering>
      <ReservedDBInstancesOffering>
        <Duration>31536000</Duration>
        <OfferingType>Partial Upfront</OfferingType>
        <CurrencyCode>USD</CurrencyCode>
        <RecurringCharges/>
        <FixedPrice>227.5</FixedPrice>
        <ProductDescription>mysql</ProductDescription>
        <UsagePrice>0.046</UsagePrice>
        <MultiAZ>false</MultiAZ>
        <ReservedDBInstancesOfferingId>649fd0c8-cf6d-47a0-bfa6-060f8e75e95f</ReservedDBInstancesOfferingId>
        <DBInstanceClass>db.m1.small</DBInstanceClass>
      </ReservedDBInstancesOffering>
    </ReservedDBInstancesOfferings>
  </DescribeReservedDBInstancesOfferingsResult>
  <ResponseMetadata>
    <RequestId>5e4ec40b-2978-11e1-9e6d-771388d6ed6b</RequestId>
  </ResponseMetadata>
</DescribeReservedDBInstancesOfferingsResponse> 

After you have information about the available reserved DB instance offerings, you can use the information to purchase an offering as shown in the following example.

Example Purchase a Reserved Instance

To purchase a reserved DB instance, call the Amazon RDS API action PurchaseReservedDBInstancesOffering with the following parameters:

  • --reserved-db-instances-offering-id – the id of the offering that you want to purchase. See the preceding example to get the offering ID.

  • --reserved-db-instance-id – you can assign your own identifier to the reserved instances that you purchase to help you keep track of them.

The following example purchases the reserved DB instance offering with ID 649fd0c8-cf6d-47a0-bfa6-060f8e75e95f, and assigns the identifier of MyReservation.

Copy
https://rds.us-east-1.amazonaws.com/ ?Action=PurchaseReservedDBInstancesOffering &ReservedDBInstanceId=MyReservation &ReservedDBInstancesOfferingId=438012d3-4052-4cc7-b2e3-8d3372e0e706 &DBInstanceCount=10 &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-09-01 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20140415/us-east-1/rds/aws4_request &X-Amz-Date=20140415T232655Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=c2ac761e8c8f54a8c0727f5a87ad0a766fbb0024510b9aa34ea6d1f7df52fb11

This call returns output similar to the following:

<PurchaseReservedDBInstancesOfferingResponse xmlns="http://rds.amazonaws.com/doc/2014-10-31/">
  <PurchaseReservedDBInstancesOfferingResult>
    <ReservedDBInstance>
      <OfferingType>Partial Upfront</OfferingType>
      <CurrencyCode>USD</CurrencyCode>
      <RecurringCharges/>
      <ProductDescription>mysql</ProductDescription>
      <ReservedDBInstancesOfferingId>649fd0c8-cf6d-47a0-bfa6-060f8e75e95f</ReservedDBInstancesOfferingId>
      <MultiAZ>true</MultiAZ>
      <State>payment-pending</State>
      <ReservedDBInstanceId>MyReservation</ReservedDBInstanceId>
      <DBInstanceCount>10</DBInstanceCount>
      <StartTime>2011-12-18T23:24:56.577Z</StartTime>
      <Duration>31536000</Duration>
      <FixedPrice>123.0</FixedPrice>
      <UsagePrice>0.123</UsagePrice>
      <DBInstanceClass>db.m1.small</DBInstanceClass>
    </ReservedDBInstance>
  </PurchaseReservedDBInstancesOfferingResult>
  <ResponseMetadata>
    <RequestId>7f099901-29cf-11e1-bd06-6fe008f046c3</RequestId>
  </ResponseMetadata>
</PurchaseReservedDBInstancesOfferingResponse> 

After you have purchased reserved DB instances, you can get information about your reserved DB instances as shown in the following example.

Example Get Your Reserved Instances

To get information about reserved DB instances for your AWS account, call the Amazon RDS API action DescribeReservedDBInstances.

Copy
https://rds.us-west-2.amazonaws.com/ ?Action=DescribeReservedDBInstances &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-09-01 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20140420/us-west-2/rds/aws4_request &X-Amz-Date=20140420T162211Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=3312d17a4c43bcd209bc22a0778dd23e73f8434254abbd7ac53b89ade3dae88e

The API returns output similar to the following:

<DescribeReservedDBInstancesResponse xmlns="http://rds.amazonaws.com/doc/2014-10-31/">
  <DescribeReservedDBInstancesResult>
    <ReservedDBInstances>
      <ReservedDBInstance>
        <OfferingType>Partial Upfront</OfferingType>
        <CurrencyCode>USD</CurrencyCode>
        <RecurringCharges/>
        <ProductDescription>mysql</ProductDescription>
        <ReservedDBInstancesOfferingId>649fd0c8-cf6d-47a0-bfa6-060f8e75e95f</ReservedDBInstancesOfferingId>
        <MultiAZ>false</MultiAZ>
        <State>payment-failed</State>
        <ReservedDBInstanceId>MyReservation</ReservedDBInstanceId>
        <DBInstanceCount>1</DBInstanceCount>
        <StartTime>2010-12-15T00:25:14.131Z</StartTime>
        <Duration>31536000</Duration>
        <FixedPrice>227.5</FixedPrice>
        <UsagePrice>0.046</UsagePrice>
        <DBInstanceClass>db.m1.small</DBInstanceClass>
      </ReservedDBInstance>
      <ReservedDBInstance>
        <OfferingType>Partial Upfront</OfferingType>
        <CurrencyCode>USD</CurrencyCode>
        <RecurringCharges/>
        <ProductDescription>mysql</ProductDescription>
        <ReservedDBInstancesOfferingId>649fd0c8-cf6d-47a0-bfa6-060f8e75e95f</ReservedDBInstancesOfferingId>
        <MultiAZ>false</MultiAZ>
        <State>payment-failed</State>
        <ReservedDBInstanceId>MyReservation</ReservedDBInstanceId>
        <DBInstanceCount>1</DBInstanceCount>
        <StartTime>2010-12-15T01:07:22.275Z</StartTime>
        <Duration>31536000</Duration>
        <FixedPrice>227.5</FixedPrice>
        <UsagePrice>0.046</UsagePrice>
        <DBInstanceClass>db.m1.small</DBInstanceClass>
      </ReservedDBInstance>
    </ReservedDBInstances>
  </DescribeReservedDBInstancesResult>
  <ResponseMetadata>
    <RequestId>23400d50-2978-11e1-9e6d-771388d6ed6b</RequestId>
  </ResponseMetadata>
</DescribeReservedDBInstancesResponse> 

Related Topics