在 AWS Step Functions 中跨循环传递数据

Pass data across loop in AWS Step Functions

我有一个 AWS Step Function,它包含一个 "Map"(在输入中循环一个数组),然后按顺序执行一系列任务并得到所有结果。但是,在最后一步中,我 想要能够访问一些在中间步骤中未使用的原始输入数据。我应该如何最好地做到这一点?

到目前为止我尝试过的:

执行此操作的“正确”方法是什么?

                     Iterate
                     over Fiz
                     +--------+   +-------------+    +------------+
{                    | +---+  |   |             |    |            |
  Foo: "Bar", --> -------+ |  +---+      Y      +----+     Z      |
  Fiz: [...],        | +-+ |      |             |    |            |
}                    +-----+      +-------------+    +------------+

在上面的框 Z 中,我想同时访问 'Foo' 和 Y

的输出

事实证明,SFN 中的每个步骤都可以访问原始输入,但您必须使用 Parameters 明确声明插入它们。 $$.Execution.Input.

中提供所有输入

使用 Parameters 时,您将覆盖所有其他输入,因此您 必须定义要从上一步传递的内容。换句话说:如果 Y 将 {fruit: "apple"} 传递给 Z,并且您希望 Z 看到它和原始输入 {Foo: "Bar"} ,您可以将以下内容添加到 SFN 中的 Z 步骤:

{
    "Parameters": {
        "Foo.$": "$$.Execution.Input.Foo",
        "fruit.$": "$.apple"
}

注意第一种情况是双 $$,第二种情况是单 $