使用 Kinesis Data Streams 捕获 DynamoDB 的更改 - Amazon DynamoDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 Kinesis Data Streams 捕获 DynamoDB 的更改

您可以使用 Amazon Kinesis Data Streams 捕获 Amazon DynamoDB 的更改。

Kinesis Data Streams 捕获任何 DynamoDB 表中的项目级别修改,并将它们复制到 Kinesis Data Streams。您的应用程序可以访问此数据流,近实时查看项目级别的更改。您可以每小时持续捕获和存储 TB 级的数据。您可以利用更长的数据保留时间,还可以借助增强的扇出功能同时访问两个或更多下游应用程序。其他优势包括额外的审计和安全透明度。

Kinesis Data Streams 还可让您访问 Amazon Kinesis Data FirehoseAmazon Kinesis Data Analytics。这些服务可帮助您构建应用程序来支持实时控制面板、生成警报、实施动态定价和广告以及实现复杂的数据分析和机器学习算法。

注意

对 DynamoDB 使用 Kinesis Data Streams 受数据流的 Kinesis Data Streams 定价和源表的 DynamoDB 定价影响。

Kinesis Data Streams 如何与 DynamoDB 结合使用

为 DynamoDB 表启用 Kinesis 数据流时,该表将发送一条数据记录,其中捕获该表数据的任何更改。此数据记录包括:

  • 最近创建、更新或删除任何项目的具体时间

  • 该项目的主键

  • 修改前项目的镜像

  • 修改后项目的镜像

将近乎实时地捕获并发布这些数据记录。将它们写入 Kinesis 数据流后,就可以像任何其他记录一样读取它们。可以使用 Kinesis 客户端库,使用 Amazon Lambda,调用 Kinesis Data Streams API 和其他连接的服务。有关更多信息,请参阅 Amazon Kinesis Data Streams 开发人员指南的从 Amazon Kinesis Data Streams 读取数据

数据的这些更改也是异步捕获的。Kinesis 对其正在进行流式传输的表没有性能影响。存储在 Kinesis 数据流中的流记录也会静态加密。有关更多信息,请参阅 Amazon Kinesis Data Streams 数据保护

Kinesis 数据流记录的显示顺序可能与项目更改发生的顺序不同。同一项目通知也可能会在数据流中多次出现。您可以检查 ApproximateCreationDateTime 属性,以确定项目修改的实际发生顺序,并识别重复的记录。

ApproximateCreationDateTime 指示修改时间(以毫秒为单位)。如果在一毫秒内同一项目发生了多次修改,则 ApproximateCreationDateTime 增加 1 毫秒以显示有用的发生顺序。

DynamoDB 会对在更改数据捕获单元中使用 Kinesis Data Streams 收取费用。每个项目的 1KB 更改计为一个更改数据捕获单元。每个项目的更改 KB 数是由写入数据流的项目的“之前”和“之后”镜像中较大者计算得出,期间使用与写入操作的容量单位消耗相同的逻辑。您无需为更改数据捕获单元预置容量吞吐量,类似于 DynamoDB 按需模式的工作原理。

为 DynamoDB 表启用 Kinesis 数据流

可以使用 Amazon Web Services Management Console、Amazon SDK 或 Amazon Command Line Interface (Amazon CLI),启用或禁用从现有 DynamoDB 表流式传输到 Kinesis。

  • 您只能从 DynamoDB 流式传输到从同一 Amazon 账户和 Amazon 区域中的 Kinesis Data Streams 作为您的表。

  • 您只能将数据从 DynamoDB 表流式传输到一个 Kinesis 数据流。