【问题标题】:aws step function parallel with input parameters与输入参数并行的 aws 阶跃函数
【发布时间】:2020-12-11 11:53:54
【问题描述】:

我正在尝试使用 AWS 步进函数来创建并行执行分支。 一个并行分支开始另一个 step 函数调用,我们如何将这个并行分支的输入传递给下一个 step 函数执行

{
  "Comment": "Parallel Example.",
  "StartAt": "FunWithMath",
  "States": {
    "FunWithMath": {
    "Type": "Parallel",
    "End": true,
    "Branches": [
      {
        "StartAt": "Add",  /// This receives some json object here input {}
        "States": {
          "Add": {    
            "Type": "Task",  ***//How to pass the received input to the following arn as input?***
            "Resource": ""arn:aws:states:::states:startExecution",
            Parameters: {
                 "StateMachineArn": "anotherstepfunctionarnpath"
                }
            "End": true
          }
        }
      },
      {
        "StartAt": "Subtract",
        "States": {
          "Subtract": {
            "Type": "Task",
            "Resource": "some lambda arn here,
            "End": true
          }
        }
      }
    ]
   }
  }
}

另一个步骤函数路径

{

        "Comment": "Second state machine",
        "StartAt": "stage1",
         "Resource": "arn:aws:states:::glue:startJobRun.sync",
         "Parameters":{
             "Arguments":{
                 "Variable1" :"???" / how to access the value of the input passed to here
                }
           }
}

【问题讨论】:

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


    【解决方案1】:

    您可以使用Input 将输出从一个SFN 传递到另一个:

    第一个 SFN(它将调用第二个 SFN)

    {
      "Comment": "My first SFN",
      "StartAt": "First SFN",
      "States": {
        "First SFN": {
          "Type": "Task",
          "ResultPath": "$.to_pass",
          "Resource": "arn:aws:lambda:us-east-1:807278658150:function:test-lambda",
          "Next": "Trigger Next SFN"
        },
        "Trigger Next SFN": {
          "Type": "Task",
          "Resource": "arn:aws:states:::states:startExecution",
          "Parameters": {
            "Input": {
              "Comment.$": "$"
            },
            "StateMachineArn": "arn:aws:states:us-east-1:807278658150:stateMachine:MyStateMachine2"
          },
          "End": true
        }
      }
    }
    

    第二个 SFN (MyStateMachine2)

    {
      "Comment": "A Hello World example of the Amazon States Language using Pass states",
      "StartAt": "Hello",
      "States": {
        "Hello": {
          "Type": "Pass",
          "Result": "Hello",
          "Next": "World"
        },
        "World": {
          "Type": "Pass",
          "Result": "World",
          "End": true
        }
      }
    }
    

    第一个 SFN 的执行

    第二次SFN的执行

    说明 Lambda test-lambda 正在返回:

    {
      "user": "stackoverflow",
      "id": "100"
    }
    

    它存储在"ResultPath": "$.to_pass" 中的to_pass 变量中。我将相同的输出传递给下一个状态机 MyStateMachine2

    完成
    "Input": {
       "Comment.$": "$"
    }
    

    在下一个状态机的执行中,您会看到接收到的相同数据作为由第一个 Lambda 创建的输入。

    您可以阅读更多关于它的信息here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-07
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 2018-05-21
      • 1970-01-01
      • 2022-01-18
      相关资源
      最近更新 更多