【问题标题】:AWS CodePipeline best practices with 2 AWS accounts具有 2 个 AWS 账户的 AWS CodePipeline 最佳实践
【发布时间】:2018-04-30 20:45:03
【问题描述】:

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

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

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

生产 AWS 账户: GitHub Source -> AWS CodeBuild(在 prod env 中测试和构建)-> Manual Approval Gate -> 在 prod 中部署应用程序

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

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

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-cloudformation continuous-deployment aws-codepipeline


    【解决方案1】:

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

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

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

    【讨论】:

    • 我考虑过在一个帐户中使用单个管道,但不确定它比两个完全独立的管道好多少,此外还必须将帐户与跨帐户权限交织在一起。我只是认为让两个帐户使用 cloudformation 部署相同的管道模板会更容易,并且除了必须在帐户之间切换之外没有看到太多缺点?
    • 我编辑了我的答案以解释一些解决方法。出于上述原因,我不建议通过手动批准在两个管道之间协调发布。第二种方法(或更一般地说是两个管道)的缺点是您的发布历史记录在两个管道之间拆分,因此当出现问题时调试会更加困难。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 2020-03-31
    • 2015-02-05
    • 2020-07-09
    • 2021-05-30
    • 2017-11-16
    • 2015-08-03
    相关资源
    最近更新 更多