工作流没有终止状态

Workflow has no terminal state

我正在使用 AWS Step Function 创建一个工作流,我首先检查数据库中是否存在记录,然后根据记录有两个分支,每个分支都以成功或失败状态结束,但我是仍然出现 Workflow has no end state 错误。 以下是工作流

的 JSON
{
  "Comment": "A demo state machine",
  "StartAt": "FindCategory",
  "States": {
    "FindCategory": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-east-1:xxxxxxx:function:xxxxxx",
      "Next": "Exists?"
    },
    "Exists?": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.exists",
          "BooleanEquals": true,
          "Next": "Yes"
        },
        {
          "Variable": "$.exists",
          "BooleanEquals": false,
          "Next": "No"
        }
      ]
    },
    "Yes": {
      "Type": "Pass",
      "Next": "GetQuestions"
    },
    "GetQuestions": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-east-1:xxxxxxxxxxxxxx",
      "Next": "ReplyWithPolls"
    },
    "ReplyWithPolls": {
      "Type": "Map",
      "MaxConcurrency": 2,
      "Iterator": {
        "StartAt": "SendPoll",
        "States": {
          "SendPoll": {
            "Type": "Task",
            "Resource": "arn:aws:lambda:us-east-1:xxxxxxxxxxxx:xxxxxxx",
            "Next": "SendPoll"
          }
        }
      },
      "Next": "Succeed"
    },
    "No": {
      "Type": "Pass",
      "Next": "FailState"
    },
    "Succeed": {
      "Type": "Succeed"
    },
    "FailState": {
      "Type": "Fail",
      "Error": "404",
      "Cause": "Category not found"
    }
  }
}

我认为问题在于您的 SendPoll 状态导致无限循环。它引用自己作为下一个。相反,迭代器中的状态应该是终止状态。

"End" 字段替换 "SendPoll" 状态中的 "Next" 字段。

          "SendPoll": {
            "Type": "Task",
            "Resource": "arn:aws:lambda:us-east-1:xxxxxxxxxxxx:xxxxxxx",
            "End": true
          }