Pay only for the resources DynamoDB provisions to achieve your target read and write capacity. Afterward, DynamoDB will auto scale your capacity based on usage. Optionally, you can directly specify read and write capacity if you prefer to manually manage table throughput. Estimate your monthly bill using the AWS Simple Monthly Calculator.
Amazon DynamoDB auto scaling eliminates the guesswork involved in provisioning adequate capacity when creating new tables. Auto scaling also reduces the operational burden of continuously monitoring consumed throughput and adjusting provisioned capacity manually. When you create a new DynamoDB table, auto scaling is enabled by default, with target utilization set at 70 percent (percentage of consumed capacity ÷ provisioned capacity), minimum capacity at 5 read capacity units and 5 write capacity units, and maximum capacity set to limits allowed for your account (see Limits in DynamoDB). Auto scaling continuously sets provisioned capacity in response to dynamically changing consumed capacity for actual utilization to stay near target utilization. DynamoDB billing is metered every hour, the exact timing being variable, by customer account. The following example demonstrates how pricing is calculated for an auto scaling–enabled table, assuming changes in consumed capacity, once every hour.
Assume you create a new table in the US East (N. Virginia) Region with target utilization set to the default value of 70 percent, minimum capacity units changed to 100 read capacity units and 100 write capacity units, and maximum capacity set to the default limit of 40,000 read capacity units and 40,000 write capacity units. Auto scaling will operate with these limits, not allowing scale-down of provisioned capacity below the minimum and scale-up provisioned capacity above the maximum. When the table is created, auto scaling starts by provisioning the minimum capacity units.
- In the first hour after table creation, assume that the consumed read and write capacity units vary between 1 and 70. The actual utilization would correspondingly vary between 1% (% of 1 consumed ÷ 100 provisioned) and 70% (% of 70 consumed ÷ 100 provisioned), within the target utilization of 70%. Auto scaling would not trigger any scaling activities and your bill for the hour would be $0.065 for the 100 write capacity units provisioned ($0.00065 * 100), and $0.013 for the 100 read capacity units ($0.00013 * 100).
- During the second hour, assume the consumed capacity when metered increases to 100 read capacity units and 100 write capacity units, which would result in an actual utilization increase to 100% (% of 100 consumed ÷ 100 provisioned), well above the target utilization of 70%. Auto scaling would then start triggering scale-up activities to increase the provisioned capacity to bring actual utilization closer to the target of 70%, resulting in provisioned capacity of 143 write capacity units and 143 read capacity units (% of 100 consumed ÷ 143 provisioned). The bill for this second hour would be $0.0925 for 143 write capacity units and $0.01859 for 143 read capacity units.
- During the third hour, assume the consumed capacity when metered decreases to 80 read capacity units and 80 write capacity units, which would result in an actual utilization decrease to 56% (% of 80 consumed ÷ 143 provisioned), well below the target utilization of 70%. Auto scaling would then start triggering scale-down activities to decrease provisioned capacity to bring actual utilization closer to the target of 70%, resulting in provisioned capacity of 114 write capacity units and 114 read capacity units (% of 80 consumed ÷ 114 provisioned). The bill for this third hour would be $0.0741 for 114 write capacity units and $0.01482 for 114 read capacity units.
Your monthly bill for the table is the sum total of the hourly pricing of the capacity provisioned by auto scaling through the month.
Assume that your application running in the US East (N. Virginia) Region needs to perform 5 million writes and 5 million reads per day on an Amazon DynamoDB table, while storing 8 GB of data. For simplicity, assume that your workload is relatively constant throughout the day and your table items are no larger than 1 KB in size.
- Write capacity units: 5 million writes per day equals 57.9 writes per second. 1 write capacity unit can handle 1 write per second, so you need 58 write capacity units. At $0.47 per write capacity unit per month, 58 write capacity units cost $27.26 per month.
- Read capacity units: 5 million reads per day equals 57.9 reads per second. 1 read capacity unit can handle 2 eventually consistent reads per second, so you need 29 read capacity units. At $0.09 per read capacity unit per month, 29 read capacity units cost $2.61 per month.
- Data storage: Your table occupies 8 GB of storage. At $0.25 per GB per month, your table costs $2.00.
Total cost is $31.86 per month ($27.14 of write provisioned throughput, $2.71 of read provisioned throughput, and $2.00 of data storage).
If you haven’t consumed your free tier allotment (25 write capacity units, 25 read capacity units, and 25 GB of storage), the total cost is $15.82 per month ($15.44 for the remaining 33 write capacity units, $0.37 for the remaining 4 read capacity units, and $0.00 for data storage).
Use the Simple Monthly Calculator to estimate DynamoDB costs for different resource requirements.
When you create or update your Amazon DynamoDB table, you specify the target utilization, minimum and maximum capacity limits for auto scaling, or how much capacity you wish to reserve for reads and writes. Behind the scenes, DynamoDB handles the provisioning of hardware resources to meet your throughput needs with consistent, low-latency performance. You pay a flat, hourly rate based on the capacity you provision. For tables with small-sized items, one unit of capacity can handle one request per second (or two requests per second in the case of eventually consistent reads). Tables with large items may require more units of capacity to handle the same request rate. For more information, see What is a read/write capacity unit.
If you can predict your need for Amazon DynamoDB read and write throughput, reserved capacity offers significant savings over the normal price of DynamoDB provisioned throughput capacity. You pay a one-time upfront fee and commit to paying for a minimum usage level at the following hourly rates for the duration of the reserved capacity term. Any throughput that you provision in excess of your reserved capacity is billed at standard provisioned throughput rates. Reserved capacity can only be purchased in blocks of 100 write capacity units or 100 read capacity units. If you have multiple accounts linked with consolidated billing, reserved capacity units purchased either at the payer account level or linked account level are shared with all accounts connected to the payer account. Reserved capacity is first applied to the account that purchased it and then any unused capacity is applied to other linked accounts.
Amazon DynamoDB is an SSD-backed data store and the amount of disk space your data consumes will exceed the raw size of the data you have uploaded. 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. You do not need to provision storage with DynamoDB. You are simply billed for what you use, as described above.
Data transfer “in” and “out” refer to transfer into and out of Amazon DynamoDB. There is no additional 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 US East [N. Virginia] Region and Amazon EC2 in the EU [Ireland] Region) is charged on both sides of the transfer. As part of the AWS Free Tier, AWS customers receive free 15 GB of data transfer out each month, aggregated across all AWS services for one year except in the AWS GovCloud (US) Region. For data transfer exceeding 500 TB per month, contact us.
Optional pricing details
Amazon DynamoDB Accelerator (DAX) is a fully managed, highly available, in-memory cache for DynamoDB. On-demand instances let you pay for DAX capacity by the hour and your DAX instances run with no long-term commitments. This frees you from the costs and complexities of planning, purchasing, and maintaining hardware, and it transforms what are commonly large fixed costs into much smaller variable costs.
Pricing is per node-hour consumed, from the time a node is launched until it is terminated. Each partial node-hour consumed will be billed as a full hour. Pricing applies to all individual nodes in the DAX cluster. For example, if you have a three-node DAX cluster, you will be billed for each of the separate nodes (three nodes in total) on an hourly basis. To maximize availability, we recommend creating a three-node cluster where each node is in a different Availability Zone (when possible).
DAX provides strong network-level security by allowing data transfer only from or to the Amazon EC2 instances you define as part of your security groups. There is no charge for data transfer between Amazon EC2 and DAX within the same Availability Zone. Though standard Amazon EC2 regional data transfer charges of $0.01 per GB in/out apply when transferring data between an Amazon EC2 instance and a DAX node in different Availability Zones of the same AWS Region, you are charged only for the data transfer into or out of the Amazon EC2 instance. There is no DAX data transfer charge for traffic into or out of the DAX node itself.
Global tables build on the global Amazon DynamoDB footprint to provide you with a fully managed, multi-region, and multi-master database that provides fast local read and write performance for massively scaled, global applications. Global tables replicate your DynamoDB tables automatically across your choice of AWS Regions.
Global tables are charged based on the resources associated with each replica table. Write capacity for global tables is represented by replicated write capacity units instead of standard write capacity units. For more details about provisioning throughput capacity for global tables, see Best Practices for Managing Capacity. Data transfer out pricing (for cross-region replication) varies by usage. See the "Data transfer" section earlier on this page for details.
With on-demand backups, you can create full backups of your Amazon DynamoDB table data and settings for data archiving, helping you meet your corporate and governmental regulatory requirements. You can back up tables from a few megabytes to hundreds of terabytes of data, with no impact on the performance or availability of your production applications.
On-demand backup is charged based on the storage size of the table (in other words, the 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 in an AWS account by AWS Region. You will be billed for the total size of your backups for the month less a prorated credit for any backups that are deleted within that billing month. AWS will continue to bill you for on-demand backups at the same rate until you delete the backups.
For example, assume that your application is running in the US East (N. Virginia) Region, and the sum of all your on-demand backup storage is 60 GB for a 30-day month. The monthly cost of your backups would be ($0.10 x 60 GB) = $6.00/month. If you deleted all your on-demand backup data 10 days into the monthly cycle, you would receive a $4 credit ($0.10 x 60 GB x 20/30), resulting in a bill of $2.00/month. Alternatively, if you deleted 15 GB of your on-demand backup data 10 days into the monthly cycle, you would be billed ($0.10 x 60 GB) - ($0.10 x 15 GB x 20/30) = $5.00/month.
Continuous backups and point-in-time recovery
Point-in-time recovery (PITR) provides continuous backups of your DynamoDB table data. You can enable PITR with a single click from the AWS Management Console or a single API call. When enabled, DynamoDB maintains continuous backups of your table for the preceding 35 days.
PITR is charged based on the current size of each DynamoDB table (table data, local secondary indexes) where it is enabled. AWS will continue to bill you until you disable PITR on each table.
Restoring a table
Restoring a table from on-demand backups or PITR is charged based on the total size of data restored (table data, global secondary indexes) for each request.
Amazon DynamoDB Streams is a time-ordered sequence of item-level changes on a DynamoDB table. There is no charge for enabling DynamoDB Streams. You pay only for reading data from DynamoDB Streams, measured in read request units. Each GetRecords API call is billed as a DynamoDB Streams read request unit and returns up to 1 MB of data from DynamoDB Streams.