在 S3 存储桶中迭代对象时,在超过 25,000 个事件后开始新的 Step Function 执行

Starting a new execution of Step Function after exceeding 25,000 events, when iterating through objects in an S3 bucket

我正在遍历 S3 存储桶来处理文件。我的解决方案基于这个例子;

https://rubenjgarcia.es/step-function-to-iterate-s3/

迭代工作正常,但不幸的是我超过了一次执行允许的 25,000 个事件,因此它最终失败了。我知道您必须重新开始执行 step 函数,但我不清楚如何告诉它我在当前迭代中的位置。我知道有多少文件已被处理,显然还有 ContinuationToken。我可以使用 ContinuationToken 来跟踪我在 s3 存储桶中迭代的位置以及告诉它何时开始新执行的计数吗?

我已阅读 AWS 文档 https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-continue-new.html,但我不确定从哪里开始将其应用于我自己的解决方案。有没有人在遍历 s3 存储桶中的对象时这样做过,如果你能指出正确的方向?

我能想到两个方案:

  1. 在您的解决方案中,只要存在下一个标记,您就会进行迭代。您可以扩展它并创建一个计数器,并在每次迭代中增加它。并将条件更改为只要有下一个标记或计数小于阈值就进行迭代。

  2. 我更喜欢使用嵌套状态机来克服 25,000 个事件的限制。假设每次您从 s3 读取 100 个项目。如果将列表传递给嵌套状态机来处理它们,那么 top-level 状态机将不会达到 25,000 个事件,嵌套状态机也是如此。