参考部署

AWS 上的蓝/绿部署

使用 AWS CodePipeline 部署到 AWS Elastic Beanstalk 环境

此 Quick Start 将使用 AWS CodePipeline 自动在 AWS 上部署蓝/绿架构。它可在大约 15 分钟内创建持续集成/持续部署 (CI/CD) 管道。

在开发应用程序并将其部署到 AWS Elastic Beanstalk 环境时,将会有两个独立但完全相同的环境(一个蓝色,一个绿色),从而提高可用率,减少风险。在此 Quick Start 架构中,蓝色环境是指正常处理实时流量的生产环境。CI/CD 管道架构将创建实时 Elastic Beanstalk 环境(蓝色)的克隆(绿色)。之后,管道会在两个环境之间交换 URL。

在 CodePipeline 将应用程序代码部署到原始环境(并进行测试和维护)时,临时的克隆环境会负责处理实时流量。一旦成功部署到蓝色环境并完成代码审查和代码测试后,管道将再次在绿色和蓝色环境之间交换 URL。蓝色环境开始恢复处理实时流量,同时管道将终止绿色环境。

 

 

此 Quick Start 由
由 AWS 解决方案架构师开发。

 

  •  构建内容
  • 使用本 Quick Start 可为 AWS 上的蓝/绿部署配置和部署以下环境:

    • 通过部署至 AWS Elastic Beanstalk 环境的新版应用程序包上载 Amazon S3 存储桶时触发的管道。
    • AWS Lambda 函数,用于将蓝色环境克隆为绿色环境、交换 URL 以及在完成蓝色环境的部署和测试时终止绿色环境。
    • AWS CodeBuild 项目,用于在蓝色和绿色环境之间执行初始 URL 交换以及测试蓝色环境的部署。
    • 如果未提供现有 Elastic Beanstalk 环境及其所在的应用程序,此 Quick Start 就会创建一个示例环境。
    • 适用于 Lambda 函数、CodeBuild 项目、CodePipeline 的 AWS IAM 角色,以及适用于 Elastic Beanstalk 示例应用程序的服务角色。
    • 用于 CodePipeline 构件库、Lambda 函数资源以及 CodeBuild 资源的独立 Amazon S3 存储桶。您可以使用可选的 S3 存储桶来存储含有 Elastic Beanstalk 部署的应用程序代码的压缩包。
  •  如何部署
  • 要在 AWS 上构建蓝/绿架构,请遵循部署指南中的说明操作。部署过程大约需要 15 分钟,包括以下步骤:

    1. 检查先决条件。
    2. 如果您还没有 AWS 账户,请访问 https://aws.amazon.com 进行注册。
    3. (可选)记下现有的 Elastic Beanstalk 环境和应用程序。如果想启动示例环境和应用程序,可以跳过此步骤。
    4. 启动 Quick Start 并自定义您的设置。
    5. (可选)如果启用了 Git 与 S3 集成,请配置 Git 存储库。
    6. 测试部署。

    Amazon 可能会跟与 AWS 合作打造此解决方案的 AWS 合作伙伴共享用户部署信息。  

  •  费用和许可证
  • 您需要支付在运行此 Quick Start 的参考部署期间使用 AWS 服务所产生的费用。使用此 Quick Start 无需额外付费。

    此 Quick Start 会启动一个管道与 Lambda 函数、AWS CodeBuild、Amazon Simple Notification Service (SNS) 和 Elastic Beanstalk 交互,以实现经济高效的部署。您也可以借助此 Quick Start 启用 Git Webhooks 与 AWS 服务 Quick Start,以便将 Git 存储库链接至 Amazon S3。Git 与 Amazon S3 集成提供了一个 Amazon API Gateway 终端节点和相应的 Lambda 函数,用于处理向 Amazon S3 下载、压缩和部署代码的操作。

    AWS CodePipeline 的每个活动管道都会产生费用;请参阅 AWS CodePipeline 定价。AWS CodeBuild 和 Amazon SNS 采用按时间使用量付费的定价模式。有关详细信息,请参阅 AWS CodeBuildAmazon SNS。取决于您的配置,Git Webhooks 与 AWS 服务 Quick Start 可能会部署 AWS Key Management Service (AWS KMS) 密钥;有关定价信息,请参阅 AWS Key Management Service 定价。API Gateway、Amazon S3 和 Lambda 的费用会因向存储库中提交代码的频率而异。每次提交都会触发在 API Gateway 中执行 Lambda 的请求;有关详细信息,请参阅 API GatewayAmazon S3Lambda 的定价页面。