使用 Kinesis Data Streams 捕获 DynamoDB 的更改 - Amazon DynamoDB

使用 Kinesis Data Streams 捕获 DynamoDB 的更改

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

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

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

注意

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

Kinesis Data Streams 如何与 DynamoDB 结合使用

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

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

  • 该项目的主键

  • 修改前记录的快照

  • 修改后记录的快照

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

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

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

当您启用 Kinesis 数据流作为 DynamoDB 表的流式传输目标时,您可以用毫秒或微秒为单位配置 ApproximateCreationDateTime 值的精度。默认情况下,ApproximateCreationDateTime 指示更改时间(以毫秒为单位)。此外,您可以在活动的流式传输目标上更改该值。更新后,写入 Kinesis 的流记录将具有所需精度的 ApproximateCreationDateTime 值。

写入 DynamoDB 的二进制值必须采用 base64 编码格式进行编码。但是,当数据记录写入 Kinesis 数据流时,这些编码的二进制值将再次使用 base64 编码进行编码。从 Kinesis 数据流读取这些记录时,为了检索原始二进制值,应用程序必须对这些值进行两次解码。

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

为 DynamoDB 表启用 Kinesis 数据流

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

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

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

更改 DynamoDB 表上的 Kinesis Data Streams 目标

默认情况下,所有 Kinesis 数据流记录都包含一个 ApproximateCreationDateTime 属性。此属性表示创建每条记录的大致时间的时间戳(以毫秒为单位)。您可以使用 https://console.aws.amazon.com/kinesis、SDK 或 AWS CLI 更改这些值的精度