阅读AWS Dynamodb Stream

时间:2016-06-14 14:12:38

标签: aws-lambda amazon-dynamodb-streams

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

我的工作是:

  1. 描述流(使用记录的ExclusiveStartShardId)
  2. 获取流媒体
  3. 对于已关闭(具有EndingSequenceNumber)的所有分片,我执行以下操作:
    • 获取特定分片的分片迭代器(shardIteratorType:' TRIM_HORIZON')
    • 遍历分片并获取记录,直到NextShardIterator变为空
  4. 这里的问题是我只读取已关闭的分片,为了获得新的记录,我必须等待(未确定的时间量)才能关闭它。

    似乎最后一个分片通常处于 OPEN 状态( NO 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。不幸的是我找不到我的问题的答案。

1 个答案:

答案 0 :(得分:1)

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