如何将输入传递给多个ARN(aws步骤功能)?

时间:2017-12-21 14:43:56

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

我想弄清楚如何将多个输入传递给我的ARN。但似乎我不能这样做。

以下是我的机器规格

{
    "StartAt": "DemoStateFunction",
    "Version": "1.0",
    "States": {
        "DemoStateFunction": {
            "Type": "Task",
            "Resource": "ARN-Demo-Function",
            "InputPath": "$.demostate1",
            "Next": "DemoStateFunction2"
        },
        "DemoStateFunction2": {
            "Type": "Task",
            "Resource": "ARN-Demo-Function",
            "InputPath": "$.demostate2",
            "End": true         
        }
    }
}

这是我的输入

{
    "demostate1": {
        "data": "john",
    },
    "demostate2": {
        "data": "doe"
    }
}

执行此任务时。它成功地检索了我的demostate1数据,然而它似乎无法看到demostate2,正如我在“TaskStateEntered”步骤中看到的那样。

1 个答案:

答案 0 :(得分:4)

机器状态数据从一个状态传递到另一个状态。

如果从任务返回数据并且未在状态中指定ResultPath属性,则任务的输出将成为下一个状态的输入。这是您的demostate2丢失的地方。

来自:http://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-input-output-processing.html

  

任务结果作为状态输出(它成为下一个任务的输入)发送。

因此,您需要在DemoStateFunction州使用类似的内容将DemoStateFunction的结果合并到输入数据中:

    "DemoStateFunction": {
        "Type": "Task",
        "Resource": "ARN-Demo-Function",
        "InputPath": "$.demostate1",
        "ResultPath": "$.demooutput1",
        "Next": "DemoStateFunction2"
    },

这将从任务中获取结果并将其合并到demooutput1属性下的现有输入结构中。