如何在Step函数中的lambda函数之间传递数据?

时间:2018-05-08 17:07:33

标签: amazon-web-services aws-lambda amazon-cloudwatch aws-step-functions

我花了一些时间来评估我们正在尝试构建的调度引擎的Step函数。我最初的理解是:

我们将step函数构建为一系列lambda函数,这些函数将按顺序调用。要触发步骤函数每晚运行一次,我将创建一个CloudWatch事件规则。但是我有几个问题:

一个。我们如何将从第一个lambda函数返回的输出更改为第二个lambda函数的输入。我们可以在“Pass”元素中执行此操作吗?我看到Pass元素有ResultPath,Result字段但是如果第一个lambda函数的输出与第二个lambda函数的输入完全不同,我无法理解如何实现它。或者建议不要在其他地方使用不同的lambda函数(在步进函数中)?

湾社区如何处理步骤函数的源代码控制?建议练习在源代码管理中检查生成的源代码中的步骤函数吗?

1 个答案:

答案 0 :(得分:0)

A)您可以使用Pass状态,但它非常有限(通过在InputPath状态下使用Task可以获得相同的效果)。可以添加额外的Task状态,将执行状态转换为下一个Task的输入。无论如何,我建议将Lambda函数设计为能够按原样读取执行数据(因此它只会从中提取所需的字段,忽略其他字段并在缺少必需字段时抛出错误)。

我不会说这是推荐的做法。事实上,我还没有找到任何推荐的做法。但是,该方法适用于我的情况,如果在多个状态机之间共享任何Task实现(无论是Lambda还是Activity),那么这些状态机的相似性足以使它们的数据模型非常相似(因此Lambda适用于两种状态机)。

B)状态机结构是项目的一部分,因此它与其余代码一起进行版本控制。在Cloud Formation模板中使用YAML,其JSON可以轻松嵌入为多行字符串。在我的情况下,它也在Fn::Sub内,因此可以在部署时自动设置资源的ARN(Lambda,Activities)。