AWS 步骤功能:动态选择资源

Dim*_*iev 0 aws-lambda aws-step-functions

我想根据上一步的结果动态选择 AWS Lambda 工作人员。类似的东西{"Resource": "$.worker_arn"}

"RunWorkers": {
      "Type": "Map",
      "MaxConcurrency": 0,
      "InputPath": "$.output",
      "ResultPath": "$.raw_result",
      "Iterator": {
        "StartAt": "CallWorkerLambda",
        "States": {
          "CallWorkerLambda": {
            "Type": "Task",
            "Resource": "$$.worker_arn",
            "End": true
          }
        }
      },
      "Next": "Aggregate"
    },
Run Code Online (Sandbox Code Playgroud)

上一步的输入预期如下: [{"worker_arn":..., "output":1}, {"worker_arn":..., "output":1}, ...],其中worker_arn所有工人都相同。

当我编写这样的管道时,linter 抱怨它需要一个 ARN。

有没有比将我的工人 lambda 包装到另一个 lambda 更好的选择?

ada*_*ong 5

使用"Resource": "arm:aws:states:::lambda:invoke"您可以在运行时使用路径设置"FunctionName"字段"Parameters"

{ 
  "StartAt":"CallLambda", 
  "States":{ 
    "CallLambda":{ 
      "Type":"Task",    
      "Resource": "arn:aws:states:::lambda:invoke", 
      "Parameters":{ 
        "FunctionName.$":"$.MyFunction",
        "Payload.$": "$"
       }, 
      "End":true 
    } 
  } 
}
Run Code Online (Sandbox Code Playgroud)

https://docs.aws.amazon.com/step-functions/latest/dg/connect-lambda.html