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

为何执行cdk deploy时CDK应用返回CodePipeline Internal Failure错误

执行cdk deploy创建包含1个阶段、1个NextStack堆栈的AWS CodePipeline时,返回错误CREATE_FAILED | AWS::CodePipeline::Pipeline | TodolistPipeline/Pipeline Internal Failure且无额外日志输出,可能的原因如下:

  • Node.js运行时版本弃用:你代码中使用的Runtime.NODEJS_12_X已被AWS Lambda正式停止支持,AWS不再接受新的Node.js 12 runtime函数部署,这是触发无日志内部错误的高频原因,你需要将next-stack.ts中的runtime字段更新为Runtime.NODEJS_16_X或更高的官方支持版本。
  • GitHub仓库访问权限缺失:你使用CodePipelineSource.gitHub拉取代码时,默认会读取AWS Secrets Manager中名为github-token的密钥作为访问凭证,如果该密钥不存在、权限配置错误,或者没有提前配置CodeStar Connections连接授权CodePipeline访问你的GitHub仓库,会直接触发Pipeline创建失败。
  • CDK版本不兼容:你使用的@aws-cdk/pipelines为旧版本包,若本地执行部署的CDK CLI版本与项目依赖的CDK核心包版本主版本号不一致,会导致生成的CloudFormation模板格式异常,触发内部错误,可执行cdk --version和npm list @aws-cdk/core比对版本,保持两者完全一致即可解决。
  • 资源命名冲突或不符合规范:你指定的Pipeline名称TodolistDeploymentPipeline在当前区域的账号下已存在,或是Lambda函数命名不符合AWS资源命名规则(长度超限、含特殊字符),也会导致创建失败。
  • IAM权限不足:执行cdk deploy的IAM身份,或是CDK自动生成的Pipeline执行角色缺少CodePipeline、Lambda@Edge、CloudFront等服务的必要操作权限,可临时给部署角色授予AdministratorAccess权限测试,确认是否为权限问题。

你可先前往AWS CloudTrail控制台,查找对应时间的CreatePipeline API调用事件,事件详情中会记录CodePipeline内部错误的具体原因,比CloudFormation返回的通用报错信息更具参考性。

相关代码文件

bin.ts

import * as cdk from '@aws-cdk/core';
import { PipelineStack } from './pipeline-stack';

const app = new cdk.App();

new PipelineStack(app, 'TodolistPipeline', {
  env: { account: process.env.CDK_DEFAULT_ACCOUNT, region: 'us-east-1' },
});

pipeline-stack.ts

import { Construct, Stack, StackProps } from '@aws-cdk/core';
import {
  CodePipeline,
  CodePipelineSource,
  ShellStep,
} from '@aws-cdk/pipelines';
import { NextJsStage } from './front-end-stage';

export class PipelineStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    const pipeline = new CodePipeline(this, 'MainDeploymentPipeline', {
      pipelineName: 'TodolistDeploymentPipeline',
      synth: new ShellStep('Synth', {
        input: CodePipelineSource.gitHub('AndyW22/todolist', 'main'),
        commands: [
          'n 16',
          'yarn install --frozen-lockfile',
          'cd cdk_stack && yarn install --frozen-lockfile && cd ../',
          'ts-node cdk_stack/compileNext.ts ',
          'npx cdk synth',
        ],
      }),
    });
    pipeline.addStage(new NextJsStage(this, 'Front-end'));
  }
}

front-end-stage.ts

import { Construct, StackProps, Stage } from '@aws-cdk/core';
import { NextStack } from './next-stack';

export class NextJsStage extends Stage {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);
    new NextStack(this, 'FrontEndStack', {
      env: {
        region: 'us-east-1',
      },
      analyticsReporting: true,
      description: 'Front end NextJS stack for todolist',
    });
  }
}

next-stack.ts

import { Runtime } from '@aws-cdk/aws-lambda';
import * as cdk from '@aws-cdk/core';
import { Duration } from '@aws-cdk/core';
import { NextJSLambdaEdge } from '@sls-next/cdk-construct';

export class NextStack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, props: cdk.StackProps) {
    super(scope, id, props);
    new NextJSLambdaEdge(this, 'NextJsApp', {
      serverlessBuildOutDir: './build',
      runtime: Runtime.NODEJS_12_X,
      memory: 1024,
      timeout: Duration.seconds(30),
      withLogging: true,
      name: {
        apiLambda: `${id}Api`,
        defaultLambda: `Fn${id}`,
        imageLambda: `${id}Image`,
      },
    });
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:15:06