我有一个CDK堆栈,它创建lambda函数和任务。每个任务都使用lambda函数。目前,step函数任务仅指向$LATEST别名。我的目标是更新lambda函数版本或别名,并相应地更新step函数任务。
Lambda创作:
createLambda(scope: cdk.Construct, name: string, lambdaPath: string, handler: string = 'app.handler', timeout: number = 900): lambda.Function {
const lambdaFunction = new lambda.Function(scope, name, {
functionName: name,
runtime: lambda.Runtime.NODEJS_10_X,
code: lambda.Code.asset(lambdaPath),
handler: handler,
timeout: Duration.seconds(timeout),
description: `Generated on: ${new Date().toISOString()}`
});
const version = lambdaFunction.addVersion(new Date().toISOString());
new lambda.Alias(scope, `alias-${new Date().toISOString()}`, {
aliasName: 'live',
version: version,
});
return lambdaFunction;
}任务创建:
createTask(scope: cdk.Construct,lambdaFunction: lambda.Function,duration: number = 1200,name: string): sfn.Task {
const task = new sfn.Task(scope, name, {
task: new tasks.InvokeFunction(lambdaFunction),
timeout: Duration.seconds(duration)
});
return task;
}因此,我的问题是:函数任务中的可以指向特定的lambda版本吗?
发布于 2020-01-02 14:45:50
最后使用lambda,每当lambda发生更改时,CDK创建新版本并返回lambda版本ARN:
createLambda(scope: cdk.Construct, name: string, lambdaPath: string, handler: string = 'app.handler', timeout: number = 900): string {
const lambdaFunction = new lambda.Function(scope, name, {
functionName: name,
runtime: lambda.Runtime.NODEJS_10_X,
code: lambda.Code.asset(lambdaPath),
handler: handler,
timeout: Duration.seconds(timeout),
});
const lambdaFunctionARN = lambdaFunction.addVersion(`${new Date().toISOString()}`).functionArn;
return lambdaFunctionARN;
}稍后,步骤函数任务获取ARN作为输入,并使用以下方法导入lambda函数:
const lambdaVersion = lambda.Function.fromFunctionArn(scope,'LambdaImportUsingARN',lambdaVersionARN)https://stackoverflow.com/questions/59553125
复制相似问题