在中使用部署配置 CodeDeploy - AWS CodeDeploy

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

在中使用部署配置 CodeDeploy

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

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

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

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

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

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

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

注意

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

部署配置 描述
CodeDeployDefault.AllAtOnce

就地部署

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

蓝/绿部署

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

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

CodeDeployDefault。 HalfAtTime

就地部署

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

注意

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

蓝/绿部署

  • 部署到替代环境:遵循与相同的部署规则 CodeDeployDefault。 HalfAtAtime 用于就地部署。

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

CodeDeployDefault。 OneAtTime

就地部署

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

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

  • 如果已将应用程序修订部署到所有实例,则整个部署成功。此规则的例外情况是,如果无法部署到最后一个实例,则整个部署仍将成功。这是因为一次只 CodeDeploy 允许一个实例使用离线 CodeDeployDefault。 OneAt时间配置。

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

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

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

蓝/绿部署

  • 部署到替代环境:遵循与相同的部署规则 CodeDeployDefault。 OneAtAtime 用于就地部署。

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

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

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

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

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

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

注意

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

部署配置 描述

CodeDeployDefault.ecsLinear10 1 分钟 PercentEvery

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

CodeDeployDefault.ecsLinear10 3 分钟 PercentEvery

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

CodeDeployDefault.ecscanary 10% 5 分钟

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

CodeDeployDefault.ecscanary 10% 15 分钟

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

CodeDeployDefault.ECS AllAtOnce

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

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

当您通过 AWS CloudFormation 蓝/绿部署部署到 Amazon ECS 计算平台时,部署配置会指定如何将流量转移到更新后的 Amazon ECS 容器。您可以使用金丝雀线性all-at-once部署配置来转移流量。有关更多信息,请参阅 部署配置

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

注意

欧洲(米兰)、非洲(开普敦)和亚太地区(大阪)区域不支持使用 AWS CloudFormation 管理 Amazon ECS 蓝/绿部署。

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

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

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

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

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

部署配置 描述

CodeDeployDefault。 LambdaCanary10% 5 分钟

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

CodeDeployDefault。 LambdaCanary10% 10 分钟

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

CodeDeployDefault。 LambdaCanary10% 15 分钟

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

CodeDeployDefault。 LambdaCanary10% 30 分钟

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

CodeDeployDefault。 LambdaLinear10 PercentEvery 1Minute

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

CodeDeployDefault。 LambdaLinear10 PercentEvery 2 分钟

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

CodeDeployDefault。 LambdaLinear10 PercentEvery 3分钟

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

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

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

主题