【问题标题】:How to Pass data between lambda functions in Step function?如何在 Step 函数中的 lambda 函数之间传递数据?
【发布时间】:2018-05-09 04:33:45
【问题描述】:

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

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

一个。我们如何将第一个 lambda 函数返回的输出更改为第二个 lambda 函数的输入。我们可以在“通过”元素中执行此操作吗?我看到 Pass 元素具有 ResultPath、Result 字段,但如果第一个 lambda 函数的输出与第二个 lambda 函数的输入完全不同,我无法理解如何实现它。还是推荐的做法是编写不同的 lambda 函数(在阶跃函数中),这样它们就不能在其他任何地方使用?

b.社区如何处理步进函数的源代码控制?推荐的做法是检查源代码控制中步骤函数的生成源代码吗?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-27
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多