使用 pull 方法的跨账户代码管道

问题描述

我正在尝试创建一个跨帐户代码管道,但没有适合此场景的文档。

  1. Account - A 有包含 yaml 文件的 s3 存储桶
  2. 帐户- B 将拥有代码管道

账户 B 代码管道应该在源阶段使用 S3 作为来自账户 A 的源,并在部署阶段使用 cloudformation 部署方法。有人可以帮助完成此任务需要满足哪些角色和其他需求。

解决方法

要完成这项工作,您需要做两件事。

  1. 您的存储桶需要使用客户 KMS 密钥,而不是默认值。这是因为您无法向另一个账户授予使用默认密钥的权限,这意味着另一个账户无法解密存储桶中的数据。您需要在密钥策略中授予权限以允许其他帐户使用该密钥进行解密。理想情况下,不仅适用于整个帐户,还适用于您的 CodePipeline 源步骤中使用的角色。
  2. 您必须在 S3 存储桶策略中授予对其他账户的访问权限。理想情况下,不仅适用于整个帐户,还适用于您的 CodePipeline 源步骤中使用的角色。

我有一个 project 使用组织来完成其中的一些工作。这并不完全是您想要的,因为我项目中的 CodePipeline 位于“AccountT”中,并且管道运行 CloudFormation(或其他东西)在“Account-B”中运行。因此,在我的情况下,只有 CloudFormation 返回到“AccountT”中的存储桶。我认为修改它以按照您需要的方式工作并不应该是一个很大的变化。我的项目主要基于 this AWS article