Step Functions 将参数向下传递给 lambda

Step Functions Passing Parameters down to lambdas

我正在构建一个启动 EC2 实例的状态机。之后,我正在操作 EC2 实例,但为此我需要新创建的 EC2 实例 InstanceId,它在 Lambda 函数中被 returned。如何从我的第一个 Lambda 中获取 return 值并将其传递给以下 Lambda 函数?

我已经尝试了 "InputPath"、"OutputPath" 和 "ResultPath",但每次我尝试它都会取消 Lambda 函数。不知道这是为什么(也许解决这个问题会解决我的问题)。

{
   "Comment": "My State Machine",
   "StartAt": "Launch Instance",
   "States": {
     "Launch Instance": {
     "Type": "Task",
     "Resource": "Lambda",
     "Parameters": {
      "FunctionName": "My lambda",
      "Payload": {
        "Input": {
           "ImageId": "My Image"
         }
       }
     },
     "Next": "wait_ten_seconds"
       },
       "wait_ten_seconds": {
     "Type": "Wait",
     "Seconds": 10,
     "Next": "Create Image"
   },
     "Create Image":{
       "Type": "Task",
       "Resource": "Lambda",
       "Parameters":{
       "FunctionName": "My Lambda"
     },
       "Next": "Terminate Instance"
     },
      "Terminate Instance": {
        "Type": "Task",
        "Resource": "Lambda",
        "Parameters": {
          "FunctionName": "My lambda"
        },
         "End": true
       }
     }
   }

如果我硬编码有效负载,它会起作用,但(显然)硬编码不是目标。感谢任何帮助,谢谢。

如果不指定ResultPath,每个任务的输出都会覆盖之前的输入。因此,鉴于 Launch Instance returns {"instance_id": "xxx"},可能的策略可能是:

  1. 在 Luanch 实例中,"ResultPath": "$.launch_instance.output"
  2. 在创建图像中,"ResultPath": "$.create_image.output"
  3. 在终止实例中,"InputPath": "$.launch_instance.output"

现在您可以使用 event["instance_id"]

获取值