AWS Step Functions:在 Lambda 异常时,获取原始输入?
AWS Step Functions: On Lambda exception, get original input?
设置
我有一个 AWS 状态机。我有一个可能 return 结果或可能引发异常的 Lambda。该步骤定义了一个 catch 块,并根据异常类型遵循不同的执行路径。
问题
但是,我想存储失败的 Lambda 的输入,以便以后可以重新应用它。
失败的 Lambda 的输出是异常。
我试过的
添加 OutputPath 和 ResultPath 不适用时出现异常。
我真的不想总是抛出自定义异常并附加 json 输入,然后解析异常消息。
我试过使用 Parallel,将输入发送到我的 Lambda 和 Pass。结果是一个包含 Lambda 输出(成功输出或异常)和原始输入的数组。但是,现在我需要添加一个 Choice 来检查是否有异常,然后继续成功的输出,或者从原始输入分支。我似乎无法在 Choice 中定义 JsonPath 来检查 "Error" 是否存在于数组的第一个元素中。
您可以在 Catch
子句中使用 ResultPath
来执行此操作,这会将异常输出放入原始输入下的特定路径中。
例如:
"Catch": [{
"ErrorEquals": ["States.ALL"],
"Next": "NextTask",
"ResultPath": "$.error"
}]
有输入
{"foo": "bar"}
如果出现异常,将产生如下输出:
{
"foo": "bar",
"error": {
"Error": "..."
}
}
设置
我有一个 AWS 状态机。我有一个可能 return 结果或可能引发异常的 Lambda。该步骤定义了一个 catch 块,并根据异常类型遵循不同的执行路径。
问题
但是,我想存储失败的 Lambda 的输入,以便以后可以重新应用它。
失败的 Lambda 的输出是异常。
我试过的
添加 OutputPath 和 ResultPath 不适用时出现异常。
我真的不想总是抛出自定义异常并附加 json 输入,然后解析异常消息。
我试过使用 Parallel,将输入发送到我的 Lambda 和 Pass。结果是一个包含 Lambda 输出(成功输出或异常)和原始输入的数组。但是,现在我需要添加一个 Choice 来检查是否有异常,然后继续成功的输出,或者从原始输入分支。我似乎无法在 Choice 中定义 JsonPath 来检查 "Error" 是否存在于数组的第一个元素中。
您可以在 Catch
子句中使用 ResultPath
来执行此操作,这会将异常输出放入原始输入下的特定路径中。
例如:
"Catch": [{
"ErrorEquals": ["States.ALL"],
"Next": "NextTask",
"ResultPath": "$.error"
}]
有输入
{"foo": "bar"}
如果出现异常,将产生如下输出:
{
"foo": "bar",
"error": {
"Error": "..."
}
}