4

设置

我有一个 AWS 状态机。我有一个可能返回结果或抛出异常的 Lambda。该步骤定义了一个 catch 块,并且根据异常的类型,遵循不同的执行路径。

问题

但是,我想存储失败的 Lambda 的输入,以便以后可以重新应用。

失败的 Lambda 的输出是例外。

我试过的

例外时,添加 OutputPath 和 ResultPath 不适用。

我真的不想总是抛出自定义异常并附加 json 输入,然后解析异常消息。

我尝试使用 Parallel,将输入发送到我的 Lambda 和 Pass。结果是一个包含 Lambda 输出(成功输出或异常)和原始输入的数组。但是,现在我需要添加一个选项来检查是否有异常,然后要么继续成功输出,要么使用原始输入分支。我似乎无法在选项中定义 JsonPath 来检查数组的第一个元素中是否存在“错误”。

4

1 回答 1

9

您可以使用ResultPathinCatch子句执行此操作,它将异常输出放入原始输入下的特定路径中。

例如:

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

带输入

{"foo": "bar"}

如果出现异常,将产生如下输出:

{
  "foo": "bar",
  "error": {
    "Error": "..."
  }
}
于 2017-09-03T19:52:46.477 回答