工作流没有终止状态

问题描述

我正在使用 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 状态会导致无限循环。它将自己称为下一个。相反,迭代器中的状态应该是终止状态。

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

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