在 CodeDeploy 中使用部署配置 - Amazon CodeDeploy
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

在 CodeDeploy 中使用部署配置

部署配置是 CodeDeploy 在部署期间使用的一组规则以及成功条件和失败条件。这些规则和条件会有所不同,具体取决于您是部署到 EC2/本地计算平台、Amazon Lambda 计算平台还是 Amazon ECS 计算平台。

EC2/本地计算平台上的部署配置

当您部署到 EC2/本地计算平台时,部署配置会通过使用“正常运行的最少主机数”值和可选的“每个区域正常运行的最少主机数”值,来指定在部署过程中的任意时刻都必须保持可用的实例数或实例百分比。

您可以使用由 Amazon 提供的三种预定义的部署配置之一,也可以创建自定义部署配置。有关创建自定义部署配置的更多信息,请参阅Create a Deployment Configuration。如果您未指定部署配置,CodeDeploy 将使用 CodeDeployDefault.OneAtATime 部署配置。

有关部署期间 CodeDeploy 如何监控和评估实例运行状况的更多信息,请参阅Instance Health。要查看已注册到 Amazon 账户的部署配置列表,请参阅View Deployment Configuration Details

EC2/本地计算平台的预定义部署配置

下表列出了预定义的部署配置。

注意

没有支持 zonal configuration 功能(该功能允许您指定每个可用区正常运行的主机数量)的预定义部署配置。如果要使用此功能,您必须创建自己的部署配置

部署配置 描述
CodeDeployDefault.AllAtOnce

就地部署

一次性尝试将应用程序修订部署到尽可能多的实例。如果将应用程序修订部署到一个或多个实例,则整个部署的状态将显示为成功。如果尚未向任何实例部署应用程序修订,则整个部署的状态将显示为失败。在包含 9 个实例的示例中,CodeDeployDefault.AllAtOnce 将尝试一次性部署到所有 9 个实例。如果部署到单个实例成功,则整体部署成功。仅当所有 9 个实例的部署失败时,它才会失败。

蓝/绿部署

  • 部署到替换环境:遵循的部署规则与适用于就地部署的 CodeDeployDefault.AllAtOnce 相同。

  • 流量重新路由:将流量一次路由到替换环境的所有实例中。如果流量成功地重新路由到至少一个实例,则部署成功。如果重新路由到所有实例失败,则部署失败。

CodeDeployDefault.HalfAtATime

就地部署

一次最多可部署到一半实例(小数向下取整)。如果将应用程序修订部署到至少一半实例(小数向下取整),则整个部署成功。否则,部署失败。在包含 9 个实例的示例中,一次部署到最多 4 个实例。如果成功部署到 5 个或更多实例,则整个部署成功。否则,部署失败。

注意

如果您要部署到多个 Auto Scaling 组中的实例,则无论这些实例属于哪个 Auto Scaling 组,CodeDeploy 都会一次部署到多达一半的实例。例如,假设您有两个 Auto Scaling 组 ASG1ASG2,每个组有 10 个实例。在这种情况下,CodeDeploy 可能只会部署到 ASG1 中的 10 个实例,并认为这是成功的,因为它已部署到至少一半的实例。

蓝/绿部署

  • 部署到替换环境:遵循的部署规则与适用于就地部署的 CodeDeployDefault.HalfAtATime 相同。

  • 流量重新路由:每次将流量路由到替换环境的最多半数实例中。如果成功地重新路由到至少半数实例,则部署成功。否则, 失败。

CodeDeployDefault.OneAtATime

就地部署

一次仅将应用程序修订部署到一个实例。

对于包含多个实例的部署组:

  • 如果已将应用程序修订部署到所有实例,则整个部署成功。此规则的例外情况是,如果无法部署到最后一个实例,则整个部署仍将成功。这是因为,CodeDeploy 仅允许通过 CodeDeployDefault.OneAtATime 配置一次使一个实例脱机。

  • 一旦应用程序修订无法部署到任何实例(但最后一个实例除外),整个部署将失败。

  • 在使用 9 个实例的示例中,将一次部署到一个实例。如果部署到前 8 个实例成功,则整体部署成功。如果部署到前 8 个实例中的任何一个实例失败,则整体部署失败。

对于仅包含一个实例的部署组,整个部署仅在成功部署到单个实例时成功。

蓝/绿部署

  • 部署到替换环境:遵循的部署规则与适用于就地部署的 CodeDeployDefault.OneAtATime 相同。

  • 流量重新路由:每次将流量路由到替换环境的一个实例中。如果流量成功地重新路由到所有替换实例,则部署成功。在第一次重新路由失败后,部署失败。此规则的例外情况是,如果最后一个实例无法注册,则整个部署仍将成功。

Amazon ECS 计算平台上的部署配置

部署到 Amazon ECS 计算平台时,部署配置指定如何将流量转移到更新后的 Amazon ECS 任务集。您可以使用金丝雀线性一次性 部署配置来转移流量。有关更多信息,请参阅部署配置

您也可以创建自定义 Canary 部署或线性部署配置。有关更多信息,请参阅Create a Deployment Configuration

Amazon ECS 计算平台的预定义部署配置

下表列出了可用于 Amazon ECS 部署的预定义配置。

注意

如果您使用的是网络负载均衡器,仅支持 CodeDeployDefault.ECSAllAtOnce 预定义的部署配置。

部署配置 描述

CodeDeployDefault.ECSLinear10PercentEvery1Minutes

每分钟转移 10% 的流量,直到所有流量转移完毕。

CodeDeployDefault.ECSLinear10PercentEvery3Minutes

每隔 3 分钟转移 10% 的流量,直到所有流量转移完毕。

CodeDeployDefault.ECSCanary10Percent5Minutes

在第一次增量中转移 10% 的流量。其余 90% 部署在五分钟后进行转移。

CodeDeployDefault.ECSCanary10Percent15Minutes

在第一次增量中转移 10% 的流量。其余 90% 部署在 15 分钟后进行转移。

CodeDeployDefault.ECSAllAtOnce

将所有流量一次性转移到更新后的 Amazon ECS 容器。

Amazon CloudFormation 蓝绿部署的部署配置 (Amazon ECS)

通过 Amazon CloudFormation 蓝绿部署来部署到 Amazon ECS 时,部署配置会指定如何将流量转移到更新的 Amazon ECS 容器。您可以使用金丝雀线性一次性 部署配置来转移流量。有关更多信息,请参阅部署配置

对于 Amazon CloudFormation 蓝绿部署,您无法创建自己的自定义金丝雀或线性部署配置。有关使用 Amazon CloudFormation 管理 Amazon ECS 蓝绿部署的分步说明,请参阅《Amazon CloudFormation 用户指南》中的使用 Amazon CloudFormation 通过 CodeDeploy 自动执行 ECS 蓝绿部署

注意

中国(北京)和中国(宁夏)区域不支持使用 Amazon CloudFormation 管理 Amazon ECS 蓝绿部署。

Amazon Lambda 计算平台上的部署配置

当您部署到 Amazon Lambda 计算平台时,部署配置将指定流量转移到您应用程序中的新 Lambda 函数版本的方式。您可以使用金丝雀线性一次性 部署配置来转移流量。有关更多信息,请参阅部署配置

您也可以创建自定义 Canary 部署或线性部署配置。有关更多信息,请参阅Create a Deployment Configuration

Amazon Lambda 计算平台的预定义部署配置

下表列出了可用于 Amazon Lambda 部署的预定义配置。

部署配置 描述

CodeDeployDefault.LambdaCanary10Percent5Minutes

在第一次增量中转移 10% 的流量。其余 90% 部署在五分钟后进行转移。

CodeDeployDefault.LambdaCanary10Percent10Minutes

在第一次增量中转移 10% 的流量。其余 90% 部署在 10 分钟后进行转移。

CodeDeployDefault.LambdaCanary10Percent15Minutes

在第一次增量中转移 10% 的流量。其余 90% 部署在 15 分钟后进行转移。

CodeDeployDefault.LambdaCanary10Percent30Minutes

在第一次增量中转移 10% 的流量。其余 90% 部署在 30 分钟后进行转移。

CodeDeployDefault.LambdaLinear10PercentEvery1Minute

每分钟转移 10% 的流量,直到所有流量转移完毕。

CodeDeployDefault.LambdaLinear10PercentEvery2Minutes

每隔 2 分钟转移 10% 的流量,直到所有流量转移完毕。

CodeDeployDefault.LambdaLinear10PercentEvery3Minutes

每隔 3 分钟转移 10% 的流量,直到所有流量转移完毕。

CodeDeployDefault.LambdaLinear10PercentEvery10Minutes 每隔 10 分钟转移 10% 的流量,直到所有流量转移完毕。
CodeDeployDefault.LambdaAllAtOnce

所有流量一次性转移到更新后的 Lambda 函数。

主题