Amazon web services CodeBuild使用ACL将构建工件上载到S3
我有两个AWS账户。比如说A和B 帐户A使用CodeBuild生成工件并将其上载到B拥有的S3存储桶。B帐户已为该存储桶设置ACL权限,以便将写入权限授予A 工件文件已成功上载到S3存储桶。但是,B帐户对该文件没有任何权限,因为该文件归A所有 帐户A可以通过运行Amazon web services CodeBuild使用ACL将构建工件上载到S3,amazon-web-services,amazon-s3,acl,aws-codebuild,Amazon Web Services,Amazon S3,Acl,Aws Codebuild,我有两个AWS账户。比如说A和B 帐户A使用CodeBuild生成工件并将其上载到B拥有的S3存储桶。B帐户已为该存储桶设置ACL权限,以便将写入权限授予A 工件文件已成功上载到S3存储桶。但是,B帐户对该文件没有任何权限,因为该文件归A所有 帐户A可以通过运行 aws s3api put-object-acl --bucket bucket-name --key key-name --acl bucket-owner-full-control 但这必须在每次从帐户生成后手动运行。如何通过代码
aws s3api put-object-acl --bucket bucket-name --key key-name --acl bucket-owner-full-control
但这必须在每次从帐户生成后手动运行。如何通过代码构建过程向帐户B授予权限?或者帐户B如何覆盖此所有权权限错误
代码构建会自动从web挂钩开始,我的构建规范如下:
version: 0.2
env:
phases:
install:
runtime-versions:
java: openjdk8
commands:
- echo Entered the install phase...
build:
commands:
- echo Entered the build phase...
post_build:
commands:
- echo Entered the post_build phase...
artifacts:
files:
- 'myFile.txt'
我是在构建阶段使用aws cli命令完成的
version: 0.2
phases:
build:
commands:
- mvn install...
- aws s3 cp my-file s3://bucketName --acl bucket-owner-full-control
我正在使用构建阶段,因为即使构建不成功,也会执行post_构建
编辑:使用示例更新了答案。我在构建阶段使用aws cli命令完成了编辑
version: 0.2
phases:
build:
commands:
- mvn install...
- aws s3 cp my-file s3://bucketName --acl bucket-owner-full-control
我正在使用构建阶段,因为即使构建不成功,也会执行post_构建
编辑:使用示例更新答案。CodeBuild本机不支持将工件写入其他帐户,因为它没有在跨帐户对象上设置正确的ACL。这就是在CodePipeline文档中调用以下限制的原因: 以下操作类型不支持跨帐户操作:
- 詹金斯建立行动
- 代码构建或测试操作
version: 0.2
phases:
post_build:
commands:
- aws s3api list-objects --bucket testingbucket --prefix CFNtest/OutputArti >> $CODEBUILD_SRC_DIR/objects.json
- |
for i in $(jq -r '.Contents[]|.Key' $CODEBUILD_SRC_DIR/objects.json); do
echo $i
aws s3api put-object-acl --bucket testingbucket --key $i --acl bucket-owner-full-control
done
CodeBuild本机不支持将工件写入其他帐户,因为它没有在跨帐户对象上设置正确的ACL。这就是在CodePipeline文档中调用以下限制的原因: 以下操作类型不支持跨帐户操作:
- 詹金斯建立行动
- 代码构建或测试操作
version: 0.2
phases:
post_build:
commands:
- aws s3api list-objects --bucket testingbucket --prefix CFNtest/OutputArti >> $CODEBUILD_SRC_DIR/objects.json
- |
for i in $(jq -r '.Contents[]|.Key' $CODEBUILD_SRC_DIR/objects.json); do
echo $i
aws s3api put-object-acl --bucket testingbucket --key $i --acl bucket-owner-full-control
done
谢谢最后我做了类似的事情。然而,在我的情况下,我必须在每次新构建时上传一个新的工件。因此,我必须找到一种方法,用正确的ACL上传工件。我认为上面的解决方案,只是改变了ACL。后期构建发生在工件上传步骤之前。谢谢。最后我做了类似的事情。然而,在我的情况下,我必须在每次新构建时上传一个新的工件。因此,我必须找到一种方法,用正确的ACL上传工件。我认为上面的解决方案,只是改变了ACL。后期构建发生在工件上传步骤之前。