- Amazon DynamoDB›
- Pricing›
- Provisioned
AWS Pricing Calculator
Calculate your Amazon DynamoDB and architecture cost in a single estimate.
With provisioned capacity mode, you specify the number of data reads and writes per second that you require for your application. You can use auto scaling to automatically adjust your table’s capacity based on the specified utilization rate to ensure application performance while reducing costs. This pricing page details how DynamoDB charges for the core and optional features of DynamoDB.
Key terms
Read capacity unit (RCU): Each API call to read data from your table is a read request. Read requests can be strongly consistent, eventually consistent, or transactional. For items up to 4 KB in size, one RCU can perform one strongly consistent read request per second. Items larger than 4 KB require additional RCUs. For items up to 4 KB in size, one RCU can perform two eventually consistent read requests per second. Transactional read requests require two RCUs to perform one read per second for items up to 4 KB. For example, a strongly consistent read of an 8 KB item would require two RCUs, an eventually consistent read of an 8 KB item would require one RCU, and a transactional read of an 8 KB item would require four RCUs. See Read Consistency for more details.
Write capacity unit (WCU): Each API call to write data to your table is a write request. For items up to 1 KB in size, one WCU can perform one standard write request per second. Items larger than 1 KB require additional WCUs. Transactional write requests require two WCUs to perform one write per second for items up to 1 KB. For example, a standard write request of a 1 KB item would require one WCU, a standard write request of a 3 KB item would require three WCUs, and a transactional write request of a 3 KB item would require six WCUs.
Streams read request unit: Each GetRecords API call to DynamoDB Streams is a streams read request unit. Each streams read request unit can return up to 1 MB of data.
Transactional read/write requests: In DynamoDB, a transactional read or write differs from a standard read or write because it guarantees that all operations contained in a single transaction set succeed or fail as a set.
Change data capture units: DynamoDB can capture item-level changes in your DynamoDB tables and replicate them to other AWS services such as Amazon Kinesis Data Streams. DynamoDB captures these changes as delegated operations, which means DynamoDB performs the replication on your behalf so that you don’t have to manage throughput capacity. DynamoDB charges one change data capture unit for each write to your table (up to 1 KB). For items larger than 1 KB, additional change data capture units are required.
DynamoDB table classes: DynamoDB offers two table classes designed to help you optimize for cost. The DynamoDB Standard table class is the default and recommended for the vast majority of workloads. The DynamoDB Standard-Infrequent Access (DynamoDB Standard-IA) table class is optimized for tables that store data that is accessed infrequently, where storage is the dominant cost. Each table class offers different pricing for data storage as well as read and write requests. You can select the most cost-effective table class based on your table’s storage requirements and data access patterns. Learn more about DynamoDB table classes in the DynamoDB Developer Guide.
DynamoDB features and billing overview
Feature |
What it does |
Billing unit |
|
Core features |
|||
|
Provisioned write capacity |
Writes data to your table |
WCU |
|
Provisioned read capacity |
Reads data from your table |
RCU |
|
Data storage |
Stores data, including index values |
GB-month |
Optional features |
|||
|
Continuous backup |
Takes continuous backups for the preceding 1 to 35 days |
GB-month |
|
On-demand backup |
Takes snapshot backups at specified points in time |
GB-month |
|
Restore from backup |
Restores a table to a specific snapshot or time |
GB |
| Change data capture for Amazon Kinesis Data Streams | Captures item-level modifications in any DynamoDB table and replicates them to a Kinesis data stream of your choice | Change data capture unit | |
| Data export to Amazon S3 | Exports DynamoDB table backups from a specific point in time to Amazon S3 | GB | |
| Data import from Amazon S3 | Migrate and load data from Amazon S3 to new DynamoDB tables | GB | |
|
DynamoDB Streams |
Provides a time-ordered sequence of item-level changes on a table |
Streams read request unit |
|
Data transfer out |
Transfers data to other AWS Regions |
GB |
Integrations with DynamoDB billing overview
Integration |
What it does |
Billing unit |
|
| Zero-ETL integration with Amazon Redshift | Enables analytics on operational data without building and managing data pipelines | GB of exports | |
DynamoDB pricing
-
• Read and write requests
Provisioned capacity
When you select provisioned capacity mode, you specify the read and write capacity that you expect your application to require. You can use auto scaling to automatically adjust your table’s capacity based on the specified utilization rate to ensure application performance while reducing costs. DynamoDB charges one WCU for each write per second (up to 1 KB) and two WCUs for each transactional write per second. For reads, DynamoDB charges one RCU for each strongly consistent read per second, two RCUs for each transactional read per second, and one-half of an RCU for each eventually consistent read per second (up to 4 KB). You will be charged for the throughput capacity (reads and writes) you provision in your Amazon DynamoDB table, even if you do not fully utilize the provisioned capacity. The price for provisioned capacity depends on your table class. The actual reads and writes performance of your DynamoDB tables may vary and may be less than the throughput capacity that you provision.
Reserved capacity
DynamoDB reserved capacity can help you save on your provisioned capacity costs by making an upfront commitment on your base level of provisioned capacity. With reserved capacity, you pay a one-time upfront fee and commit to a minimum provisioned usage level over a period of time. Reserved capacity is billed at a discounted hourly rate. Any capacity that you provision in excess of your reserved capacity is billed at undiscounted provisioned capacity rates. Reserved capacity is available for single-region, provisioned read and write capacity units (RCU and WCU) on DynamoDB tables that use the DynamoDB Standard table class. Reserved capacity is not available for tables that use the DynamoDB Standard-IA table class, or on-demand capacity.
You may purchase DynamoDB reserved capacity by submitting a request through the AWS Management Console. Reserved capacity is purchased in blocks of 100 WCUs or 100 RCUs. When you purchase reserved capacity, you must designate an AWS Region, quantity, and term. You will be charged (1) a one-time upfront fee, and (2) an hourly fee for each hour during the term based on the amount of DynamoDB reserved capacity you purchase. DynamoDB reserved capacity is also subject to all storage, data transfer, and other fees applicable under the AWS Customer Agreement or other agreement with us governing your use of our services.
-
• Data storage
You do not need to provision storage: DynamoDB monitors the size of your tables continuously to determine your storage charges. DynamoDB measures the size of your billable data by adding the raw byte size of your data plus a per-item storage overhead that depends on the features you have enabled. See the DynamoDB User Guide to learn more. The price for data storage depends on your table class.
-
• Backup and restore
DynamoDB offers two methods to back up your table data. Continuous backups with point-in-time recovery (PITR) provide an ongoing backup of your table for the preceding 1 to 35 days. You can restore your table to the state of any specified second in the preceding five weeks. On-demand backups create snapshots of your table to archive for extended periods to help you meet corporate and governmental regulatory requirements.
Continuous backups (PITR)
DynamoDB charges for PITR based on the size of each DynamoDB table (table data and local secondary indexes) on which it is enabled. DynamoDB monitors the size of your PITR-enabled tables continuously throughout the month to determine your backup charges and continues to bill you until you disable PITR on each table.
On-demand backup
DynamoDB charges for on-demand backups based on the storage size of the table (table data and local secondary indexes). The size of each backup is determined at the time of each backup request. The total backup storage size billed each month is the sum of all backups of DynamoDB tables. DynamoDB monitors the size of on-demand backups continuously throughout the month to determine your backup charges.
You can use DynamoDB or AWS Backup to create and manage on-demand backups. To learn more, see Using On-Demand Backup and Restore. With AWS Backup you can centralize and automate data protection across AWS services. AWS Backup also offers advanced features such cross-account and cross-Region on-demand backup copying, low-cost storage tier, backup tagging, and backup encryption that is independent from its source data to help meet your business continuity requirements and optimize backup costs. Additional charges apply for cross-Region data transfer. For more information about these charges, see AWS Backup pricing.
* Cold backup storage is supported for on-demand backups that are managed by AWS Backup only. You can opt-in to use AWS Backup from the AWS Management Console.
Backups that are transitioned to Cold Storage have a minimum 90 days of storage, and backups deleted before 90 days incur a pro-rated charge equal to the storage charge for the remaining days.
Restoring a table
Restoring a table from on-demand backups or PITR is charged based on the total size of data restored (table data, local secondary indexes, and global secondary indexes) for each request.
* Restoring from cold backup storage is supported for on-demand backups that are managed by AWS Backup only. You can opt-in to use AWS Backup from the AWS Management Console. Cold backup storage is not applicable for continuous backups with point-in-time recovery (PITR).
-
• Change data capture for Amazon Kinesis Data Streams
DynamoDB charges for change data capture for Amazon Kinesis Data Streams in change data capture units. DynamoDB charges one change data capture unit for each write (up to 1 KB). You pay only for the writes your application performs without having to manage throughput capacity on the table.
Kinesis Data Streams charges still apply when you replicate DynamoDB changes to a Kinesis data stream. For more information, see Amazon Kinesis Data Streams pricing.
-
• Warm Throughput
By default, Warm Throughput values are visible for all Amazon DynamoDB tables and indexes. These values automatically adjust as you increase your provisioned throughput or on-demand consumption at no extra charge. However, if you choose to manually increase these values, additional charges will apply.
When you request to prewarm your tables or indexes by setting new warm throughput values for reads and writes, DynamoDB charges based on the difference between the new values and the current warm throughput that the table or index can support. You will incur a one-time fee at the regional rate of one read capacity unit (RCU) for every unit increase in read warm throughput and one write capacity unit (WCU) for every unit increase in write warm throughput. These charges apply to both DynamoDB Standard and Standard-Infrequent Access table classes.
Example: Assume you have a DynamoDB Standard table in the EU (Germany) region with a current warm throughput of 12,000 read units per second and 4,000 write units per second. For an upcoming pe with a current warm throughput of 12,000 read units per second and 4,000 write units per second. For an upcoming peak event, you expect the table to need 100,000 read units per second, so you set this as the new read warm throughput value. You will incur a one-time fee for the additional 88,000 read units (the difference between 100,000 and 12,000) at the rate of €13.77 (88,000 units × €0.0001565156 per RCU). This billing structure applies whether you prewarm your table or index for reads or writes, in either the DynamoDB Standard or Standard-Infrequent Access table class.
-
• Data export to Amazon S3
Use this feature to export data from your DynamoDB continuous backups (point-in-time recovery) to Amazon Simple Storage Service (Amazon S3). The supported output data formats are DynamoDB JSON and Amazon Ion. You can analyze the exported data by using AWS services such as Amazon Athena, Amazon SageMaker, and AWS Lake Formation.
You can choose between a full export and an incremental export. Full exports are charged based on the size of each DynamoDB table (table data and local secondary indexes) at the specified point in time when the backup was created. Incremental exports are charged based on the size of data processed from continuous backups to generate the incremental export output. Additional charges apply for storing exported data in Amazon S3 and for PUT requests made against your Amazon S3 bucket. For more information about these charges, see Amazon S3 pricing.
-
• Data import from Amazon S3
Amazon DynamoDB data import provides a simple and efficient way to move data between Amazon S3 and DynamoDB tables without writing any code. You can copy tables between AWS regions and accounts to help migrate data and build new applications, facilitate data sharing and collaboration between teams, and help simplify disaster recovery and business continuity planning. Data import pricing is based on the uncompressed file size in Amazon S3. See Import from S3 for more details. The supported input data formats are CSV, DynamoDB JSON, and Amazon Ion.
Amazon S3 charges also apply for storing your source data and for GET requests made against your Amazon S3 bucket. For more information about Amazon S3 charges, see Amazon S3 pricing.
-
• DynamoDB Streams
DynamoDB charges for reading data from DynamoDB Streams in read request units. Each GetRecords API call is billed as a streams read request unit and returns up to 1 MB of data from DynamoDB Streams. Streams read request units are unique from read requests on your DynamoDB table.
-
• Data transfer
Data transfer in and out refers to transfer into and out of DynamoDB. DynamoDB does not charge for inbound data transfer, and it does not charge for data transferred between DynamoDB and other AWS services within the same AWS Region (in other words, €0.00 per GB). Data transferred across AWS Regions (such as between DynamoDB in the EU (Germany) Region and Amazon EC2 in the US East [N. Virginia] Region) is charged on both sides of the transfer.
DynamoDB pricing examples
-
• Basic example
This example demonstrates how pricing is calculated for an auto scaling–enabled table with the provisioned capacity mode. Auto scaling continuously sets provisioned capacity in response to actual consumed capacity so that actual utilization stays near target utilization.
Assume that you create a new DynamoDB Standard table in the EU (Germany) Region with target utilization set to the default value of 70 percent, minimum capacity units at 100 RCUs and 100 WCUs, and maximum capacity set to 400 RCUs and 400 WCUs (see Limits in DynamoDB). For simplicity, assume that each time a user interacts with your application, one write of 1 KB and one strongly consistent read of 1 KB are performed.
For the first 10 days, assume that the consumed RCUs and WCUs vary between 1 and 70. Auto scaling does not trigger any scaling activities and your bill per hour is €0.0938 (€0.0783 for the 100 WCUs provisioned [€0.000782578 * 100] and €0.0157 for the 100 RCUs [€0.0001565156 * 100]).
Now assume that on day 11 the consumed capacity increases to 100 RCUs and 100 WCUs. Auto scaling starts triggering scale-up activities to increase the provisioned capacity to 143 WCUs and 143 RCUS (100 consumed ÷ 143 provisioned = 69.9 percent). The per-hour bill is €0.1339 (€0.1119 for 143 WCUs and €0.0224 for 143 RCUs).
On day 21, assume the consumed capacity decreases to 80 RCUs and 80 WCUs. Auto scaling starts triggering scale-down activities to decrease provisioned capacity to 114 WCUs and 114 RCUs (80 consumed ÷ 114 provisioned = 70.2 percent). The per-hour bill is €0.1079 (€0.0892 for 114 WCUs and €0.0178 for 114 RCUs).
For the month, you will be charged €80.53 as follows:
Days 1 – 10: €22.51 (€0.0938 per hour x 24 hours x 10 days)
Days 11 – 20: €32.14 (€0.1339 per hour x 24 hours x 10 days)
Days 21 – 30: €25.90 (€0.1079 per hour x 24 hours x 10 days)
Data storage: Assume your table occupies 25 GB of storage at the beginning of the month and grows to 29 GB by the end of the month, averaging 27 GB based on the continuous monitoring of your table size. With your table class set to DynamoDB Standard, the storage is charged at €0.3019784103 per GB, resulting in a table storage cost of €8.15 (27 GB x €0.3019784103) for the month.
For the month, your total bill will be €88.68, a total that includes €80.53 for read and write capacity and €8.15 for data storage.
-
• Detailed example
This example demonstrates how pricing is calculated for an auto scaling–enabled table with provisioned capacity mode. Auto scaling continuously sets provisioned capacity in response to actual consumed capacity so that actual utilization stays near target utilization.
Assume you create a new table in the EU (Germany) Region with target utilization set to the default value of 70 percent, minimum capacity units at 100 RCUs and 100 WCUs, and maximum capacity set to 400 RCUs and 400 WCUs (see Limits in DynamoDB). Auto scaling operates with these limits, not scaling down provisioned capacity below the minimum or scaling up provisioned capacity above the maximum. When the table is created, auto scaling starts by provisioning the minimum capacity units. For simplicity, assume that each time a user interacts with your application, 1 write of 1 KB and 1 strongly consistent read of 1 KB are performed.
In the first hour after table creation, assume that the consumed RCUs and WCUs vary between 1 and 70. The actual utilization correspondingly varies between 1 percent (1 consumed ÷ 100 provisioned) and 70 percent (70 consumed ÷ 100 provisioned), within the target utilization of 70 percent. Auto scaling does not trigger any scaling activities and your bill for the hour is €0.0938 (€0.0783 for the 100 WCUs provisioned [€0.000782578 * 100] and €0.0157 for the 100 RCUs [€0.0001565156 * 100]).
During the second hour, assume the consumed capacity increases to 100 RCUs and 100 WCUs, which results in an actual utilization increase to 100 percent (100 consumed ÷ 100 provisioned), well above the target utilization of 70 percent. Auto scaling starts triggering scale-up activities to increase the provisioned capacity to bring actual utilization closer to the target of 70 percent. The result is a provisioned capacity of 143 WCUs and 143 RCUs (100 consumed ÷ 143 provisioned = 69.9 percent). The bill for this second hour is €0.1339 (€0.1119 for 143 WCUs and €0.0224 for 143 RCUs).
During the third hour, assume the consumed capacity decreases to 80 RCUs and 80 WCUs, which results in an actual utilization decrease to 56 percent (80 consumed ÷ 143 provisioned), well below the target utilization of 70 percent. Auto scaling starts triggering scale-down activities to decrease provisioned capacity to bring actual utilization closer to the target of 70 percent, resulting in provisioned capacity of 114 WCUs and 114 RCUs (80 consumed ÷ 114 provisioned = 70.2 percent). The bill for this third hour is €0.1079 (€0.0892 for 114 WCUs and €0.0178 for 114 RCUs).
For simplicity, assume that your consumed capacity remains constant at 80 RCUs and 80 WCUs. Your table also remains provisioned for 114 WCUs and 114 RCUs, with a daily charge of €2.5896, broken out as:
114 WCUs x €0.000782578 per hour x 24 hours = €2.1417
114 RCUs x €0.0001565156 per hour x 24 hours = €0.4279
For the month, you are charged €77.69:
Day 1 total: €2.5896 per day
Hour 1: €0.0938 per hour
Hour 2: €0.1339 per hour
Hours 3-24: €0.1079 per hour
Days 2-30: €2.5896 per day
Data storage: Assume your table occupies 25 GB of storage at the beginning of the month and grows to 29 GB by the end of the month, averaging 27 GB based on the continuous monitoring of your table size. With your table class set to DynamoDB Standard, the storage is charged at €0.3019784103 per GB, resulting in a table storage cost of €8.15 (27 GB x €0.3019784103) for the month.
Backup and restore: If the sum of all your on-demand backup storage is 60 GB for a 30-day month, the monthly cost of your backups is (€0.1207913641 x 60 GB) = €7.25/month. However, if you then delete 15 GB of your on-demand backup data 10 days into the monthly cycle, you are billed (€0.1207913641 x 60 GB) - (€0.1207913641 x 15 GB x 20/30) = €6.04/month.
Now assume that in addition to performing on-demand backups, you use continuous backups. The size of your table is 29 GB, resulting in a monthly cost of (€0.2415827282 x 29 GB) = €7.01/month.
If you need to restore your 29 GB table once during the month, that restore costs (€0.1811870462 x 29 GB) = €5.25.
Change data capture for Kinesis Data Streams: Now assume you enable streaming to a Kinesis data stream to process your data changes using Amazon Kinesis services. Also assume that your write throughput is consistent with the previous example. Your application performs 80 writes of 1 KB per second. DynamoDB charges one change data capture unit for each write of 1 KB it captures to the Kinesis data stream. Over the course of a month, this results in (80 x 3,600 x 24 x 30) = 207,360,000 change data capture units. Your monthly cost will be (€0.1204 x 207,360,000/1,000,000) = €24.97.
Data export to Amazon S3: Let’s say you want to export table backups to Amazon S3 for analysis. If the size of your table at the specified point in time is 29 GB, the resulting export costs are: (€0.1207913641 x 29 GB) = €3.50.
DynamoDB Streams: Now assume you enable DynamoDB Streams and build your application to perform one read request per second against the streams data. Over the course of a month, this results in 2,592,000 streams read requests, which are charged at €0.0000002418 per request, resulting in a cost of €0.63 (2,592,000 x €0.0000002418).
In summary, your total monthly charges for a single-Region DynamoDB table are:
- In summary, your total monthly charges for a single-Region DynamoDB table are:
- Provisioned capacity: €77.69
- Data storage: €8.15
- On-demand backup: €6.04
- Continuous (PITR) backup: €7.01
- Table restore: €5.25
- Change data capture for Kinesis Data Streams: €24.97
- Data export to Amazon S3: €3.50
- DynamoDB Streams: €0.63
Total charges: €133.24
-
• Example using different table classes
In this example, we will demonstrate how you can reduce your table’s monthly charges by choosing the DynamoDB table class that best suits your table’s storage and data access patterns.
Assume you have a table in the EU (Germany) Region. Your table already occupies 1 TB of historical data. The data is not frequently accessed but needs to be immediately available to your users when needed. Now, assume your data storage grows to 1.4 TB by the end of the month, averaging 1.2 TB based on continuous monitoring of your table size. Your table has a steady predictable traffic pattern. You hence provisioned it to 160 WCUs and 160 RCUs knowing that the utilization will not exceed 70 percent of the provisioned capacity within the month.
We will start by estimating your table’s monthly charges using the DynamoDB Standard table class.
Monthly charges using DynamoDB Standard table class
Setting your table class to DynamoDB Standard, you will be billed as follows.
Data Storage: Using the DynamoDB Standard table class, the 1.2 TB of storage are charged at €0.3019784103 per GB, resulting in a table storage cost of €362.37 for the month.
Provisioned capacity:You will be charged for:
160 WCUs x €0.000782578 per hour x 24 hours x 10 30 days = €90.19 for the provisioned write capacity,
135 160 RCUs x €0.0001565156 per hour x 24 hours x 10 30 days = €18.04 for the provisioned read capacity.
In summary, your total monthly charges using DynamoDB Standard table class are:
- Provisioned capacity: €108.23
- Data storage: €362.37
Your total monthly charges using the DynamoDB Standard table class are €470.60.
Monthly charges using DynamoDB Standard-IA table class
As shown previously, when using the DynamoDB Standard table class, the storage cost is greater than 50 percent of the provisioned capacity cost. When storage is the dominant cost (greater than 50 percent of provisioned capacity cost) using DynamoDB Standard table class, you can optimize for cost by switching to the DynamoDB Standard-IA table class. Given the same workload, now assume that you switched the table class to DynamoDB Standard-IA at the beginning of the next month. You will be billed as follows.
Data storage: The 1.2 TB of storage are charged at €0.1207913641 per GB, resulting in a table storage cost of €144.95 for the month.
160 WCUs x €0.0009779758 per hour x 24 hours x 10 30 days = €112.49 for the provisioned write capacity,
160 RCUs x €0.0001956939 per hour x 24 hours x 10 30 days = €22.51 for the provisioned read capacity.
In summary, your total monthly charges using DynamoDB Standard-IA table class are:
- Provisioned capacity: €135.00
- Data storage: €144.95
Your total monthly charges using DynamoDB Standard-IA table class are €279.95. Switching your table to DynamoDB Standard-IA reduced your table's total monthly charges by 37.6%, or €190.65.
Additional pricing resources
Easily calculate your monthly costs with AWS
Contact AWS specialists to get a personalized quote