sha*_*ila 9 error-handling runtime-error amazon-web-services aws-step-functions aws-step-config
下面的步骤函数在 aws 中执行,当缺少必需参数时,它会取消流程并抛出 States.Runtime 错误。这是处于步骤函数的捕获阶段,但它没有捕获所述错误。
定义的Step函数如下,
{
"StartAt": "Log Start Step Function",
"Comment": "Executed with inputs",
"States": {
"Log Start Step Function": {
"Type": "Task",
"Resource": "arn:aws:lambda:eu-west-1:0000000:function:update",
"Parameters": {
"body": {
"itemID.$": "$.itemID",
"functionName.$": "$.stepFunctionName ",
"executionARN.$": "$$.Execution.Id",
"complete": false,
"inprogress": true,
"error": false
}
},
"Catch": [
{
"ErrorEquals": [
"States.Runtime"
],
"ResultPath": "$.taskresult",
"Next": "Log Failed Module"
},
{
"ErrorEquals": [
"States.ALL"
],
"ResultPath": "$.taskresult",
"Next": "Log Failed Module"
}
],
"ResultPath": "$.taskresult",
"Next": "Evaluate Module PA1"
}
}
}
Run Code Online (Sandbox Code Playgroud)
运行时错误是未执行日志失败模块。
{
"ErrorEquals": [
"States.Runtime"
],
"ResultPath": "$.taskresult",
"Next": "Log Failed Module"
},
Run Code Online (Sandbox Code Playgroud)
这是 AWS 错误还是此处完成的配置有问题,或者是否有其他方法来验证 AWS Step Functions 中的参数
来自https://docs.aws.amazon.com/step-functions/latest/dg/concepts-error-handling.html
States.Runtime 错误不可重试,并且始终会导致执行失败。对 States.ALL进行重试或捕获不会捕获 States.Runtime 错误。
您的状态机需要以下输入:
"Parameters": {
"body": {
"itemID.$": "$.itemID",
"functionName.$": "$.stepFunctionName ",
"executionARN.$": "$$.Execution.Id",
"complete": false,
"inprogress": true,
"error": false
}
},
Run Code Online (Sandbox Code Playgroud)
当您开始新的执行时,您需要传递它们,而不是:
{
"Comment": "Insert your JSON here"
}
Run Code Online (Sandbox Code Playgroud)
您当前正在传递它,因为它默认作为 AWS 控制台中新执行的输入主体。
在此处阅读有关输入路径和参数的更多信息: https: //docs.aws.amazon.com/step-functions/latest/dg/input-output-inputpath-params.html