Amazon web services 从kinesis流读取数据时,NextSharedIterator从不返回null

Amazon web services 从kinesis流读取数据时,NextSharedIterator从不返回null,amazon-web-services,aws-lambda,amazon-kinesis,Amazon Web Services,Aws Lambda,Amazon Kinesis,我试图在lambda函数中的特定时间戳之后从kinesis流读取记录。我得到碎片、碎片迭代器,然后是数据。 当我得到第一个迭代器时,我得到数据并使用NextShardIterator(返回的数据中存在)递归地调用同一个函数。根据文档,当没有更多数据可读取且达到$latest时,NextSharedIterator将返回null。 但它从不返回null,并且函数不断被调用,最终我得到了配置的吞吐量超过异常。 我还尝试使用MillisBehindLatest在值为零时停止读取,但在某些情况下也失败了

我试图在lambda函数中的特定时间戳之后从kinesis流读取记录。我得到碎片、碎片迭代器,然后是数据。
当我得到第一个迭代器时,我得到数据并使用NextShardIterator(返回的数据中存在)递归地调用同一个函数。根据文档,当没有更多数据可读取且达到$latest时,NextSharedIterator将返回null。
但它从不返回null,并且函数不断被调用,最终我得到了配置的吞吐量超过异常。
我还尝试使用MillisBehindLatest在值为零时停止读取,但在某些情况下也失败了


是否有一种基于时间戳从kinesis获取数据的正确方法?

NextShardIterator仅在到达闭合碎片的末尾时返回null(在使用UpdateShardCount、SplitShard或MergeShard更新碎片计数的情况下)

“下一个硬迭代器 分片中开始顺序读取数据记录的下一个位置。如果设置为null,则分片已关闭,请求的迭代器不再返回任何数据。“

如果要从指定的时间戳开始读取流,最好的方法是使用lambda的事件源映射,并将StartingPosition指定为lambda中的时间戳


在lambda中使用递归是非常困难的。处理动情的最好方法是通过。有什么特别的原因不能使用它吗?我已经在其他用例中使用了这种方法,但是对于这个特殊的用例,我需要根据需要从kinesis中读取记录。@VipulSharam,所以您的代码中可能有一些错误。它可能会错误地传递递归参数,或者在每个递归步骤中重置它。这与递归无关,我也在循环中尝试过。我创建了一个新的kinesis流,没有任何数据,它仍然每次都在下一个碎片迭代器中返回me值。