带有SAM CLI交叉帐户S3的Codebuild问题

问题描述 投票:0回答:1

我在目前的公司中有多个帐户设置。我在帐户B中使用CodeBuild,正在运行一个buildspec,将已转换的sam模板上载到帐户A中的s3存储桶。因此Cloudformation包将代码的sam构建上载到“ account-a-bucket”。作业成功将工件部分中定义的转换后的模板上载到帐户B中的存储桶。尝试在帐户C中部署模板时出现问题。因为codebuild在构建步骤中创建了lambda代码工件并将对象写入到帐户外部的存储桶。当您查看存储在存储桶中的实际lambda工件时,因此s3 :: // account-a-bucket / e309uofijokasjdfokajsllsk,您将在对象权限中看到它不属于任何帐户。因此,没有人可以访问它。如何使codebuild在另一个帐户存储桶中创建对象,使其由一个帐户拥有?

同样要注意,我已经配置了存储桶策略,以向我的组织中的所有帐户授予对每个存储桶的访问权限,此外还授予该帐户的规范ID以获取权限。因此,我知道一个事实,就是创建了lambda工件时没有规范的帐户所有者,但是在帐户规范id下创建了上传的工件(在buildspec的工件部分中)。

[我知道您可以使用,例如,如果我在构建阶段使用]上传的话>

aws s3api复制对象--bucket destination_awsexammplebucket --key source_awsexamplebucket / myobject --acl bucket-owner-full-control

我可以使用--acl bucket-owner-full-control,但是aws cloudformation软件包不支持该标志。

env:
  variables:
      RELEASE_NUMBER: ""
      MINOR_NUMBER: "value"

 phases:
  install:
    runtime-versions:
       docker: 18
  build:
    commands:
      - echo Building Release Version $RELEASE_NUMBER
      - pip install --user aws-sam-cli
      - USER_BASE_PATH=$(python -m site --user-base)
      - export PATH=$PATH:$USER_BASE_PATH/bin
      - sam build -t template.yaml
      - aws cloudformation package --template-file template.yaml --s3-bucket account-a-bucket --output-template-file TransformedTemplate.yaml

artifacts:
    files:
       - TransformedTemplate.yaml
    discard-paths: yes

我在目前的公司中有多个帐户设置。我在帐户B中使用CodeBuild,正在运行一个buildspec,它将已转换的sam模板上载到帐户A中的s3存储桶。因此...

amazon-web-services amazon-s3 amazon-iam aws-codebuild aws-sam-cli
1个回答
0
投票

'aws cloudformation package'命令没有“ --acl”选项,这是您面临的问题的原因。这是一个悬而未决的问题[1],但没有任何吸引力。

© www.soinside.com 2019 - 2024. All rights reserved.