繁体   English   中英

CDK/Cloudformation - 由于手动删除了 Lambda 版本,无法部署堆栈

[英]CDK/Cloudformation - Unable to deploy stack because of Lambda Version deleted manually

我有一个带有 Lambda 的 CDK 堆栈,它的版本和别名指向最新版本。 在我的 CDK 代码中,我遵循这种方法:

  1. 创建 Lambda
  2. 创建一个版本
  3. 创建指向该版本的别名。

随着时间的推移,我发布了太多版本,因此由于 Lambda 存储限制,我删除了初始版本。 但初始版本的物理 ID 仍然在 CloudFormation 堆栈中引用。 Cloudformation 堆栈在第一次尝试时创建资源成功

如上图所示,我没有版本 7。 现在,我在版本 22我的 Lambda 的当前版本

当我 go 并部署我的代码时,出现以下错误,因为 Lambda 的版本 7 不再存在

更新堆栈时出现的错误

任何想法,如何在不删除 Lambda 并重新创建它的情况下解决这个问题?

我的 CDK 代码:

final Function function = Function.Builder.create(construct, InfraConstants.WEBHOOK_RECEIVER_LAMBDA)
        .runtime(Runtime.JAVA_11)
        .handler("com.org.test")
        .memorySize(1024)
        .timeout(Duration.seconds(100))
        .functionName(InfraConstants.WEBHOOK_RECEIVER_LAMBDA)
        .code(Code.fromAsset("src/main/resources/sample-java.jar"))
        .tracing(Tracing.PASS_THROUGH)
        .layers(layers)
        .environment(LambdaUtils.getEnvVariablesWebhookReceiver())
        .build();
LambdaUtils.enableSnapStart(function);
return function;
public Version createVersion(Construct construct, String versionId, IFunction lambdaFunction) {
    return Version.Builder.create(construct, versionId)
            .lambda(lambdaFunction)
            .build();
}

public Alias createAlias(Construct construct, String aliasId, Version version, String alias){
    return Alias.Builder.create(construct, aliasId)
            .aliasName(alias)
            .version(version)
            .build();
}

重新部署 lambda 的最简单方法是更改资源的 CloudFormation ID。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM