Как я могу импортировать роль для создания проекта CodeBuild в AWS CDK? - PullRequest
0 голосов
/ 30 апреля 2019

Я хотел бы импортировать роль в CDK, чтобы использовать ее для настройки нового проекта CodeBuild.

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

ПРИМЕЧАНИЕ. Я изменяю учетную запись в Арн для безопасности.

Вот код для создания проекта codebuild ..

        // 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 synth)

Но если я позволю CDK создать свою собственную роль при создании нового проекта CodeBuild, тогда cdk synth работает и стек может быть развернут, НО проект codebuild завершается неудачей.

Если я возьму проект CodeBuild и просто вручную поменяю роль на начальную, которую я пытался импортировать, - тогда все работает хорошо, и сборка будет работать.

Мне нужно иметь возможность создать проект CodeBuild и привязать к роли в через CDK.

CDK VERSION: 0.28.0

С благодарностью получена любая помощь.

1 Ответ

1 голос
/ 07 мая 2019

Я обнаружил, что эта проблема исчезла после обновления CDK до 0.31.0.

...