

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Blue/Green 使用 Elastic Beanstalk 进行部署
<a name="using-features.CNAMESwap"></a>

**注意**  
Beanstalk 集群环境还支持通过 CNAME 交换进行 blue/green 部署。

由于 AWS Elastic Beanstalk 在更新应用程序版本时会执行就地更新，因此用户可能会在短时间内无法使用您的应用程序。为避免这种情况，请执行 blue/green 部署。如要执行此操作，将新版本部署到独立的环境，然后交换两个环境的别名记录，从而将流量立即重新导向到新版本。

如果要将环境更新到不兼容的平台版本，也需要进行 blue/green 部署。有关更多信息，请参阅 [更新 Elastic Beanstalk 环境的平台版本](using-features.platform.upgrade.md)。

Blue/green 如果您的应用程序使用生产数据库，则部署要求您的环境独立于生产数据库运行。如果您的环境中包含 Elastic Beanstalk 代表您创建的数据库，除非您执行特定操作，否则系统不会保留该环境的数据库和连接。如果您有想要保留的数据库，请使用以下 Elastic Beanstalk 数据库生命周期选项之一。在解耦数据库后，可以选择 Retain（保留）选项以保持数据库和环境的运行状态。有关更多信息，请参阅本指南*配置环境*章节中的[数据库生命周期](using-features.managing.db.md#environments-cfg-rds-lifecycle)。

有关如何将您的应用程序配置为连接到 Amazon RDS 实例（非 Elastic Beanstalk 托管）的说明，请参阅[将 Elastic Beanstalk 和 Amazon RDS 结合使用](AWSHowTo.RDS.md)。

**执行部 blue/green 署**

1. 打开 E [ lastic Beanstalk 控制台](https://console.aws.amazon.com/elasticbeanstalk)，然后在**区域**列表中选择您的。 AWS 区域

1. [克隆当前环境](using-features.managing.clone.md)，或启动运行所需平台版本的新环境。

1. 向新环境[部署新应用程序版本](using-features.deploy-existing-version.md#deployments-newversion)。

1. 在新环境上测试新版本。

1. 在环境概述页面上，选择 **Actions**（操作），然后选择 **Swap environment URLs**（交换环境 URL）。

1. 对于 **Environment name**（环境名称），请选择当前环境。  
![Swap environment URL（交换环境 URL）页面](https://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-env-swap-url.png)

1. 选择 **Swap**（交换）。

Elastic Beanstalk 交换旧环境和新环境的别名记录，以将流量从旧版本重定向到新版本。

Elastic Beanstalk 完成交换操作之后，验证在您尝试连接到旧环境 URL 时新环境是否响应。但是，在传播 DNS 更改并且您的旧 DNS 记录过期之前，请勿终止旧环境。DNS 服务器不总是会基于您在 DNS 记录中设置的存活时间（TTL）来清除其缓存中的旧记录。