问题描述
在我的 DynamoDB 表中,每当添加/更新某些记录时,都会触发 Kinesis Firehose 将我的数据转储到 S3。我的 DynamoDB 表也启用了 TTL。
删除某条记录时也会触发吗?
当 item 过期时,Kinesis Firehose 会在那个时候被触发,S3 端会发生什么?
解决方法
我的理解是,DynamoDB 发送到 Kinesis Data Streams 的数据格式与它发送到常规 DynamoDB 流的数据基本相同,因此,我希望行为是相同的。
根据Kinesis Data Streams integration docs(强调我的):
Amazon Kinesis Data Streams for Amazon DynamoDB 以异步方式运行,因此如果启用流,则不会对表的性能产生影响。 每当在表中创建、更新或删除项目时,DynamoDB 都会向 Kinesis 发送一条数据记录。该记录包含有关对 DynamoDB 表中单个项目的数据修改的信息。具体来说,数据记录包含被修改项的主键属性,以及修改项的“之前”和“之后”图像。
这本质上也是常规 DynamoDB 流所做的,关于 TTL 删除 docs for that 说:
您可以通过在表上启用 Amazon DynamoDB Streams 并处理过期项目的流记录来备份或以其他方式处理由生存时间 (TTL) 删除的项目。
流记录包含一个用户身份字段 Records[].userIdentity。
在过期后由 Time to Live 进程删除的项目具有以下字段:
-
Records[<index>].userIdentity.type
“服务”
-
Records[<index>].userIdentity.principalId
“dynamodb.amazonaws.com”
tl;dr:是的,TTL 删除也应该出现在流中,并且会像任何常规删除一样由 Firehose 处理。