AWS CDK CodePipeline SelfMutate阶段部署失败问题求助
问题:AWS CDK CodePipeline SelfMutate阶段部署失败,SynthStep阶段正常
某公司使用CodePipeline的AWS CDK项目出现部署异常,已尝试更新或回退依赖包,SynthStep阶段可正常通过,但SelfMutate阶段持续失败。其他同配置项目运行正常,希望尽量避免破坏性变更或重大环境更新。
原有配置
CDK Pipeline代码
const pipeline = new CodePipeline(this, 'SampleApp', { pipelineName: 'SampleApp', crossAccountKeys: true, synth: new CodeBuildStep('SynthStep', { input: source, buildEnvironment: { buildImage: codebuild.LinuxBuildImage.STANDARD_5_0 }, installCommands: [ 'make build_all', // This is for our go-code 'npm install -g aws-cdk' ], commands: [ 'npm ci', 'npm run build', 'npx cdk synth' ], } ) });
package.json配置
"devDependencies": { "@types/jest": "^27.5.2", "@types/node": "10.17.27", "jest": "^27.5.1", "ts-jest": "^27.1.4", "aws-cdk": "^2.73.0", "ts-node": "^10.9.1", "typescript": "^4.8.4" }, "dependencies": { "aws-cdk-lib": "2.73.0", "constructs": "^10.0.0", "source-map-support": "^0.5.21" }
SelfMutate阶段错误日志
npm WARN EBADENGINE Unsupported engine { npm WARN EBADENGINE package: 'aws-cdk@2.1020.0', npm WARN EBADENGINE required: { node: '>= 18.0.0' }, npm WARN EBADENGINE current: { node: 'v16.20.2', npm: '8.19.4' } npm WARN EBADENGINE } .... Running command cdk -a . deploy SampleAppStack --require-approval=never --verbose /usr/local/lib/node_modules/aws-cdk/lib/index.js:324667 var wasmModule = new WebAssembly.Module(bytes);
解决方案
- 将CodeBuild构建镜像替换为
codebuild.LinuxBuildImage.STANDARD_7_0(该镜像默认搭载Node.js 18,满足新版AWS CDK的引擎要求) - 同步升级package.json中的依赖版本:
@types/node:升级至兼容Node.js 18的版本(例如^18.17.0)aws-cdk与aws-cdk-lib:升级至同一兼容新版本(建议匹配STANDARD_7_0镜像支持的CDK版本,避免版本不兼容)
- 推送代码变更后,手动执行
cdk deploy命令重新部署流水线,确保新配置生效
内容的提问来源于stack exchange,提问作者undefine97
相关产品推荐
相关产品推荐

