0

我想在 CDK 中导入一个角色以使用它来配置新的 CodeBuild 项目。

const role1 = Role.import(this, "service-role", {
      roleArn: "arn:aws:iam::1234567890:role/service-role/codebuild-manualproject-service-role" ,
    });

注意:为了安全起见,我更改了 Arn 中的 Account Ref。

这是创建代码构建项目的代码..

        // Create build
        // note: now that there is one bucket per build project it is not necessary to have a prefix/subdirectory in the bucket for storing cache items
        const project =  new codebuild.Project(this, CODEBUILD_PROJECT_NAME, {
          // render url for build badge
          badge: true,
          cacheBucket: cacheBucket,
          cacheDir: "Cache",
           description: "An AWS codebuild project for repo: " + REPO + ", created: " + Date(),
          // note will use standard buildspec.yml
          // set the environment
          environment: {
            buildImage: CODEBUILD_IMAGE,
            computeType: CODEBUILD_COMPUTETYPE,
          },
          projectName: CODEBUILD_PROJECT_NAME,
          role: role1,
          // add in source control
          source: source,
          // set timeout - mins
          timeout: 30,
          vpc: vpc,
         securityGroups: [securityGroup]
      });

我跑..

npm run build

没有错误

然后我跑

cdk synth

得到错误..

Error: Validation failed with the following errors:
  [Quicktest2Stack/frontend-v3-codebuild/PolicyDocument] Policy must be attached to at least one principal: user, group or role
    at Synthesizer.synthesize (C:\scratch\CDKTest\quicktest2\node_modules\@aws-cdk\cdk\lib\synthesis.js:22:23)
    at App.run (C:\scratch\CDKTest\quicktest2\node_modules\@aws-cdk\cdk\lib\app.js:44:31)
    at process.<anonymous> (C:\scratch\CDKTest\quicktest2\node_modules\@aws-cdk\cdk\lib\app.js:24:51)
    at Object.onceWrapper (events.js:284:20)
    at process.emit (events.js:196:13)
Subprocess exited with error 1

因此,如果我在 CDK 中“导入”角色并尝试将其绑定到新的 CodeBuild 项目,那么它会失败(cdk 合成器)

但是我允许 CDK 在构建新的 CodeBuild 项目时创建自己的角色,然后 cdk synth 工作并且可以部署堆栈但是 codebuild 项目失败。

如果我使用 CodeBuild 项目并手动将角色更改为我尝试导入的初始角色 - 那么一切正常并且可以构建将运行。

我需要能够创建 CodeBuild 项目通过 CDK 绑定到角色。

CDK 版本:0.28.0

感激地收到任何帮助。

4

1 回答 1

1

当我将 CDK 升级到 0.31.0 后,我发现这个问题消失了。

于 2019-05-07T15:41:07.647 回答