1

我希望我的状态机即使在早期出现一些状态错误的情况下也能继续执行。我的大多数 lambda 函数输出与它们作为输入相同的东西,所以我希望能够将遇到错误的 lambda 输入作为输出传递到下一个状态。我试过

{
    "DeleteStuff": {
      "Type": "Task",
      "Resource": "MY_ARN",
      "Catch": [ {
        "ErrorEquals": ["States.ALL"],
        "ResultPath": "$InputPath",
        "Next": "FailedState"
      }],
      "Next": "checkStuff"
    }, ...

没有任何运气。有没有人这样做过,或者任何人都可以提供一些帮助吗?

谢谢!

4

2 回答 2

4

因此解决方案是将 ResultPath 设置为 null。将我的状态机更改为

{
    "DeleteStuff": {
      "Type": "Task",
      "Resource": "MY_ARN",
      "Catch": [ {
        "ErrorEquals": ["States.ALL"],
        "ResultPath": null,
        "Next": "FailedState"
      }],
      "Next": "checkStuff"
    }, ...

给了我想要的行为。

于 2018-02-27T21:44:39.473 回答
2

如果您只是向结果路径添加一个新路径,它会被添加到输入中:

{
    "ErrorEquals": ["States.ALL"],
    "ResultPath": "$.error",
    "Next": "Catch All Error Handler"
}

所以如果你的输入是:

{
    "data_a" : "aaa",
    "data_b" : "bbb"
}

输出将是:

{
    "data_a" : "aaa",
    "data_b" : "bbb",
    "error" : "<error description>"
}
于 2018-05-23T09:21:37.577 回答