【问题标题】:CodeBuild upload build artifact to S3 with ACLCodeBuild 使用 ACL 将构建工件上传到 S3
【发布时间】:2020-05-22 16:44:46
【问题描述】:

我有 2 个 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

但这必须在每次从 A 帐户构建后手动运行。如何通过 CodeBuild 程序向账户 B 授予权限?或者帐户 B 如何覆盖此所有权权限错误。

CodeBuild 使用 web-hooks 自动启动,我的构建规范是这样的:

 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'

【问题讨论】:

    标签: amazon-web-services amazon-s3 acl aws-codebuild


    【解决方案1】:

    我是在构建阶段使用 aws cli 命令完成的。

    version: 0.2
    phases:
      build:
        commands:
          - mvn install...
          - aws s3 cp my-file s3://bucketName --acl bucket-owner-full-control
    

    我正在使用构建阶段,因为即使构建不成功也会执行 post_build。

    编辑:用示例更新答案。

    【讨论】:

      【解决方案2】:

      CodeBuild 本身不支持将工件写入其他帐户,因为它没有在跨帐户对象上设置正确的 ACL。这就是 CodePipeline 文档中提到以下限制的原因:

      以下操作类型不支持跨账户操作:

      • Jenkins 构建操作
      • CodeBuild 构建或测试操作

      https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create-cross-account.html

      一种解决方法是自己在 CodeBuild 中为工件设置 ACL:

      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。而 post_build 发生在工件上传步骤之前。
      猜你喜欢
      • 2019-05-17
      • 2020-02-04
      • 1970-01-01
      • 2021-03-29
      • 2020-12-05
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      • 2020-01-19
      相关资源
      最近更新 更多