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"}
,可能的策略可能是:
- 在 Luanch 实例中,
"ResultPath": "$.launch_instance.output"
- 在创建图像中,
"ResultPath": "$.create_image.output"
- 在终止实例中,
"InputPath": "$.launch_instance.output"
现在您可以使用 event["instance_id"]
获取值
我正在构建一个启动 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"}
,可能的策略可能是:
- 在 Luanch 实例中,
"ResultPath": "$.launch_instance.output"
- 在创建图像中,
"ResultPath": "$.create_image.output"
- 在终止实例中,
"InputPath": "$.launch_instance.output"
现在您可以使用 event["instance_id"]