微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

同步阶跃函数 lambda 映射迭代器

如何解决同步阶跃函数 lambda 映射迭代器

我有两个 lambdas(lambda1 和 lambda2),它们在阶跃函数映射迭代器中编排。因此,我有事件列表 E = [e1,e2,...,e10],它充当此状态机映射迭代器的输入。这工作得很好,lambda1 是用 e1 作为输入调用的,并将其输出传递给 lambda2。这一切都按预期工作,并通过并行工作流同时处理所有事件。

但是,我想在 lambda1 和 lambda2 之间添加某种逻辑,以确保在成功处理所有并行事件之前不会调用 lambda2。事件 E = [e1,e10] 完成所需的时间可能相差几分钟,并且 lambda2 执行非幂等操作。由于这个事实,我想避免运行任何 lambda2,直到所有事件 E 都被 lambda1 成功处理。但是一旦它们被成功处理,我想 lambda2 来处理 lambda1 的输出

如果不涉及其他资源,如 SNS/SQS 或 dynamodb 中的状态处理(仅举几个方法),这种 lambda 编排是否太复杂而无法创建?

提前致谢。

解决方法

找到了解决办法。棘手的是在地图迭代器之间添加传递状态。我在将输出从传递状态传递给 lambda2 迭代器时也遇到了问题。它首先作为列表传递:

[
  {object_iteration1}
  {object_iteration2}
          .
          .
]

然而,这并没有为 lambda2 迭代器映射提供有效的输入。通过在以下参数下添加输出解决了这个问题:

"pass-state": {
  "Type": "Pass","Parameters": {
    "lambda1_output.$": "$"
  },"Next": "Lambda2"
},

我仍然不清楚它为什么有效。但确实如此。也许将来有人可以进一步阐述。 step 函数现在按预期工作,我会把它留在这里给其他人。

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。