【问题标题】:How to catch exception from lambda in state machine?如何从状态机中的 lambda 捕获异常?
【发布时间】:2022-09-26 20:58:47
【问题描述】:

我正在使用状态机并引发自定义错误,但在我的状态机中我无法捕获该异常。

下面是 lambda sn-p 和状态机定义。而不是去捕获块和错误任务..它在结果选择器属性处抛出错误如下 -

在输入中找不到为字段“tables.$”指定的 JSONPath“$.Payload.tables”

如何在异常期间忽略结果选择器属性?

我的 lambda 代码 sn-p -

        if schema is None:
            raise Exception("schema is not configured")

我的状态机 -

      "ResultSelector": {
        "tables.$": "$.Payload.tables"
      },
     "ResultPath": "$.export_tables",
     "Catch": [
              {
                "ErrorEquals": [
                  "States.Runtime"
                ],
                 "ErrorEquals": [
            "States.ALL"
          ],
                "ResultPath": "$.error",
                "Next": "error state"
              }
            ],
      "Next": "Export Tables"
    },
    "error state": {
            "Type": "Fail"
          },
    "Export Tables": {
      "Type": "Map",
      "End": true,
      "ItemsPath": "$.export.tables",
      "Parameters": {
        "product.$": "$.product",
        "table_export_def.$": "$$.Map.Item.Value"
      },

【问题讨论】:

  • 你能分享更多细节吗?就像您在代码中的哪个位置抛出此异常?

标签: amazon-web-services exception aws-lambda state-machine aws-step-functions


【解决方案1】:

您可以通过在aws docs 中指定带有后备步骤的 ErrorEquals 和 Next 属性来捕获自定义错误

例如,如果您想捕获运行时错误:

"Catch": [ {
        "ErrorEquals": ["States.Runtime"],
        "Next": "CustomErrorFallback"
     },
     ...
      ]

指定您的自定义后备步骤以使用自定义错误消息处理错误

"CustomErrorFallback": {
     "Type": "Pass",
     "Result": "schema is not configured",
     "End": true
  },

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-07
    • 2013-04-20
    • 2016-03-10
    • 2017-06-14
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 2019-05-20
    相关资源
    最近更新 更多