2 个 AWS 账户的 AWS CodePipeline 最佳实践

AWS CodePipeline best practices with 2 AWS accounts

目前,我的项目使用 2 个 AWS 账户 - 一个用于暂存,我们的客户可以依赖它进行测试,另一个用于 production/live。我正在尝试为新的 serverless 应用程序设置 CodePipeline。我想知道这个设置是否合适,是否有改进的方法。

暂存 AWS 帐户: GitHub 源 -> AWS CodeBuild(在暂存环境中测试和构建)-> 手动批准门 -> 在暂存中部署应用程序

然后我会在批准生产部署之前验证暂存中的更改:

生产 AWS 账户: GitHub 源 -> AWS CodeBuild(在生产环境中测试和构建)-> 手动批准门 -> 在生产中部署应用程序

测试和构建似乎是多余的,但这样设置似乎更容易,因为我基本上可以为管道使用相同的 Cloudformation 模板。另外,我不必担心跨帐户资源访问。

每当我推送到 master 时,它基本上都会触发这两个管道。冗余是一个可以轻松修复的缺陷吗?让暂存帐户手动批准升级到生产帐户的管道并触发它是否更简单?

单独的临时帐户和生产帐户是个好主意。您是否考虑过使用单个管道(可能在第三个帐户中)?可以在 CodePipeline 中配置跨账户操作。否则,您将很难协调跨两个管道的发布。

我认为跨帐户操作是此类设置的最佳做法。也就是说,一些可能的解决方法是:

  • 手动批准可能是协调管道之间发布的最简单方法。它也是最容易出错的,因为人们很容易错误地推销错误的东西。如果提交 1 和提交 2 在短时间内发生,管道 1 可能会观察到提交 1,而管道 2 可能会观察到提交 2。
  • 将暂存管道发布到作为生产管道源的 S3 对象(即不要复制源、构建和测试阶段)。这种方法的好处是生产管道只会发布已遍历暂存管道的更改。