AWS Step Functions 调用动态并行 Step Functions

AWS Step Functions invoke Dynamic Parallel Step Functions

我正在使用阶跃函数工作流解决问题。

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

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

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

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

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

我正在通过 lambda 函数手动连接步骤函数。

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

我建议添加更多元素,使您的解决方案更加 production-ready。

首先,我建议您消除 Lambda 函数调用并在昨天使用 "Run a Job" (.sync:2) service integration for Nested workflows. I just did a Twitch episode

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

所以针对你的具体情况,我建议你:

  1. 首先将 8-9-10 步骤变成一个独立的工作流程 (Child A)
  2. 通过地图状态中的 "Run a Job" 服务集成从步骤 4-5-6-7 调用 Child A
  3. 将步骤 4-5-6-7 迁移到独立的工作流程中 (Child B)
  4. 从 parent 工作流程(步骤 1-2-3)调用 Child B,再次通过 "Run a Job" 服务集成

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

this repo on GitHub.

中提供了上述所有代码示例

我代表我的雇主亚马逊做出贡献。我的贡献是根据 MIT 许可证获得许可的。有关更详细的说明,请参阅 here