如何在AWS CodeBuild工件上禁用加密?

时间:2018-06-15 08:02:07

标签: amazon-web-services encryption amazon-s3 artifacts aws-codebuild

我使用AWS CodeBuild构建应用程序,它被配置为将构建工件推送到AWS S3存储桶。 在检查S3存储桶中的artifcats /对象时,我意识到对象已被加密。

是否可以禁用artifcats / objects上的加密?

3 个答案:

答案 0 :(得分:6)

现在在人工产物部分下面有一个名为“禁用人工产物加密”的复选框,当您将人工产物推送到S3时,该复选框使您可以禁用加密。

https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectArtifacts.html

答案 1 :(得分:1)

我知道这是一篇旧帖子,但我想补充一下我在这方面的经验。

我的要求是从代码提交存储库中获取前端资产,构建它们并将它们放入 s3 存储桶中。 s3 bucket 进一步与 cloudfront 连接,用于提供静态前端内容(在我的例子中是用 react 编写的)。

我发现 cloudfront 无法提供 KMS 加密内容,因为我在点击 cloudfront Url 时发现了 KMS.UnrecognizedClientException。我试图解决这个问题,当我发现 this

时,禁用对 aws 代码构建工件的加密似乎是最简单的解决方案

但是,我想使用 aws-cdk 来管理它。如果您尝试使用 TypeScript

解决相同的问题,aws-cdk 中的此代码段可能会派上用场

首先,获取必要的导入。对于这个答案,它会是以下内容:

import * as codecommit from '@aws-cdk/aws-codecommit';
import * as codebuild from '@aws-cdk/aws-codebuild';

然后,我在扩展到 cdk Stack 的类中使用了以下代码段 注意:如果您的类扩展到 cdk Construct


// replace these according to your requirement
const frontEndRepo = codecommit.Repository
      .fromRepositoryName(this, 'ImportedRepo', 'FrontEnd'); 

const frontendCodeBuild = new codebuild.Project(this, 'FrontEndCodeBuild', {
      source: codebuild.Source.codeCommit({ repository: frontEndRepo }),
      buildSpec: codebuild.BuildSpec.fromObject({
        version: '0.2',
        phases: {
          build: {
            commands: [
              'npm install && npm run build',
            ],
          },
        },
        artifacts: {
          files: 'build/**/*'
        }
      }),
      artifacts: codebuild.Artifacts.s3({
        bucket: this.bucket, // replace with s3 bucket object
        includeBuildId: false,
        packageZip: false,
        identifier: 'frontEndAssetArtifact',
        name: 'artifacts',
        encryption: false // added this to disable the encryption on codebuild
      }),
    });

另外为了确保每次在存储库中推送代码时都会触发构建,我在同一个类中添加了以下代码段。

// add the following line in your imports if you're using this snippet
// import * as targets from '@aws-cdk/aws-events-targets';

frontEndRepo.onCommit('OnCommit', {
  target: new targets.CodeBuildProject(frontendCodeBuild),
});

注意:这可能不是一个完美的解决方案,但到目前为止它对我来说效果很好。如果我使用 aws-cdk

找到更好的解决方案,我会更新此答案

答案 2 :(得分:-1)

无法在AWS CodeBuild中禁用工件加密