AWS Step Function Map 任务可以处理多少项?
How many items can AWS Step Function Map task handle?
我正在考虑使用此解决方案处理来自 S3 的大约 3000 个对象。
https://docs.aws.amazon.com/step-functions/latest/dg/sample-map-state.html
我的用例是我需要一次一个地循环遍历所有项目,将每个文件传递给多个 lambda 函数进行处理,直到处理完所有项目。我找不到任何信息来告诉我这种方法是否有局限性。我看到的所有示例都使用了少量项目,我想知道是否有任何理由不应该将它用于 3000(或更多)项目。
AWS Step Functions 的最大执行历史记录大小有 25,000 个事件限制。所以如果你有 5 个步骤来处理一个文件,你不能处理超过 5000 个项目。
克服这个限制:
将文件的所有过程包装在一个步骤函数中,并从您的父步骤函数(嵌套步骤函数)中调用。
不是将 1 个文件传递给您的地图或嵌套步骤函数,而是传递一批文件,然后它们在您的子状态机中迭代它们。因此,例如,如果您的批处理 10 个文件,而不是 5000 个,您可以处理 50000 个。
另一个解决方法是在达到 25000 限制时启动另一个执行,但使用前 2 个选项解决它更容易。
我正在考虑使用此解决方案处理来自 S3 的大约 3000 个对象。
https://docs.aws.amazon.com/step-functions/latest/dg/sample-map-state.html
我的用例是我需要一次一个地循环遍历所有项目,将每个文件传递给多个 lambda 函数进行处理,直到处理完所有项目。我找不到任何信息来告诉我这种方法是否有局限性。我看到的所有示例都使用了少量项目,我想知道是否有任何理由不应该将它用于 3000(或更多)项目。
AWS Step Functions 的最大执行历史记录大小有 25,000 个事件限制。所以如果你有 5 个步骤来处理一个文件,你不能处理超过 5000 个项目。
克服这个限制:
将文件的所有过程包装在一个步骤函数中,并从您的父步骤函数(嵌套步骤函数)中调用。
不是将 1 个文件传递给您的地图或嵌套步骤函数,而是传递一批文件,然后它们在您的子状态机中迭代它们。因此,例如,如果您的批处理 10 个文件,而不是 5000 个,您可以处理 50000 个。
另一个解决方法是在达到 25000 限制时启动另一个执行,但使用前 2 个选项解决它更容易。