首页 > 解决方案 > 具有 TTL 并触发 Kinesis Firehose 的 DynamoDB 表

问题描述

在我的 DynamoDB 表中,Kinesis Firehose 被触发,每当添加/更新一些记录时,它就会将我的数据转储到 S3。我的 DynamoDB 表也启用了 TTL。

删除某些记录时也会触发吗?

当物品过期时,届时会触发 Kinesis Firehose,S3 端会发生什么情况?

标签: amazon-web-servicesamazon-s3amazon-dynamodbttlamazon-kinesis-firehose

解决方案


我的理解是,DynamoDB 发送到 Kinesis Data Streams 的数据格式与它发送到常规 DynamoDB 流的数据基本相同,因此,我希望行为相同。

根据Kinesis Data Streams 集成文档(强调我的):

适用于 Amazon DynamoDB 的 Amazon Kinesis Data Streams 以异步方式运行,因此如果启用流,则不会对表的性能产生影响。每当在表中创建、更新或删除项目时,DynamoDB 都会向 Kinesis 发送一条数据记录。该记录包含有关对 DynamoDB 表中单个项目的数据修改的信息。具体来说,数据记录包含被修改项目的主键属性,以及被修改项目的“之前”和“之后”图像。

本质上,这也是常规 DynamoDB 流所做的事情,并且关于 TTL-deletes 的文档说:

您可以通过在表上启用 Amazon DynamoDB Streams 并处理过期项目的流记录来备份或以其他方式处理由生存时间 (TTL) 删除的项目。

流记录包含用户身份字段 Records[].userIdentity。

过期后由生存时间流程删除的项目具有以下字段:

  • Records[<index>].userIdentity.type

    “服务”

  • Records[<index>].userIdentity.principalId

    “dynamodb.amazonaws.com”

tl;dr:是的,TTL 删除也应该出现在流中,并将像任何常规删除一样由 Firehose 处理。


推荐阅读