我在目前的公司中有多个帐户设置。我在帐户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存储桶。因此...
'aws cloudformation package'命令没有“ --acl”选项,这是您面临的问题的原因。这是一个悬而未决的问题[1],但没有任何吸引力。