Reserved DB instances for Aurora - Amazon Aurora
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China (PDF).

Reserved DB instances for Aurora

Using reserved DB instances, you can 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 Amazon Web Services 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 DB instances

When you purchase a reserved DB 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 DB instance. To use an Amazon RDS reserved DB instance, you create a new DB instance just like you do for an on-demand instance.

The new DB instance that you create must have the same specifications as the reserved DB instance for the following:

  • Amazon Web Services Region

  • DB engine

  • DB instance type

If the specifications of the new DB instance match an existing reserved DB instance for your account, you are billed at the discounted rate offered for the reserved DB instance. Otherwise, the DB instance is billed at an on-demand rate.

You can modify a DB instance that you're using as a reserved DB instance. If the modification is within the specifications of the reserved DB instance, part or all of the discount still applies to the modified DB instance. If the modification is outside the specifications, such as changing the instance class, the discount no longer applies. For more information, see Size-flexible reserved DB instances.

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.

If you are using consolidated billing, all the accounts in the organization are treated as one account. This means that all accounts in the organization can receive the hourly cost benefit of reserved DB instances that are purchased by any other account. For more information about consolidated billing, see Amazon RDS reserved DB instances in the Amazon Billing and Cost Management User Guide.

Aurora DB cluster configuration flexibility

You can use Aurora reserved DB instances with both DB cluster configurations:

  • Aurora I/O-Optimized – You pay only for the usage and storage of your DB clusters, with no additional charges for read and write I/O operations.

  • Aurora Standard – In addition to the usage and storage of your DB clusters, you also pay a standard rate per 1 million requests for I/O operations.

Aurora automatically accounts for the price difference between these configurations. Aurora I/O-Optimized consumes 30% more normalized units per hour than Aurora Standard.

For more information about Aurora cluster storage configurations, see Storage configurations for Amazon Aurora DB clusters. For more information about pricing for Aurora cluster storage configurations, see Amazon Aurora pricing.

Size-flexible reserved DB instances

When you purchase a reserved DB instance, one thing that you specify is the instance class, for example db.r5.large. For more information about DB instance classes, see Aurora DB instance classes.

If you have a DB instance, and you need to scale it to larger capacity, your reserved DB instance is automatically applied to your scaled DB instance. That is, your reserved DB instances are automatically applied across all DB instance class sizes. Size-flexible reserved DB instances are available for DB instances with the same Amazon Web Services Region and database engine. Size-flexible reserved DB instances can only scale in their instance class type. For example, a reserved DB instance for a db.r5.large can apply to a db.r5.xlarge, but not to a db.r6g.large, because db.r5 and db.r6g are different instance class types.

Reserved DB instance benefits also apply for both Multi-AZ and Single-AZ configurations. Flexibility means that you can move freely between configurations within the same DB instance class type. For example, you can move from a Single-AZ deployment running on one large DB instance (four normalized units per hour) to a Multi-AZ deployment running on two medium DB instances (2+2 = 4 normalized units per hour).

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

  • Aurora MySQL

  • Aurora PostgreSQL

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

Instance size Normalized units per hour for one DB instance, Aurora Standard Normalized units per hour for one DB instance, Aurora I/O-Optimized Normalized units per hour for three DB instances (writer and two readers), Aurora Standard Normalized units per hour for three DB instances (writer and two readers), Aurora I/O-Optimized

small

1

1.3

3

3.9

medium

2

2.6

6

7.8

large

4

5.2

12

15.6

xlarge

8

10.4

24

31.2

2xlarge

16

20.8

48

62.4

4xlarge

32

41.6

96

124.8

8xlarge

64

83.2

192

249.6

12xlarge

96

124.8

288

374.4

16xlarge

128

166.4

384

499.2

24xlarge

192

249.6

576

748.8

32xlarge

256

332.8

768

998.4

For example, suppose that 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 Amazon Web Services Region. In this case, 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 Amazon Web Services Region, the billing benefit is applied to 50 percent of the usage of the DB instance.


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

We recommend using the T DB instance classes only for development and test servers, or other non-production servers. For more details on the T instance classes, see DB instance class types.

Aurora reserved DB instance billing examples

The following examples illustrate the pricing for reserved DB instances for Aurora DB clusters using both the Aurora Standard and Aurora I/O-Optimized DB cluster configurations.

Example using Aurora Standard

The price for a reserved DB instance doesn't provide a discount for the costs associated with storage, backups, and I/O. The following example illustrates the total cost per month for a reserved DB instance:

  • An Aurora MySQL reserved Single-AZ db.r5.large DB instance class in US East (N. Virginia) at a cost of $0.19 per hour, or $138.70 per month

  • Aurora storage at a cost of $0.10 per GiB per month (assume $45.60 per month for this example)

  • Aurora I/O at a cost of $0.20 per 1 million requests (assume $20 per month for this example)

  • Aurora backup storage at $0.021 per GiB per month (assume $30 per month for this example)

Add all of these options ($138.70 + $45.60 + $20 + $30) with the reserved DB instance, and the total cost per month is $234.30.

If you choose to use an on-demand DB instance instead of a reserved DB instance, an Aurora MySQL Single-AZ db.r5.large DB instance class in US East (N. Virginia) costs $0.29 per hour, or $217.50 per month. So, for an on-demand DB instance, add all of these options ($217.50 + $45.60 + $20 + $30), and the total cost per month is $313.10. You save nearly $79 per month by using the reserved DB instance.

Example using an Aurora Standard DB cluster with two reader instances

To use reserved instances for Aurora DB clusters, simply purchase one reserved instance for each DB instance in the cluster.

Extending the first example, you have an Aurora MySQL DB cluster with one writer DB instance and two Aurora Replicas, for a total of three DB instances in the cluster. The two Aurora Replicas incur no extra storage or backups charges. If you purchase three db.r5.large Aurora MySQL reserved DB instances, your cost will be $234.30 (for the writer DB instance) + 2 * ($138.70 + $20 I/O per Aurora Replica), for a total of $551.70 per month.

The corresponding on-demand cost for an Aurora MySQL DB cluster with one writer DB instance and two Aurora Replicas is $313.10 + 2 * ($217.50 + $20 I/O per instance) for a total of $788.10 per month. You save $236.40 per month by using the reserved DB instances.

Example using Aurora I/O-Optimized

You can reuse your existing Aurora Standard reserved DB instances with Aurora I/O-Optimized. To fully use the benefits of your reserved instance discounts with Aurora I/O-Optimized, you can buy 30% additional reserved instances similar to your current reserved instances.

The following table shows examples of how to estimate the additional reserved instances when using Aurora I/O-Optimized. If the required reserved instances are a fraction, you can take advantage of the size flexibility available with reserved instances to get to a whole number. In these examples, "current" refers to the Aurora Standard reserved instances that you have now. Additional reserved instances are the number of Aurora Standard reserved instances that you must buy to maintain your current reserved instance discounts when using Aurora I/O-Optimized.

DB instance class Current Aurora Standard reserved instances Reserved instances required for Aurora I/O-Optimized Additional reserved instances needed Additional reserved instances needed, using size flexibility
db.r6g.large 10 10 * 1.3 = 13 3 * db.r6g.large 3 * db.r6g.large
db.r6g.4xlarge 20 20 * 1.3 = 26 6 * db.r6g.4xlarge 6 * db.r6g.4xlarge
db.r6g.12xlarge 5 5 * 1.3 = 6.5 1.5 * db.r6g.12xlarge

One each of db.r6g.12xlarge, r6g.4xlarge, and r6g.2xlarge

(0.5 * db.r6g.12xlarge = 1 * db.r6g.4xlarge + 1 * db.r6g.2xlarge )

db.r6i.24xlarge 15 15 * 1.3 = 19.5 4.5 * db.r6i.24xlarge

4 * db.r6i.24xlarge + 1 * db.r6i.12xlarge

(0.5 * db.r6i.24xlarge = 1 * db.r6i.12xlarge)

Example using an Aurora I/O-Optimized DB cluster with two reader instances

You have an Aurora MySQL DB cluster with one writer DB instance and two Aurora Replicas, for a total of three DB instances in the cluster. They use the Aurora I/O-Optimized DB cluster configuration. To use reserved DB instances for this cluster, you would need to buy four reserved DB instances of the same DB instance class. Three DB instances using Aurora I/O-Optimized consume 3.9 normalized units per hour, compared to 3 normalized units per hour for three DB instances using Aurora Standard. However, you save the monthly I/O costs for each DB instance.

Note

The prices in these examples are sample prices and might not match actual prices. For Aurora pricing information, see Amazon Aurora pricing.

Deleting a reserved DB instance

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

You're billed for the upfront costs regardless of whether you use the resources.

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

Working with reserved DB instances

You can use the Amazon Web Services Management Console, the Amazon CLI, and the RDS API to work with reserved DB instances.

You can use the Amazon Web Services Management Console to work with reserved DB instances as shown in the following procedures.

To get pricing and information about available reserved DB instance offerings
  1. Sign in to the Amazon Web Services Management Console and open the Amazon RDS console at https://console.amazonaws.cn/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 Deployment Option, choose whether you want a Single-AZ or Multi-AZ DB instance deployment.

    Note

    Reserved Amazon Aurora instances always have the deployment option set to Single-AZ DB instance. However, when you create an Aurora DB cluster, the default deployment option is Create an Aurora Replica or Reader in a different AZ (Multi-AZ).

    You must purchase a reserved DB instance for each instance that you plan to use, including Aurora Replicas. Therefore, for Multi-AZ deployments on Aurora, you must purchase extra reserved DB instances.

  7. For Term, choose the length of time to reserve the the DB instance.

  8. For Offering type, choose the offering type.

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

    Important

    Choose Cancel to avoid purchasing the reserved DB 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 Amazon Web Services Management Console and open the Amazon RDS console at https://console.amazonaws.cn/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 you want a Single-AZ or Multi-AZ DB instance deployment.

    Note

    Reserved Amazon Aurora instances always have the deployment option set to Single-AZ DB instance. When you create an Amazon Aurora DB cluster from your reserved DB instance, the DB cluster is automatically created as Multi-AZ. Make sure to purchase a reserved DB instance for each DB instance that you plan to use, including Aurora Replicas.

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

  8. For Offering type, choose the offering type.

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

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

  10. Choose Submit.

    Your reserved DB instance is purchased, then displayed in the Reserved instances list.

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 Amazon account
  1. Sign in to the Amazon Web Services Management Console and open the Amazon RDS console at https://console.amazonaws.cn/rds/.

  2. In the Navigation pane, choose Reserved instances.

    The reserved DB instances for your account appear. To see detailed information about a particular reserved DB instance, choose that instance in the list. You can then see detailed information about that instance in the detail pane at the bottom of the console.

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

Example of getting available reserved DB instance offerings

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

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.r3.large y 1y 1820.00 USD 0.368 USD mysql Partial Upfront OFFERING 649fd0c8-cf6d-47a0-bfa6-060f8e75e95f db.r3.small n 1y 227.50 USD 0.046 USD mysql Partial Upfront OFFERING 123456cd-ab1c-47a0-bfa6-12345667232f db.r3.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.r3.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.r3.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.

To purchase a reserved DB instance, use the Amazon 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 DB instances that you purchase to help track them.

Example of purchasing a reserved DB instance

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

For Linux, macOS, or Unix:

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

For Windows:

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.r3.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.

To get information about reserved DB instances for your Amazon account, call the Amazon CLI command describe-reserved-db-instances, as shown in the following example.

Example of getting your reserved DB instances
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.r3.small y 2011-12-09T23:37:44.720Z 1y 455.00 USD 0.092 USD 1 retired mysql Partial Upfront

You can use the RDS API to work with reserved DB instances:

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

  • After you have information about the available reserved DB instance offerings, you can use the information to purchase an offering. Call the PurchaseReservedDBInstancesOffering RDS API operation with the following parameters:

    • --reserved-db-instances-offering-id – The ID of the offering that you want to purchase.

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

  • After you have purchased reserved DB instances, you can get information about your reserved DB instances. Call the DescribeReservedDBInstances RDS API operation.

Viewing the billing for your reserved DB instances

You can view the billing for your reserved DB instances in the Billing Dashboard in the Amazon Web Services Management Console.

To view reserved DB instance billing
  1. Sign in to the Amazon Web Services Management Console.

  2. From the account menu at the upper right, choose Billing Dashboard.

  3. Choose Bill Details at the upper right of the dashboard.

  4. Under Amazon Service Charges, expand Relational Database Service.

  5. Expand the Amazon Web Services Region where your reserved DB instances are, for example US West (Oregon).

    Your reserved DB instances and their hourly charges for the current month are shown under Amazon Relational Database Service for Database Engine Reserved Instances.

    
                        View monthly costs for a reserved DB instance

    The reserved DB instance in this example was purchased All Upfront, so there are no hourly charges.

  6. Choose the Cost Explorer (bar graph) icon next to the Reserved Instances heading.

    The Cost Explorer displays the Monthly EC2 running hours costs and usage graph.

  7. Clear the Usage Type Group filter to the right of the graph.

  8. Choose the time period and time unit for which you want to examine usage costs.

    The following example shows usage costs for on-demand and reserved DB instances for the year to date by month.

    
                        View usage costs for on-demand and reserved DB instances

    The reserved DB instance costs from January through June 2021 are monthly charges for a Partial Upfront instance, while the cost in August 2021 is a one-time charge for an All Upfront instance.

    The reserved instance discount for the Partial Upfront instance expired in June 2021, but the DB instance wasn't deleted. After the expiration date, it was simply charged at the on-demand rate.