You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lambda别名多版本致CDK部署失败,求单版本指向最新方案

解决Lambda别名部署报错及确保仅指向最新版本的方法

1. 检查并修正CDK代码中的别名配置

确保你的CDK代码里,Lambda别名没有设置额外的版本权重,只绑定到最新版本。示例代码如下:

import * as lambda from 'aws-cdk-lib/aws-lambda';
import * as cdk from 'aws-cdk-lib';

const app = new cdk.App();
const stack = new cdk.Stack(app, 'LambdaStack');

// 创建Lambda函数
const myLambda = new lambda.Function(stack, 'MyLambda', {
  runtime: lambda.Runtime.NODEJS_18_X,
  handler: 'index.handler',
  code: lambda.Code.fromAsset('lambda'),
});

// 创建别名,仅指向函数的最新版本
const alias = new lambda.Alias(stack, 'MyLambdaAlias', {
  aliasName: 'PROD',
  version: myLambda.currentVersion, // 绑定到当前发布的版本
  // 务必删除additionalVersions字段,这是触发权重溢出报错的核心原因
});

如果之前代码里存在additionalVersions配置,直接移除该字段——它是用于版本分流的配置,留着会让CDK尝试设置额外版本的权重,最终导致总和超出100%。

2. 清理控制台中别名的残留分流配置

手动修改控制台未生效,大概率是CDK配置与云端资源状态不一致导致的,按以下步骤操作:

  • 打开Lambda控制台,找到目标别名,进入「版本分流」设置页
  • 将所有额外版本的权重滑块拉至0,点击「保存」
  • 确认别名当前仅显示主版本,无其他版本条目

3. 强制同步CDK状态与云端资源

若删除栈重部署仍报错,可能是CDK本地缓存或状态存在异常,执行以下命令:

  • 清理本地缓存:cdk clean
  • 重新生成部署模板:cdk synth
  • 强制覆盖部署:cdk deploy --force

4. 避免手动修改CDK管理的资源

不要手动调整CDK管控的Lambda别名配置,否则会引发配置漂移。若必须临时手动修改,调整后需同步更新CDK代码,或通过cdk diff查看差异,再用cdk deploy将代码配置同步到云端。

5. 验证部署结果

部署完成后回到Lambda控制台,确认:

  • 别名的「版本」仅显示一个条目(最新版本号或$LATEST)
  • 「版本分流」区域无额外版本的权重配置

内容的提问来源于stack exchange,提问作者Java Enthusiast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 12:58:02