Amazon DynamoDB

Page-Illo_PricingCalculator_Wallet_1x

AWS Pricing Calculator

Calculate your Amazon DynamoDB and architecture cost in a single estimate.

With on-demand capacity mode, you pay per request for the data reads and writes your application performs on your tables. You do not need to specify how much read and write throughput you expect your application to perform, as DynamoDB instantly accommodates your workloads as they ramp up or down. This page details how DynamoDB charges for the core and optional features of DynamoDB.

Key terms

Read request unit: API calls to read data from your table are billed in read request units. DynamoDB read requests can be either strongly consistent, eventually consistent, or transactional. A strongly consistent read request of up to 4 KB requires one read request unit. For items larger than 4 KB, additional read request units are required. For items up to 4 KB in size, an eventually consistent read request requires one-half read request unit, and a transactional read request requires two read request units. For example, a strongly consistent read request of an 8 KB item requires two read request units, an eventually consistent read of an 8 KB item requires one read request unit, and a transactional read of an 8 KB item requires four read request units. See Read Consistency for more details.

Write request unit: API calls to write data to your table are billed in write request units. A standard write request unit can write an item up to 1 KB. For items larger than 1 KB, additional write request units are required. A transactional write requires two write request units. For example, a write request of a 1 KB item requires one write request unit, a write request of a 3 KB item requires three write request units, and a transactional write request of a 3 KB item requires six write request units.

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

 

Write request

Writes data to your table

Write request unit

 

Read request

Reads data from your table

Read request unit

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 data changes on a table and replicates them to Kinesis Data Streams 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

  • When you select on-demand capacity mode for your DynamoDB table, you pay only for the reads and writes your application performs. You can make API calls as needed without managing throughput capacity on the table. DynamoDB handles the management of hardware resources to accommodate your workload with consistent, low-latency performance. DynamoDB charges one write request unit for each write (up to 1 KB) and two write request units for transactional writes. For reads, DynamoDB charges one read request unit for each strongly consistent read (up to 4 KB), two read request units for each transactional read, and one-half read request unit for each eventually consistent read. The prices for read and write requests depend on your table class.

  • 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 Developer Guide to learn more. The price for data storage depends on your table class.

  • 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). 

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

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

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

  • 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 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. You are not charged for GetRecords API calls invoked by AWS Lambda as part of DynamoDB triggers.

  • 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

  • This example demonstrates how DynamoDB charges using on-demand capacity mode.

    Assume you create a new DynamoDB Standard table in the EU (Germany) Region. Because this table is for a new application, you do not know what your traffic patterns will be. 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.

    For a period of 10 days, you receive little traffic to your application, resulting in 10,000 reads and 10,000 writes on your table each day. However, on day 11 your application gains attention on social media, and application traffic spikes to 2,500,000 reads and 2,500,000 writes that day. DynamoDB scales to deliver a seamless experience to your users. Your application then settles into a more regular traffic pattern, averaging 50,000 reads and 50,000 writes each day through the end of the month. The following table summarizes your total usage for the month.

    Timeframe (Day of Month)

    Total Writes

    Total Reads

    1–10

    100,000 writes (10,000 writes x 10 days)

    100,000 reads (10,000 reads x 10 days)

    11

    2,500,000 writes

    2,500,000 reads

    12–30

    950,000 writes (50,000 writes x 19 days)

    950,000 reads (50,000 reads x 19 days)

    Monthly total

    3,550,000 writes

    3,550,000 reads

    Monthly bill

    €2.67 (€0.7525 per million writes x 3.55 million writes)

    0.53 (€0.1505 per million reads x 3.55 million reads)

    Data storage: Assume your table occupies 27 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 DynamoDB continuous monitoring. 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 bill will be €11.35, a total that includes €3.20 for reads and writes and €8.15 for data storage.

  • This example demonstrates how DynamoDB charges using on-demand capacity mode.

    Assume you create a new DynamoDB Standard table in the EU (Germany) Region. Because this table is for a new application, you do not know what your traffic patterns will be. 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.

    For a period of seven days, you receive little traffic to your application, resulting in 1,000 writes and reads to your table each day. However, on the eighth day your application gains the attention of a prominent influencer in your industry, and application traffic unexpectedly spikes to 10,000,000 writes and reads for the day. Your application then settles into a more regular traffic pattern, averaging 150,000 writes and reads each day for the next two weeks. Traffic then begins to trail off quickly, with transactions dropping to 10,000 writes and reads per day for the next seven days.

    Finally, unexpected attention on social media causes your application to go viral. For the final day of the month, your application performs 30,000,000 writes and reads on your table. The following table summarizes your total usage for the month.

    Timeframe (Day of Month)

    Total Writes

    Total Reads

    1–7

    7,000 writes (1,000 writes x 7 days)

    7,000 reads (1,000 reads x 7 days)

    8

    10,000,000 writes

    10,000,000 reads

    9–22

    2,100,000 writes (150,000 writes x 14 days)

    2,100,000 reads (150,000 reads x 14 days)

    23–29

    70,000 writes (10,000 writes x 7 days)

    70,000 reads (10,000 reads x 7 days)

    30

    30,000,000 writes

    30,000,000 reads

    Monthly total

    42,177,000 writes

    42,177,000 reads

    Monthly bill

    €31.74 (€0.7525 per million writes x 42.177 million writes)

    €6.35 (€0.1505 per million reads x 42.177 million reads)

    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 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 were 60 GB for a 30-day month, the monthly cost of your backups would be (€0.1207913641 x 60 GB) = €7.25/month. However, if you 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 average size of your table is 27 GB, resulting in a monthly cost of (€0.2415827282 x 27 GB) = €6.52/month. If you need to restore your table at the end of the month, the cost is (€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. DynamoDB charges one change data capture unit for each write of 1 KB it captures to the Kinesis data stream. Assuming your application write traffic from earlier in this example is consistent for your Kinesis data stream, this results in 42,177,000 change data capture units over the course of the month. Your monthly cost will be  (€0.1204 x 42,177,000/1,000,000) = €5.08.

    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: 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:

    • Write traffic: €31.74
    • Read traffic: €6.35
    • Data storage: €8.15
    • On-demand backup: €6.04
    • Continuous (PITR) backup: €6.52
    • Table restore: €5.25
    • Change data capture for Kinesis Data Streams: €5.08
    • Data export to Amazon S3: €3.50
    • DynamoDB Streams: €0.63

    Total charges: €73.26

  • 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 traffic pattern within the month that results in a total of 42.5 million writes and 42.5 million reads. 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.

    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.2TB of storage are charged at €0.3019784103 per GB, resulting in a table storage cost of €362.37 for the month.

    Reads and writes: You will be charged for
    42.5 million writes x €0.7525 per million writes = €31.98 for write requests,
    42.5 million reads x €0.1505 per million reads = €6.40 for read requests.


    In summary, your total monthly charges using DynamoDB Standard table class are:

    Write traffic: €31.98

    Read traffic: €6.40

    Data storage: €362.37

    Your total monthly charges using the DynamoDB Standard table class are €400.75.

    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 costs of reads and writes. When storage is the dominant cost (greater than 50 percent of the costs of reads and writes) 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.

    Reads and writes: You will be charged for

    42.5 million writes x €0.9425 per million writes = €40.06 for write requests,
    42.5 million reads x €0.188 per million reads = €7.99 for read requests.

    In summary, your total monthly charges using DynamoDB Standard-IA table class are:
    Write traffic: €40.06

    Read traffic: €7.99

    Data storage: €144.95

    Total charges using DynamoDB Standard-IA table class: €193.00.

    Using DynamoDB Standard-IA for your table reduces your table's total monthly charges by 50.9%, or €207.75.

Additional pricing resources

AWS Pricing Calculator

Easily calculate your monthly costs with AWS

Get pricing assistance

Contact AWS specialists to get a personalized quote