繁体   English   中英

AWS Step Functions 调用动态并行 Step Functions

[英]AWS Step Functions invoke Dynamic Parallel Step Functions

我正在使用步骤 function 工作流程解决问题。

问题是这样的,我有 10 个 AWS Batch 作业的工作流。

前 3 个作业按顺序运行,4-7 个作业是动态步骤,即它们需要按照指定的不同参数运行多次。

并且对于每个 4-5-6-7 工作流,根据参数数量,会多次执行 8-9-10 作业。

看起来 Map 最适合这里,但如果 map state 中的任何作业失败,则 4-5-6-7 整个步骤都会失败。 我不希望一次执行影响另一次执行。

方法:我设计了 3 个阶梯函数。 第一步 function 运行 1-3 个作业,最后一步调用 lambda function 提交多次执行的 4-5-6-7 个作业。 对于每个 4-5-6-7 执行,另一个 lambda 被触发以提交 8-9-10 作业的多次执行。

我通过 lambda 函数手动连接步进函数。

这是正确的方法还是有更好的方法?

我会建议更多元素,以使您的解决方案更适合生产。

首先,我建议您消除 Lambda function 调用,并为嵌套工作流使用“运行作业”( .sync:2 )服务集成 我昨天刚做了一个Twitch 插曲

其次,如果您想在 Map State 内部执行失败后继续,请确保您正在实施 Catchers(以及可选的 Retriers)。 我在上周二做了一个Twitch 插曲,上面链接的第一个视频中讨论了错误处理。

因此,对于您的具体情况,我建议您:

  1. 首先将 8-9-10 步骤变成一个独立的工作流程(孩子 A)
  2. 通过 Map State 内的“运行作业”服务集成从步骤 4-5-6-7 调用子 A
  3. 将步骤 4-5-6-7 迁移到独立的工作流程中(孩子 B)
  4. 再次通过“运行作业”服务集成从父工作流调用子 B(步骤 1-2-3)

有关 Step Functions 和 Lambda 函数中的并行性的更多信息,请参阅此 Twitch 插曲

上述所有代码示例都可在GitHub 上的这个 repo 中找到


我代表我的雇主亚马逊做出了贡献。 我的贡献是在 MIT 许可下获得许可的。 有关更详细的说明,请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM