AWS Step Functions-将输入传递给另一个任务

时间:2019-10-11 17:02:48

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

如何在AWS Step Functions中通过task将输入传递给输出?

我知道this question和文档:

  

如果ResultPath的值为null,则意味着该州自己的原始输出将被丢弃,其原始输入将成为其结果。

但是我需要的是:

  • 输入我的信息
{
  "input": "my_input"
}
  • 我的lambda输出
{
  "output": "my_output"
}

我需要将以下json传递到下一个状态:

{
  "input": "my_input",
  "output": "my_output"
}

2 个答案:

答案 0 :(得分:1)

有两个建议,Use ResultPath to Replace the Input with the Result,可以让您

  

如果未指定ResultPath,则默认行为类似于您已指定"ResultPath": "$"。因为这告诉状态用结果替换整个输入,所以状态输入完全由任务结果中的结果替换。

要使此选项起作用,Lambda函数必须返回所需的响应:

{
  "input": "my_input",
  "output": "my_output"
}

或者在《步骤函数》开发人员指南中Use ResultPath to Include the Result with the Input。接下来,如果您将Lambda的返回值更改为仅包含"my_output",则可以指定"ResultPath": "$.output"以获得所需的结果:

{
  "input": "my_input",
  "output": "my_output"
}

答案 1 :(得分:0)

对于遇到此问题的任何人,我都无法做到,但您可以做的是according to the docs

{
  "States": {
    "my-state": {
      "Type": "task",
      "ResultPath": "$.response"
    }
  }
}

这会将lambda返回的所有内容附加到response节点中,结果是:

{
  "input": "my_input",
  "response": {
    "output": "my_output"
  }
}