我想使用 DynamoDB Streams 在 S3 上进行增量 DynamoDB 备份。我有一个读取 dynamodb 流并将文件写入 S3 的 lambda。为了标记已经读取的分片,我将 ExclusiveStartShardId 登录到配置文件中。
我要做的是:
- 描述流(使用记录的 ExclusiveStartShardId)
- 获取流的分片
- 对于所有已关闭(具有 EndingSequenceNumber)的分片,我执行以下操作:
- 获取某个分片的分片迭代器 (shardIteratorType: 'TRIM_HORIZON')
- 遍历分片并获取记录,直到 NextShardIterator 变为 null
这里的问题是我只读取已关闭的分片,为了获得新记录,我必须等待(未确定的时间量)它被关闭。
似乎最后一个分片通常处于OPEN状态(没有 EndingSequenceNumber)。如果我从上面的伪代码中删除对 EndingSequenceNumber 的检查,我最终会出现无限循环,因为当我点击最后一个分片时,总是会出现 NextShardIterator。我也无法检查获取的项目是否为 0,因为分片中可能存在“间隙”。
在本教程中, numChanges用于停止无限循环http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.LowLevel.Walkthrough.html#Streams.LowLevel.Walkthrough.Step5
在这种情况下最好的方法是什么?
我还发现了一个类似的问题:Reading data from dynamodb streams。不幸的是,我找不到我的问题的答案。