使用预置容量模式,指定您的应用程序需要的每秒数据读取和写入次数。可以使用自动扩展根据指定的利用率自动调整表的容量以确保应用程序性能,同时降低成本。本定价页详细介绍了 DynamoDB 如何对 DynamoDB 的核心和可选功能收费。有关 AWS 中国区域的定价,请参阅 AWS 中国区域定价页面。
关键项目
读取容量单位 (RCU):从表中读取数据的每个 API 调用都是一个读取请求。读取请求可以是强一致性、最终一致性或事务性读取请求。对最大 4KB 的项目,一个 RCU 每秒可以执行一个强一致性读取请求。大于 4KB 的项目需要额外的 RCU。对最大 4KB 的项目,一个 RCU 每秒可以执行两个最终一致性读取请求。对最大 4KB 的项目,事务性读取请求需要两个 RCU 才能每秒执行一个读取请求。例如,对 8KB 项目的强一致性读取需要两个 RCU,对 8KB 项目的最终一致性读取需要一个 RCU,而对 8KB 项目的事务性读取需要四个 RCU。有关详细信息,请参阅读取一致性。
写入容量单位 (WCU):将数据写入表的每个 API 调用都是一个写入请求。对最大 1KB 的项目,一个 WCU 每秒可以执行一个标准写入请求。大于 1KB 的项目需要额外的 WCU。对最大 1KB 的项目,事务性写入请求需要两个 WCU 才能每秒执行一个写入请求。例如,对 1KB 项目的标准写入请求需要一个 WCU,对 3KB 项目的标准写入请求需要三个 WCU,而对 3KB 项目的事务性写入请求需要六个 RCU。
复制的写入请求单位 (rWCU):使用 DynamoDB 全局表时,您的数据将被自动写入所选择的多个 AWS 区域。每次写入都发生在本地区域和复制区域中。
流读取请求单位:DynamoDB 流的每个 GetRecords API 调用都是一个流读取请求单位。每个流读取请求单位最多可以返回 1MB 的数据。
事务性读取/写入请求:在 DynamoDB 中,事务性读取或写入与标准读取或写入不同,因为它保证单个事务集内包含的所有操作作为一个集合成功或失败。
DynamoDB 功能和计费概述
功能 |
功能 |
计费单位 |
|
核心功能 |
|||
|
预置写入容量 |
将数据写入表 |
WCU |
|
预置读取单位 |
从表读取数据 |
RCU |
|
数据存储 |
存储数据,包括索引值 |
GB-月 |
可选功能 |
|||
|
连续备份 |
前 35 天连续备份 |
GB-月 |
|
按需备份 |
在指定时间点创建快照备份 |
GB-月 |
|
基于备份还原 |
将表还原到特定快照或时间 |
GB |
|
全局表 |
复制数据以创建多区域、多主表 |
rWCU |
数据导出到 Amazon S3 | 将 DynamoDB 表备份从一个特定的时间点导出到 Amazon S3 | GB | |
|
DynamoDB Accelerator (DAX) |
通过内存缓存减少延迟 |
节点小时数 |
|
DynamoDB 流 |
在表上提供按时间顺序排列的项级更改序列 |
流读取请求单位 |
|
数据传出 |
将数据传输到其他 AWS 区域 |
GB |
DynamoDB 详细功能定价
-
• 读取和写入请求
预置容量
选择预置容量模式时,指定预计您的应用程序需要的读取和写入容量。可以使用自动扩展根据指定的利用率自动调整表的容量以确保应用程序性能,同时降低成本。DynamoDB 每秒对每个写入收取一个 WCU 费用(最大 1KB),每秒对每个事务性写入收取 2 个 WCU 费用。对于读取,DynamoDB 每秒对每个强一致性读取收取一个 RCU 的费用,每秒对每个事务性读取收取两个 RCU 的费用,每秒对每个最终一致性读取收取半个 RCU 的费用(最大 4KB)。您需要为 Amazon DynamoDB 表中预置的吞吐容量(读写)付费,即使您没有完全利用预置容量,也需要付费。您的 DynamoDB 表的实际读写性能可能会有所不同,并且可能小于预置的吞吐容量。
预留容量
预留容量的定价比 DynamoDB 预置的容量的标准价格便宜很多。您需支付一次性预付款,并承诺在使用预留容量期限内按最低吞吐量级别支付小时费率。对于您预置的超出预留容量的任何容量,将按照标准的预置容量费率收费。如果您具有多个与整合账单关联的账户,则您在付款人账户级别或关联账户级别购买的一定单位数量的预留容量将由与付款人账户相关联的所有账户共享。预留容量首先应用到购买它的账户,然后,剩余的未使用容量应用到其他关联账户。
您可以通过 AWS 管理控制台提交请求来购买 DynamoDB 预留容量。预留容量要以 100 个标准 WCU 或 100 个 RCU 为单位购买。您不能购买复制的 WCU 的数据块。购买 DynamoDB 预留容量时,必须指定 AWS 区域、数量和期限。您需要支付 (1) 一次性预付款,以及 (2) 根据您购买的 DynamoDB 预留容量,在使用期限内的小时费用。DynamoDB 预留容量还需遵守 AWS 客户协议或与我们就您使用我们的服务达成的其他协议项下适用的所有存储、数据传输和其他费用。
-
• 数据存储
不需要提供存储:DynamoDB 会不断监控表大小,以确定存储费用。DynamoDB 计算应计费数据大小的方法是,将上传的原始数据字节大小总和加上每个项目计入索引的 100 字节的存储开销。
-
• 备份与还原
DynamoDB 提供了两种方法来备份表数据。使用时间点恢复 (PITR) 进行连续备份,可以为表提供前 35 天的连续备份。可以将表还原到前五周内任何指定秒的状态。按需备份可以创建表快照,以便长期存档,帮助您满足企业和政府的监管要求。
连续备份 (PITR)
DynamoDB 根据针对其启用此功能的每个 DynamoDB 表的大小(表数据和本地二级索引)对 PITR 进行收费。DynamoDB 会在一个月内持续监控启用了 PITR 的表的大小,以确定备份费用,并继续向您收费,直到您禁用每个表上的 PITR 为止。
按需备份
DynamoDB 根据表的存储大小(表数据和本地二级索引)对按需备份进行收费。每次备份的大小是在每次备份请求时确定的。每月计费的总备份存储大小是 DynamoDB 表的所有备份的总和。DynamoDB 会在整个月内持续监控按需备份的大小,以确定您的备份费用。
还原表
从按需备份或 PITR 还原表根据为每个请求还原的总数据大小(表数据、本地二级索引和全局二级索引)进行收费。
-
• 全局表
DynamoDB 根据在每个副本表上使用的资源对全局表收费。按复制的 WCU 而不是标准的 WCU 衡量对全局表的写入请求。复制时所消耗的复制 WCU 数量取决于您正在使用的全局表的版本。如需了解更多信息,请参阅管理全局表的最佳实践和要求。读取请求和数据存储按标准表(非全局表)计费。如果您添加表副本以在新区域中创建或扩展全局表,DynamoDB 将在所添加的区域中按恢复的每 GB 数据收取费用。对于包含数据的表,跨区域复制和添加副本还会因数据传出而产生收费。有关详细信息,请参阅本定价页面的“数据传输”部分。
-
• 数据导出到 Amazon S3
使用此功能可将数据从 DynamoDB 连续备份(时间点恢复)导出到 Amazon S3。支持的输出数据格式为 DynamoDB JSON 和 Amazon Ion。您可以使用 Amazon Athena、Amazon SageMaker 和 AWS Lake Formation 之类的 AWS 服务分析导出的数据。
DynamoDB 将根据创建备份时每个 DynamoDB 表(表数据、本地二级索引和全局二级索引)在指定时间点的大小,对导出的数据收取费用。
对于在 Amazon S3 中存储导出的数据以及向您的 Amazon S3 存储桶发出的 PUT 请求,您需要支付额外费用。有关这些费用的更多信息,请参阅 Amazon S3 定价。
-
• DynamoDB Accelerator (DAX)
DynamoDB 按小时收取相关 DAX 容量费用,运行 DAX 实例时无需签订长期合约。定价是按消耗的节点小时数计算的,取决于您选择的实例类型。运行未满一小时的节点,按一小时计费。定价规则适用于 DAX 集群中的所有单个节点。例如,如果您有一个三节点 DAX 集群,您将按小时为每个单独的节点(总计三个节点)支付相关费用。
同一可用区内的 Amazon EC2 和 DAX 之间传输数据是免费的。在位于同一 AWS 区域、不同可用区的 Amazon EC2 实例和 DAX 代码之间传输数据时,收取标准 Amazon EC2 数据传输费用。但是,您只需要向 Amazon EC2 实例传入或传出的数据付费。DAX 节点本身传入或传出的流量并不需要支付 DAX 数据传输费用。
-
• DynamoDB 流
DynamoDB 按读取请求单位收取从 DynamoDB 流读取的数据的费用。每个 GetRecords API 调用是按 DynamoDB 流读取请求单位进行收费,并且最多可从 DynamoDB 流返回 1MB 的数据。流读取请求单位不同于 DynamoDB 表上的读取请求。对于 AWS Lambda 作为 DynamoDB 触发器的一部分所调用的 GetRecords API 调用,您不需要付费。您也无需为 DynamoDB 全局表调用的 GetRecords API 调用付费。
-
• 数据传输
数据“传入”和“传出”是指传入和传出 DynamoDB。DynamoDB 对入站数据传输不收费,对于在同一 AWS 区域内 DynamoDB 与其他 AWS 服务之间传输的数据,也不收费(即 0.00 USD/GB)。跨 AWS 区域(例如在美国东部 [弗吉尼亚北部] 区域的 DynamoDB 和欧洲 [爱尔兰] 区域的 Amazon EC2 之间)传输数据,则传输双方均需要付费。作为 AWS 免费套餐的一部分,您将会获得所有 AWS 服务之间每月共计 1GB 的免费数据传输,AWS GovCloud(美国)地区除外。有关更多信息,请参阅 AWS 免费套餐。如果每月数据传输量超出 500 TB,请联系我们。
DynamoDB 免费套餐
您可以通过 AWS 免费套餐免费实际体验 AWS 服务。下列 DynamoDB 优势包括在 AWS 免费套餐中。每种优势基于地区和付款人账户按月计算。
- 25 个 WCU 和 25 个 RCU 的预置容量
- 25 GB 的数据存储
- 部署在两个 WAS 区域的全局表需要 25 个 rWCU
- 250 万个来自 DynamoDB Streams 的流读取请求
- 适用于所有 AWS 服务的共计 1GB 的数据传出量(前 12 个月为 15GB)
DynamoDB 定价示例
-
• 基本示例
该示例演示了如何使用预置容量模式计算支持 Auto Scaling 的表的价格。Auto Scaling 会根据实际使用的容量不断设置预置容量,以使实际利用率保持接近目标利用率。
假设您在美国东部(弗吉尼亚北部)地区创建一个新表,其中目标利用率设置为默认值 70%,最小容量单位为 100 个 RCU 和 100 个 WCU,最大容量设置为 400 个 RCU 和 400 个 WCU(请参阅 DynamoDB 中的限制)。为简单起见,假设每次用户与您的应用程序交互时,系统会执行 1 次 1KB 的写入和 1 次 1KB 的强一致性读取。
在前 10 天,假设使用的 RCU 和 WCU 在 1 到 70 之间变化。Auto Scaling 不会触发任何扩展活动,您在每小时内需支付的费用为 0.078 USD(100 个预置 WCU 为 0.065 USD [0.00065 USD * 100],100 个 RCU 为 0.013 USD [0.00013 USD * 100])。
现在假设第 11 天使用的容量增加到 100 个 RCU 和 100 个 WCU。Auto Scaling 开始触发扩展活动,将预置容量增加到 143 个 WCU 和 143 个 RCU(100 已使用容量 ÷ 143 预置容量 = 69.9%)。每小时的账单是 0.11109 USD(143 个 WCU 为 0.0925 USD,143 个 RCU 为 0.01859 USD)。
在第 21 天,假设使用的容量减少到 80 个 RCU 和 80 个 WCU。Auto Scaling 开始触发缩减活动,将预置容量减少到 114 个 WCU 和 114 个 RCU(80 已使用容量 ÷ 114 预置容量 = 70.2%)。每小时的账单是 0.08952 USD(114 个 WCU 为 0.0741 USD,114 个 RCU 为 0.01482 USD)。
当月的费用为 66.86 USD,具体如下:
第 1 天到第 10 天:18.72 USD(每小时 0.078 USD x 24 小时 x 10 天)
第 11 天到第 20 天:26.66 USD(每小时 0.11109 USD × 24 小时 × 10 天)
第 21 天到第 30 天:21.48 USD(每小时 0.08952 USD x 24 小时 x 10 天)
AWS 免费套餐包括 25 个 WCU 和 25 个 RCU,每月账单减少 14.04 USD
25 个 WCU x 每小时 0.00065 USD x 24 小时 x 30天 = 11.70 USD
25 个 RCU x 每小时 0.00013 USD x 24 小时 x 30天 = 2.34 USD
数据存储:假设您的表在月初占用 25GB 的存储空间,然后在月底增加到 29GB,基于对表大小的连续监控平均占用空间为 27GB。AWS 免费套餐中包含前 25GB 的存储空间。对其余 2GB 存储空间收取每 GB 0.25 USD 的费用,所以本月的表存储成本为 0.50 USD。
您本月的总账单将为 53.32 USD,其中包括 52.82 USD 的读写容量费用和 0.50 USD 的数据存储空间费用。
-
• 详细示例
该示例演示了如何通过预置容量模式计算支持 Auto Scaling 的表的价格。Auto Scaling 会根据实际使用的容量不断设置预置容量,以使实际利用率保持接近目标利用率。
假设您在美国东部(弗吉尼亚北部)地区创建一个新表,其中目标利用率设置为默认值 70%,最小容量单位为 100 个 RCU 和 100 个 WCU,最大容量设置为 400 个 RCU 和 400 个 WCU(请参阅 DynamoDB 中的限制)。Auto Scaling 将根据这些限值运行,并且不会将预置容量缩减到最小值以下,或扩展到最大值以上。表创建之后,Auto Scaling 将开始预置最小容量单位。为简单起见,假设每次用户与您的应用程序交互时,系统会执行 1 次 1KB 的写入和 1 次 1KB 的强一致性读取。
在表创建后的第一个小时内,假设已使用的 RCU 和 WCU 在 1 到 70 之间变化。在 70% 的目标利用率内,实际利用率将相应地在 1%(1 已使用容量 ÷ 100 预置容量的百分比)和 70%(70 已使用容量 ÷ 100 预置容量的百分比)之间变化。Auto Scaling 不会触发任何扩展活动,您在此小时内需支付的费用为 0.078 USD(100 个预置 WCU 为 0.065 USD [0.00065 USD * 100],100 个 RCU 为 0.013 USD [0.00013 USD * 100])。
在第二个小时内,假设已使用容量增加到 100 个 RCU 和 100 个 WCU,这将导致实际利用率提高到 100%(100 已使用容量 ÷ 100 预置容量的百分比),远高于 70% 的目标利用率。Auto Scaling 开始触发扩展活动,以增加预置容量,使实际利用率更接近 70% 的目标利用率。结果为 143 个 WCU 和 143 个 RCU 的预置容量(100 已使用容量 ÷ 143 预置容量 = 69.9%)。第二个小时需支付的费用为 0.11154 USD(143 个 WCU 为 0.09295 USD,143 个 RCU 为 0.01859 USD)。
在第三个小时内,假设已使用容量减少到 80 个 RCU 和 80 个 WCU,这将导致实际利用率减少到 56%(80 已使用容量 ÷ 143 预置容量的百分比),远低于 70% 的目标利用率。Auto Scaling 将开始触发缩减活动,以减少预置容量,使实际利用率更接近 70% 的目标利用率,因此要预置的容量为 114 个 WCU 和 114 个 RCU(80 已使用容量 ÷ 114 预置容量的百分比 = 70.2%)。第三个小时需支付的费用为 0.08892 USD(114 个 WCU 为 0.0741 USD,114 个 RCU 为 0.01482 USD)。
为简单起见,假设您消耗的容量保持不变,为 80 个 RCU 和 80 个 WCU。您的表还预置了 114 个 WCU 和 114 个 RCU,每日费用为 2.1341 USD,细分为:
114 个 WCU x 每小时 0.00065 USD x 24 小时 = 1.7784 USD
114 个 RCU x 每小时 0.00013 USD x 24 小时 = 0.3557 USD
您的当月费用为 64.04 USD:
第 1 天的总费用:每天 2.14578 USD
第 1 个小时的费用:每小时 0.078 USD
第 2 个小时的费用:每小时 0.1154 USD
第 3-24 个小时的费用:每小时 0.08892 USD
第 2-30 天的费用:每天 2.1341 USD
AWS 免费套餐包括 25 个 WCU 和 25 个 RCU,每月账单减少 14.04 USD:
25 个 WCU x 每小时 0.00065 USD x 24 小时 x 30天 = 11.70 USD
25 个 RCU x 每小时 0.00013 USD x 24 小时 x 30天 = 2.34 USD
数据存储:假设您的表在月初占用 25GB 的存储空间,然后在月底增加到 29GB,基于对表大小的连续监控平均占用空间为 27GB。AWS 免费套餐中包含前 25GB 的存储空间。对其余 2GB 存储空间收取每 GB 0.25 USD 的费用,所以本月的表存储成本为 0.50 USD。
备份和还原:如果为期 30 天的一个月内所有按需备份存储的总和为 60GB,则每月的备份费用为 (0.10 USD x 60GB) = 6.00 USD/月。但是,如果您在每月周期中删除 10 天 15GB 的按需备份数据,您需要支付以下费用:(0.10 USD x 60GB) - (0.10 USD x 15GB x 20/30) = 5.00 USD/月。
现在假设除了执行按需备份之外,您还可以使用持续备份。您的表大小为 29GB,因而每月费用为 (0.20 USD x 29GB) = 5.80 USD/月。
如果您需要在一个月内还原一次 29GB 的表,则还原费用为 (0.15 USD x 29GB) = 4.35 USD。
数据导出到 Amazon S3:假设您想要将表备份导出到 Amazon S3 中进行分析。如果指定时间点的表大小为 29GB,则产生的导出费用为:(0.10 USD x 29 GB)= 2.90 USD。
DynamoDB Accelerator (DAX):您已确定需要加快应用程序的响应时间并决定使用 DynamoDB Accelerator (DAX)。您查看可用的硬件规范,并确定 t2.small 实例类型的三节点集群满足您的需求。您在第 26 天启用 DAX。DynamoDB 每小时收费 0.12 USD(0.04 USD x 3 个节点),本月最后 5 天共计 14.40 USD(0.12 USD x 120 小时)。
全局表:现在,假定您在美国西部(俄勒冈)区域中创建灾难恢复副本表。假定您在美国西部(俄勒冈)区域中添加副本,您的表大小为 25 GB,则产生的表还原收费为 3.75 USD (0.15 USD x 25 GB)。添加此副本还会产生 25 GB 的数据传输,将在下面的“数据传输”部分中详述。同样,假设您的容量需求与前面的示例一致。Auto Scaling 会继续为您的应用程序的吞吐量需求预置 114 个 WCU 和 114 个 RCU,但现在还必须预置 rWCU,用于写入两个副本表。预置的 rWCU 数量等于两个区域中应用程序写入所需的 rWCU 总数。在这种情况下,您现在每秒向美国东部(弗吉尼亚北部)和美国西部(俄勒冈)这两个区域执行 80 次写入,因而最小预置容量为 160 个 rWCU(弗吉尼亚北部的 80 个 rWCU + 俄勒冈的 80 个 rWCU = 160 个 rWCU)。Auto Scaling 预置 229 个 rWCU (160 rWCU/70%),以将实际利用率维持在预置容量的 70%。如需了解更多信息,请参阅管理全局表的最佳实践和要求。您在每个区域中的前 25 个 rWCU 包含在 AWS 免费套餐中,因而每小时费用为 0.174525 USD,或为期 30 天的月费用为 125.66 USD。您还在美国西部(俄勒冈)区域的复制表中另外存储了 27GB 的数据。每个 AWS 区域的 AWS 免费套餐中包含前 25GB 的存储空间。对其余 2GB 存储空间收取每 GB 0.25 USD 的费用,所以本月额外的表存储成本为 0.50 USD。
DynamoDB 流:现在假设您启用 DynamoDB 流并构建应用程序,以针对流数据每秒执行一次读取请求。在一个月的过程中,这会产生 2592000 个 Streams 读取请求,其中前 2500000 个读取请求包含在 AWS 免费套餐中。您只需为剩余的 92000 个读取请求付费,即每 100000 个读取请求单位 0.02 USD。
数据传输:由于您现在为了全局表实现而正在 AWS 区域之间传输数据,DynamoDB 会对从区域传出的数据收费,但不会对入站数据传输收费。假设每 1KB 每秒恒定写入 80 次,则在区域之间的数据传输中每秒产生 80KB,因而产生每月 198GB(每秒 80 KB x 当月 30 天共 2,592,000 秒)的跨区域数据传输。在美国西部(俄勒冈)区域中添加副本会额外产生 25 GB 的数据传输。如果您已在其他 AWS 服务上使用 AWS 免费套餐数据传输限额,则需要支付 20.07 USD (0.09 USD x [198 GB + 25 GB]) 的数据传输费用。
总的来说,您的单区域 DynamoDB 表的每月总费用为:
- 预置容量:50.00 USD
- 数据存储:0.50 USD
- 按需备份:5.00 USD
- 持续 (PITR) 备份:5.80 USD
- 表还原:4.35 USD
- DynamoDB Accelerator (DAX):14.40 USD
- DynamoDB 流:0.02 USD
总费用:80.07 USD
添加美国西部(俄勒冈)区域后您的每月 DynamoDB 总费用为:
- 预置读取容量:10.68 USD
- 数据存储(弗吉尼亚北部):0.50 USD
- 按需备份:5.00 USD
- 持续 (PITR) 备份:5.80 USD
- 表还原(弗吉尼亚北部):4.35 USD
- DynamoDB Accelerator (DAX):14.40 USD
- DynamoDB 流:0.02 USD
- 全局表的表还原(俄勒冈):3.75 USD
- 全局表复制的写入容量:125.66 USD
- 全局表数据存储(俄勒冈):0.50 USD
- 数据传输:20.07 USD
总费用:190.73 USD