我使用AWS CodeBuild构建应用程序,它被配置为将构建工件推送到AWS S3存储桶。 在检查S3存储桶中的artifcats /对象时,我意识到对象已被加密。
是否可以禁用artifcats / objects上的加密?
答案 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-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中禁用工件加密