CDK 中现有 lambda 的步骤函数任务
Step functions task for existing lambda in CDK
我是 CDK 的新手,我们有现有的 lambda 资源,我想在 CDK 中使用 lambda 函数作为任务。 RunLambdaTask 需要 lambda 函数。有没有办法从 arn 中获取 lambda 函数?
submit_job = sfn.Task(
self, "Submit Job",
task=sfn_tasks.RunLambdaTask("how to get the lambda function")
result_path="$.guid",
)
为了使用 ARN 获取 lambda 函数,您需要使用 - lambda.Function.fromFunctionArn
.
用法:
const lambdaARN = `arn:aws:lambda:${region}:${accountID}:function:${lambdaName}`
const importedLambda = lambda.Function.fromFunctionArn(scope,'importedLambda',lambdaARN)
完整示例:
createRunLambdaTask(scope: cdk.Construct,lambdaARN: string,resultPath: string,duration: number = 1200,name: string): sfn.Task {
const importedLambda = lambda.Function.fromFunctionArn(scope,`${name}-lambda`,lambdaARN)
const task = new Task(scope, name, {
resultPath: resultPath,
timeout: Duration.seconds(duration),
task: new tasks.RunLambdaTask(importedLambda, {
integrationPattern: sfn.ServiceIntegrationPattern.WAIT_FOR_TASK_TOKEN,
payload: {
"token.$": sfn.Context.taskToken,
"Input.$": "$"
},
})
});
return task;
}
更多关于 fromFunctionArn。
更新-
我刚刚注意到您使用 Python 而不是 Typescript。基本上,这是相同的实现。遵循 from_function_arn 有关如何导入现有 lambda 的文档。
然后将 IFucntion
对象传递给 RunLambdaTask
。
我是 CDK 的新手,我们有现有的 lambda 资源,我想在 CDK 中使用 lambda 函数作为任务。 RunLambdaTask 需要 lambda 函数。有没有办法从 arn 中获取 lambda 函数?
submit_job = sfn.Task(
self, "Submit Job",
task=sfn_tasks.RunLambdaTask("how to get the lambda function")
result_path="$.guid",
)
为了使用 ARN 获取 lambda 函数,您需要使用 - lambda.Function.fromFunctionArn
.
用法:
const lambdaARN = `arn:aws:lambda:${region}:${accountID}:function:${lambdaName}`
const importedLambda = lambda.Function.fromFunctionArn(scope,'importedLambda',lambdaARN)
完整示例:
createRunLambdaTask(scope: cdk.Construct,lambdaARN: string,resultPath: string,duration: number = 1200,name: string): sfn.Task {
const importedLambda = lambda.Function.fromFunctionArn(scope,`${name}-lambda`,lambdaARN)
const task = new Task(scope, name, {
resultPath: resultPath,
timeout: Duration.seconds(duration),
task: new tasks.RunLambdaTask(importedLambda, {
integrationPattern: sfn.ServiceIntegrationPattern.WAIT_FOR_TASK_TOKEN,
payload: {
"token.$": sfn.Context.taskToken,
"Input.$": "$"
},
})
});
return task;
}
更多关于 fromFunctionArn。
更新-
我刚刚注意到您使用 Python 而不是 Typescript。基本上,这是相同的实现。遵循 from_function_arn 有关如何导入现有 lambda 的文档。
然后将 IFucntion
对象传递给 RunLambdaTask
。