You’re not alone if you’ve had trouble understanding Amazon DynamoDB pricing. Getting a handle on DynamoDB costs can be complex and tedious.
But with the right tools and resources, it doesn’t have to be. In this bookmarkable guide, we’ll break it down step-by-step so you can tell what drives DynamoDB costs.
That’s a big deal because you can then pinpoint where and when to reduce your DynamoDB costs with confidence — without sacrificing performance or any of the DynamoDB features you care about.
First, a quick background.
What Does DynamoDB Do?
Amazon DynamoDB is a modern Database-as-a-Service (DBaaS) offered by Amazon Web Services (AWS). DynamoDB is best known for being a fully managed, NoSQL database service.
This is great because it frees your team from the time-consuming work of provisioning, scaling, and maintaining hardware while also patching software issues.
Here are some key DynamoDB features you get when you subscribe.
- NoSQL database. Traditional relational databases follow ACID (atomicity, consistency, isolation, durability) principles, and operations are based on well-defined tables. DynamoDB is a Not Only SQL (NoSQL) service; a key-value store (schemaless) that supports various data types, including scalar, set, and document types.
- Serverless. DynamoDB is a fully managed, cloud-native, and single-millisecond latency database. You don’t have to set up, scale, and maintain any hardware or patch software.
- High-performance database service. DynamoDB uses fast Solid State Disks and creates DynamoDB tables that can store and retrieve any amount of data drawn from various data sources.
- Data security. DynamoDB encrypts all data at rest. You get to choose what type of key to encrypt your table at the creation point.
- High durability. DynamoDB provides data protection by storing it across three Availability Zones in an AWS Region. You can back up and restore Amazon DynamoDB tables on demand. Point-in-time recovery (up to the last 35 days) helps safeguard your tables from unintended write or delete operations.
- High scalability. You can also ramp up or scale down your table’s throughput capacity at any time without downtime, automatically scaling to meet demand and reducing unnecessary DynamoDB spend.
- Pay-as-You-Go pricing. You pay for only what you use, which we break down below.
Amazon DynamoDB Use Cases
DynamoDB is an ideal service for high-performance applications as it is fast, NoSQL, and highly available (single-digit millisecond latency). These include use cases that require fast and reliable read/write operations, such as streaming, IoT, gaming leaderboards, and high-traffic e-commerce applications.
Yet, understanding pricing for Amazon DynamoDB can help you assess how well-suited the service is to specific use cases in your business.
Amazon DynamoDB Costs Explained: How Does DynamoDB Pricing Work?
DynamoDB pricing is based on three main factors; reading (reads), writing (writes), and storing data. These are the core DynamoDB features. There are additional charges for optional features.
DynamoDB optional features include the following:
- Data transfer out
- On-demand backup
- Continuous backup
- Restore from backup
- Global tables
- DynamoDB Streams
- Data export to Amazon S3
- Data import from Amazon S3
- Change data capture for AWS Glue
- Change data capture for Amazon Kinesis Data Streams
Here’s the thing, and this is important to note.
How much you pay for DynamoDB is based on the pricing mode you choose; On-Demand Capacity vs Provisioned Capacity. On-Demand Mode allows you to scale DynamoDB tables and operations as your workload changes. This flexibility works a lot like Amazon EC2 On-Demand instances do.
On the other hand, provisioned mode requires you to specify how many read/write requests per second you need in advance (but can auto-scale to meet changing needs at additional fees, of course). Think of this as you would Amazon EC2 Reservations (cheaper rates for committing to a certain usage level over a given period).
Here’s the kicker. The specific DynamoDB capacity mode you choose also determines how much you pay for each pricing factor we highlighted earlier.
That’s not all.
Amazon DynamoDB charges are based on billing units, not dollar amounts. This means that each pricing factor has a unique billing unit. And you’ll need to remember each if you want to understand how DynamoDB pricing works. An unnecessary hassle, you say?
Not to worry. Here’s a quick table with the details you’ll want to know.
DynamoDB pricing factor | Description and options | Billing Unit |
Read Request | API calls to read data from your tables Read Types: Transactional, Eventually consistent, and Strongly consistent Read operation types: Scan, Query, GetItem | Read Request Units (RRUs) for On-Demand Mode Read Capacity Units (RCUs) for Provisioned Mode |
Write Request | API calls to write data to your tables Types: Standard and Transactional | Write Request Units (WRUs) for On-Demand Mode Write Capacity Units (WCUs) for Provisioned Mode |
Data storage | Store data. Includes indexes (Local secondary index, Global secondary index, none) | Per Gigabytes per month (GB-month) |
Backup and restore |
| Per Gigabyte per month (GB-month) |
Global tables | Data replication to create a multi-active, multi-region table | Replicated write capacity units (rWCUs) or Replicated write request units (rWRUs) |
Change data capture for Amazon Kinesis Data Streams | Capture item-level data modifications on a table. Then replicates them to Kinesis Data Streams | Change data capture units |
Change data capture for AWS Glue | Capture item-level data modifications on a table. Then replicates them to AWS Glue | Change data capture units |
Data export to Amazon S3 | Save or export table backups from a specific point in time to S3 storage | Per Gigabyte (per GB) |
Data import from Amazon S3 | Upload data from S3 to new DynamoDB tables | Per Gigabyte (per GB) |
DynamoDB Streams | Get a time-ordered history of item-level changes on a DynamoDB table | Streams read request units |
Data transfer out | Migrate data out to other AWS Regions | Per Gigabyte (per GB) |
When you integrate with DynamoDB Accelerator (DAX) | Reduce latency from milliseconds to microseconds | Per node-hour consumed based on the instance type you choose |
Table: A list of DynamoDB pricing factors, what they do, and their billing units.
How Much Does DynamoDB Cost?
As we mentioned moments earlier, DynamoDB charges are based on the type of capacity mode you choose; On-Demand or Provisioned mode.
Here are the basics for calculating and understanding costs for each capacity mode available in DynamoDB.
Pricing for DynamoDB On-Demand Capacity Mode explained
DynamoDB On-Demand capacity mode prices depend on the type of request (read, write, or storage), operation (transactional, eventually consistent, strongly consistent), table class you use (Standard, Standard Infrequent Access), and AWS Region you are based in.
Prices for DynamoDB On-Demand reads and writes are as follows:
For writes:
- Each write costs 1 write request unit (WRU) for items up to 1KB (costs more RPUs if it is larger)
- A transactional write costs 2 WRUs
For reads:
- Each strongly consistent read costs 1 read request unit (RRU) for items up to 4KBs (larger items require additional RRUs)
- A transactional read costs 2 RRUs
- An eventually consistent read costs 0.5 RRU
Quick example: A strong read request for a 2 KB item will consume 1 RRU. A transactional read request for it would consume 2 WCUs while an eventually consistent read request for a similar-size item will cost 1 RRU.
In addition, if you choose the Standard table class in the US East (Ohio) Region, expect to pay $1.25 per million WRUs for writes and $0.25 per million RRUs for reads. And if you pick the Standard Infrequent Access table class, prices start at $1.56 per million WRUs for writes and $0.31 per million RRUs for reads.
Pricing for data storage in DynamoDB’s On-Demand capacity mode starts at $0.25 per GB-month for the Standard table class and $0.10 for the Standard Infrequent Access tale class.
Here’s a neat table that makes it easier to digest the prices.
DynamoDB operation | Description and options | Prices in the US East (Ohio) region |
Read Request | Standard table class Standard Infrequent Access table class |
$0.25 per million RRUs $0.31 per million RRUs |
Write Request | Each API call to write data to a table Standard table class Standard Infrequent Access table class | 1 WRU up to 1KB 2 WRUs for transactional writes $1.25 per million WRUs $1.56 per million WRUs |
Data storage | Standard table class Standard Infrequent Access table class | Free for the first 25GB per month $0.25 per GB-month after that $0.10 per GB-month |
Backup and restore |
| $0.10 per GB-month for warm backup storage $0.03 per GB-month for cold backup storage $0.20 per GB-month $0.15 per GB for warm backup storage $0.20 per GB for cold backup storage |
Global tables | On-demand data replication to create a multi-active, multi-region table Standard table class Standard Infrequent Access table class | $1.875 per million rWRUs $2.344 per million rWRUs |
Change data capture for Amazon Kinesis Data Streams | Up to a 1KB write | $0.10 per million change data capture for Kinesis Data Streams |
Change data capture for AWS Glue | Up to a 1KB write | $0.10 per million change data capture for AWS Glue |
Data export to Amazon S3 | Point-in-time recovery data from DynamoDB to S3 in Amazon Ion and DynamoDB JSON formats | $0.10 per GB for either a full export or an incremental export to Amazon S3 |
Data import from Amazon S3 | Pricing is based on uncompressed file size in Amazon S3 (DynamoDB JSON, CSV, Amazon Ion formats) | $0.15 per GB |
DynamoDB Streams | GetRecords API call (streams read request unit) returns up to 1MB of data from Streams | $0.02 per 100,000 streams read request units after the first 2.5 million (which are free every month) |
Data transfer out | Migrating data out to other AWS Regions, accounts, etc, incurs costs on both ends of the transfer | The first 100 GB is free per month (aggregated across all services and regions) $0.10 per GB for the 10TB-month after the free tier Up to $0.05 per GB for over 150TB-month |
When you integrate with DynamoDB Accelerator (DAX) | Pricing is per node-hour consumed based on the instance type you choose | Starts at $0.04 per hour for dax.t3.small (2vCPU, 2GiB memory) up to $8.59 per hour dax.r4.16xlarge (64vCPU, 488GiB memory) |
Table: DynamoDB pricing in dollars.
DynamoDB’s costs vary slightly if you use Provisioned Capacity. Over time, however, these small differences can add up to a lot of savings (or unnecessary bill items) as your workload increases. Consider the following.
Pricing for DynamoDB Provisioned Capacity Mode explained
Here, you specify how many writes and reads your application requires per second. However, actual billing is based on an hourly rate.
Pricing for Provisioned Capacity mode in DynamoDB is calculated based on:
For reads:
- Each strongly consistent read request per second requires 1 Read Capacity Unit (RCU) for items up to 4KBs
- 2 eventually consistent read requests per second require 1 RCU for items up to 4KBs
- Each transactional read request per second requires 2 RCUs for items up to 4KBs
Larger items require more RCUs, which are priced in 4KB increments.
For writes:
- Each standard write request per second requires 1 WCU for items up to 1KB in size (you’ll need more WCUs for larger items)
- Each transactional write request per second requires 2 WCUs for items up to 1KB
Quick example: A standard write request for a 2 KB item will consume 2 WCUs while a transactional write request for a 5 KB item would consume 10 WCUs.
Let’s organize all of it into a table.
DynamoDB Operation | Description and options | Prices based on the US East (Ohio) Region |
Read Request | Standard table class Standard Infrequent Access table class Reserved capacity:
| 2 RCUs for each transactional read per second 1 RCU for 2 eventually consistent reads per second 1RCU for each strongly consistent read per second $0.00013 per RCU hourly $0.00016 per RCU hourly $150 when paid upfront, 1 year commitment and $0.0128 per hour, 1 year commitment $30 when paid upfront, 1 year commitment or $0.0025 per hour, 1 year commitment |
Write request | Each API call to write data to a table Standard table class Standard Infrequent Access table class | 1 WRU up to 1KB 2 WRUs for transactional writes $0.00065 per WCU per hour $0.00081 per WCU per hour |
Data storage | Standard table class Standard Infrequent Access table class | Free for the first 25GB per month $0.25 per GB-month after that $0.10 per GB-month |
Backup and restore |
| $0.10 per GB-month for warm backup storage $0.03 per GB-month for cold backup storage $0.20 per GB-month $0.15 per GB for warm backup storage $0.20 per GB for cold backup storage |
Global tables | On-demand data replication to create a multi-active, multi-region table Standard table class Standard Infrequent Access table class | $0.000975 per rWCU per hour $0.00121875 per rWCU per hour |
Change data capture for Amazon Kinesis Data Streams | Up to a 1KB write | $0.10 per million change data capture for Kinesis Data Streams |
Change data capture for AWS Glue | Up to a 1KB write | $0.10 per million change data capture for AWS Glue |
Data export to Amazon S3 | Point-in-time recovery data from DynamoDB to S3 in Amazon Ion and DynamoDB JSON formats | $0.10 per GB for either a full export or an incremental export to Amazon S3 |
Data import from Amazon S3 | Pricing is based on uncompressed file size in Amazon S3 (DynamoDB JSON, CSV, Amazon Ion formats) | $0.15 per GB |
DynamoDB Streams | GetRecords API call (streams read request unit) returns up to 1MB of data from Streams | $0.02 per 100,000 streams read request units after the first 2.5 million (which are free every month) |
Data transfer out | Migrating data out to other AWS Regions, accounts, etc, incurs costs on both ends of the transfer | The first 100 GB is free per month (aggregated across all services and regions) $0.10 per GB for the 10TB-month after the free tier Up to $0.05 per GB for over 150TB-month |
When you integrate with DynamoDB Accelerator (DAX) | Pricing is per node-hour consumed based on the instance type you choose | Starts at $0.04 per hour for dax.t3.small (2vCPU, 2GiB memory) up to $8.59 per hour dax.r4.16xlarge (64vCPU, 488GiB memory) |
Table: Prices for DynamoDB’s Provisioned Capacity mode.
If all these manual calculations seem a little too much, that’s because they are. But there is a way to get around them without losing the level of cost intelligence you need to make crucial DynamoDB cost tradeoffs.
How To Control And Optimize Amazon DynamoDB Costs – The Smarter Way
You may have noticed by now that calculating DynamoDB costs can get a bit confusing.
Despite AWS’s Pricing Calculator for DynamoDB, understanding DynamoDB costs is still a challenge. With all the variables involved, such as the different billing units, it is easy to see why.
Here’s the thing, though. It’s difficult to figure out where to reduce DynamoDB usage without compromising performance while not understanding what factors are driving your DynamoDB costs.
In that case, CloudZero can help. Unlike conventional cost tools, CloudZero captures deep DynamoDB cost data. It then enriches it with insights from your apps and infrastructure. CloudZero then delivers your DynamoDB cost insights in detail without being overwhelming. These details include:
- You get clear, immediately actionable insights such as cost per customer, cost per project, and cost per feature. No jargon.
- Discover potential issues before they become costly problems with real-time DynamoDB cost insights.
- With timely, noise-free, and contextual cost anomaly alerts, you can address a technical issue before it gets out of hand (aka overspending).
- You won’t need countless tags to gather precise cost insights. CloudZero automatically organizes your costs in the context of your business after the initial setup.
- Our Certified FinOps experts will help you earn your ROI back quickly with ongoing consultations and best practices. Our customers save an average of 22% in the first year, and CloudZero typically pays for itself in three months or less.
- Single source of truth for all cloud costs. CloudZero allows you to collect, analyze, and optimize costs across AWS, Azure, GCP, Kubernetes, Databricks, MongoDB, Snowflake, Datadog, New Relic, and more.
New Relic, Drift, and Upstart are some of the ambitious brands already using CloudZero. Upstart reduced its cloud costs by $20 million dollars with the help CloudZero!
With CloudZero, Remitly now allocates 50% more costs without tagging. Want to get similar results or better? Here’s your risk-free chance. to experience CloudZero for yourself.
DynamoDB Pricing FAQ
What does the DynamoDB Free Tier offer?
It offers 25 provisioned Write Capacity Units (WCU) and 25 provisioned Read Capacity Units (RCU). These can handle 200M requests each month. Also, the DynamoDB Free Tier offers 25GB of free storage per month.
What are the factors that affect Amazon DynamoDB pricing?
You are charged based on your read/write requests, data storage, and data transfers out, as well as optional features, such as backups/restores.
How much does DynamoDB cost per month?
Your DynamoDB spend will depend on the DynamoDB features you choose and how much you use them. You pay only for what you use.
Is DynamoDB worth it?
Yes, depending on your use case. With DynamoDB, you’ll have a reliable, fully managed, NoSQL database at your disposal. With its vast amount of data and flexibility across AWS services, it can also be more affordable than many DynamoDB alternatives.
Does DynamoDB provide good or reliable long-term storage?
Amazon DynamoDB’s Standard Infrequent Access tables are designed and optimized for long-term data storage while the Standard table class is suitable for rapidly changing data.