1

我想使用 DynamoDB Streams 在 S3 上进行增量 DynamoDB 备份。我有一个读取 dynamodb 流并将文件写入 S3 的 lambda。为了标记已经读取的分片,我将 ExclusiveStartShardId 登录到配置文件中。

我要做的是:

  1. 描述流(使用记录的 ExclusiveStartShardId)
  2. 获取流的分片
  3. 对于所有已关闭(具有 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。不幸的是,我找不到我的问题的答案。

4

1 回答 1

1

为什么不附加 DynamoDB 流作为 Lambda 函数的事件源?然后 Lambda 将负责轮询流并在必要时调用您的函数。有关详细信息,请参阅

于 2016-06-15T12:26:42.473 回答