【问题标题】:Step Functions Passing Parameters down to lambdasStep Functions 将参数传递给 lambdas
【发布时间】:2019-08-05 22:44:11
【问题描述】:

我正在构建一个启动 EC2 实例的状态机。之后,我正在操作 EC2 实例,但为此我需要在 Lambda 函数中返回的新创建的 EC2 实例 InstanceId。如何从我的第一个 Lambda 获取返回值以传递给以下 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
       }
     }
   }

如果我对有效负载进行硬编码,它会起作用,但(显然)硬编码不是目标。任何帮助表示赞赏,谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 2017-08-07
      • 2020-02-09
      • 2022-08-11
      • 2021-08-30
      • 2019-08-03
      • 2023-04-06
      相关资源
      最近更新 更多