AWS Step Functions 未捕获 States.Runtime 错误

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 中的参数

Fck*_*nda 6

来自https://docs.aws.amazon.com/step-functions/latest/dg/concepts-error-handling.html

States.Runtime 错误不可重试,并且始终会导致执行失败。对 States.ALL进行重试或捕获不会捕获 States.Runtime 错误


Bas*_*sem 1

您的状态机需要以下输入:

"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