使用选择状态的 AWS Step Function 未达到所有任务状态

Joh*_*ohn 0 amazon-web-services node.js aws-step-functions

我想按照第一次调用,第二次,第三次,第四次,最后结束的顺序调用函数。

我正在使用AWS 管理控制台中的选择示例。

为什么第三个和第四个电话没有被击中?

AWS 步骤函数代码 (JSON)

{
  "Comment": "state functionality",
  "StartAt": "FirstCall",
  "States": {
    "FirstCall": {
      "Type": "Choice",
      "Choices": [
        {
          "Not": {
            "Resource": "rnName",
            "Variable": "$.response",
            "InputPath": "$",
            "ResultPath": "$",
            "OutputPath": "$",
            "StringEquals": "Success Import"
          },
          "Next": "SecondCall"
        },
        {
          "Variable": "$.response",
          "StringEquals": "Success Import ",
          "Next": "ThirdCall"
        },
        {
          "And": [
            {
              "Variable": "$.response",
              "StringEquals": "Success Import"
            },
            {
              "Variable": "$.response",
              "StringEquals": "Success Import"
            }
          ],
          "Next": "FourthCall"
        }
      ]
    },
    "SecondCall": {
      "Type": "Task",
      "Resource": "rnName",
      "Next": "BeforeEnd"
    },
    "ThirdCall": {
      "Type": "Task",
      "Resource": "rnName",
      "Next": "BeforeEnd"
    },
    "FourthCall": {
      "Type": "Task",
      "Resource": "rnName",
      "Next": "BeforeEnd"
    },
    "BeforeEnd": {
      "Type": "Task",
      "Resource": "rnName",
      "End": true
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Tre*_*van 5

如果您尝试按以下顺序调用事物:

  1. 第一的
  2. 第二
  3. 第三
  4. 第四

......那我认为你不想使用Choice状态。该Choice州是专门为了让您作出决定分支,取决于当前的状态对象的属性值。这将导致执行某些分支,而跳过其他分支。

顺便说一句,由于Choice状态实际上并没有“调用”任何东西,我建议避免将其命名为“调用某物”,因为这可能会让您失望。Task状态是唯一通过 AWS Lambda 函数或 Step Functions 的“活动任务”概念实际调用任何代码的状态。

如果您想澄清您要完成的任务,可以编辑您的问题。

这是你想要做的吗?

AWS 步骤函数

{
  "Comment": "state functionality",
  "StartAt": "FirstCall",
  "States": {
    "FirstCall": {
      "Type": "Choice",
      "Choices": [
        {
          "Not": {
            "Resource": "rnName",
            "Variable": "$.response",
            "InputPath": "$",
            "ResultPath": "$",
            "OutputPath": "$",
            "StringEquals": "Success Import"
          },
          "Next": "SecondCall"
        },
        {
          "Variable": "$.response",
          "StringEquals": "Success Import ",
          "Next": "ThirdCall"
        },
        {
          "And": [
            {
              "Variable": "$.response",
              "StringEquals": "Success Import"
            },
            {
              "Variable": "$.response",
              "StringEquals": "Success Import"
            }
          ],
          "Next": "FourthCall"
        }
      ]
    },
    "SecondCall": {
      "Type": "Task",
      "Resource": "rnName",
      "Next": "FirstCall"
    },
    "ThirdCall": {
      "Type": "Task",
      "Resource": "rnName",
      "Next": "FirstCall"
    },
    "FourthCall": {
      "Type": "Task",
      "Resource": "rnName",
      "Next": "BeforeEnd"
    },
    "BeforeEnd": {
      "Type": "Task",
      "Resource": "rnName",
      "End": true
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如果您只想按顺序调用四个函数,那么您可以使用:

AWS 步骤函数

{
  "Comment": "state functionality",
  "StartAt": "FirstCall",
  "States": {
    "FirstCall": {
      "Type": "Task",
      "Next": "SecondCall"
    },
    "SecondCall": {
      "Type": "Task",
      "Resource": "rnName",
      "Next": "ThirdCall"
    },
    "ThirdCall": {
      "Type": "Task",
      "Resource": "rnName",
      "Next": "FourthCall"
    },
    "FourthCall": {
      "Type": "Task",
      "Resource": "rnName",
      "Next": "BeforeEnd"
    },
    "BeforeEnd": {
      "Type": "Task",
      "Resource": "rnName",
      "End": true
    }
  }
}
Run Code Online (Sandbox Code Playgroud)