DynamoDB - How AWS Pricing Works

DynamoDB

DynamoDB is a fast and flexible NoSQL database service for all applications that need consistent, single-digit millisecond latency at any scale. It is a fully-managed cloud database and supports both document and key-value store models. Its flexible data model, reliable performance, and automatic scaling of throughput capacity make it a great fit for mobile, web, games, advertising technology (ad tech), IoT, and many other applications.

Amazon DynamoDB pricing at a glance

DynamoDB charges for reading, writing, and storing data in your DynamoDB tables, along with any optional features you choose to enable. DynamoDB has two capacity modes and those come with specific billing options for processing reads and writes on your tables: on-demand capacity mode and provisioned capacity mode.

DynamoDB read requests can be either strongly consistent, eventually consistent, or transactional.

On-Demand Capacity Mode

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. DynamoDB charges for the core and optional features of DynamoDB.

Table: Amazon DynamoDB on-demand pricing

Core Feature Billing unit

Details

Read request unit (RRU)

API calls to read data from your table are billed in RRUs.

A strongly consistent read request of up to 4 KB requires one RRU.

For items larger than 4 KB, additional RRUs are required.

For items up to 4 KB, an eventually consistent read request requires one-half RRU, and a transactional read request requires two RRUs.

Core Feature Billing unit Details
Write request unit (WRU)

Each API call to write data to your table is a WRU. A standard WRU can write an item up to 1 KB. Items larger than 1 KB require additional WRUs.

A transactional write requires two WRUs.

Example RRU:

  • A strongly consistent read request of an 8 KB item requires two RRUs.

  • An eventually consistent read request of an 8 KB item requires one RRU.

  • A transactional read request of an 8 KB item requires four RRUs.

Example WRU:

  • A write request of a 1 KB item requires one WRU.

  • A write request of a 3 KB item requires three WRUs.

  • A transactional write request of a 3 KB item requires six WRUs.

For details on how DynamoDB charges for the core and optional features of DynamoDB, see Pricing for On-Demand Capacity

Provisioned Capacity Mode

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.

Table: DynamoDB Provisioned Capacity Mode

Core Feature Billing unit

Details

Read Capacity unit (RCU)

API calls to read data from your table are RCUs.

For items up to 4 KB in size, one RCU can perform one strongly consistent read request per second.

For items larger than 4 KB, additional RCUs are required.

For items up to 4 KB, an eventually consistent read request requires one-half RCU, and a transactional read request requires two RCUs to perform one read per second.

Core Feature Billing unit Details
Write Capacity Unit (WCU)

Each API call to write data to your table is a write request.

For items up to 1 KB, 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.

Data Storage

DynamoDB monitors the size of tables continuously to determine storage charges.

DynamoDB measures the size of your billable data by adding the raw byte size of the data you upload plus a per-item storage overhead of 100 bytes to account for indexing.

The first 25 GB stored per month is free.

Example WCU

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

  • A transactional write request of a 3 KB item would require six WCUs.

Example RCU:

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

  • A transactional read of an 8 KB item would require four RCUs.

For details see Amazon DynamoDB pricing.

Data transfer

There is no additional charge for data transferred between DynamoDB and other AWS services within the same Region. Data transferred across Regions (for example, between DynamoDB in the US East (Northern Virginia) Region and Amazon EC2 in the EU (Ireland) Region) will be charged on both sides of the transfer.

Global tables

Global tables builds on DynamoDB’s global footprint to provide you with a fully-managed, multi-region, and multi-active database that provides fast local read and write performance for massively scaled, global applications. The Global tables feature replicates your DynamoDB tables automatically across your choice of AWS Regions.

DynamoDB charges for global tables usage based on the resources used on each replica table. Write requests for global tables are measured in replicated WCUs instead of standard WCUs. The number of replicated WCUs consumed for replication depends on the version of global tables you are using.

Read requests and data storage are billed consistently with the choice of table class, which could be either Standard table class or Standard-Infrequent Access table class (that is, tables that are not global tables). If you add a table replica to create or extend a global table in new Regions, DynamoDB charges for a table restore in the added regions per gigabyte of data restored. Cross-Region replication and adding replicas to tables that contain data also incur charges for data transfer out.

For more information, see Best practices and requirements for managing global tables.

Learn more about pricing for additional DynamoDB features at the Amazon DynamoDB pricing page.