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

AWS CDK更新栈后执行cdk deploy未生效 模板无变更问题求助

阻碍CDK正常生成synth产物的根因
  1. 源码目录残留旧编译产物优先级高于TS源码。Node.js模块解析逻辑默认会优先加载同路径下的.js文件,而非同名.ts源码。若之前意外在源码目录执行过tsc编译生成了旧的.js、.d.ts文件,后续修改.ts文件后没有触发重新编译时,CDK synth会直接读取旧的JS文件,自然不会包含新增的配置改动。
  2. TypeScript增量编译缓存失效。如果项目tsconfig.json开启了incremental: true配置,残留的tsconfig.tsbuildinfo缓存文件会导致tsc跳过对已修改TS文件的编译,最终生成的运行代码还是旧版本。
  3. CDK栈元数据缓存干扰。若之前执行synth生成的cdk.out目录存在权限问题导致部分旧文件未被正常清理,CDK可能会复用缓存的栈模板快照,跳过重新合成流程。
无需删除栈的可行解决办法
  • 全量清理源码目录的冗余编译产物:执行以下命令删除非node_modules、非配置文件的JS、类型声明和TS增量缓存文件
    find . -path "./node_modules/*" -prune -o \( -name "*.js" -not -name "*.config.js" -o -name "*.d.ts" -o -name "tsconfig.tsbuildinfo" \) -exec rm -f {} \;
    
  • 手动触发全量编译后再合成模板:运行npx tsc --build --force && cdk synth,强制TS全量编译所有源码文件,再生成CloudFormation模板。
  • 执行带缓存跳过参数的部署:运行cdk deploy --force --no-previous-parameters,强制CDK忽略之前的部署参数、模板缓存,基于最新合成的模板执行更新。
  • 验证改动生效:synth完成后直接检查cdk.out目录下对应栈的template.json文件,确认*新增的环境变量YYYY_B_LOCATION*和s3:PutObject权限已存在后再执行部署即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:06:02