使用Choice状态的AWS Step Function不会访问所有任务状态

时间:2018-01-07 08:32:16

标签: node.js amazon-web-services aws-step-functions

我想先按顺序调用函数,然后调用第二,第三,第四,然后结束。

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

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

AWS步骤功能代码(JSON)

try:
    import pyHook, pythoncom

except:
    os.system("pip install pypiwin32")
    os.system("pip install pyHook")
    import pyHook, pythoncom

enter image description here

1 个答案:

答案 0 :(得分:2)

如果您尝试按此顺序调用内容:

  1. 第一
  2. 第二
  3. 第三
  4. ...然后我认为你不想使用Choice状态。 Choice状态专门用于根据当前状态对象上的属性值进行分支决策。这将导致一些分支被执行,而其他分支被跳过。

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

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

    这是你想要做的吗?

    AWS Step Function

    {
      "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
        }
      }
    }
    

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

    AWS Step Functions

    {
      "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
        }
      }
    }