AWS CodeDeploy
用户指南 (API 版本 2014-10-06)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

CodeDeploy 部署

本主题提供 CodeDeploy 中部署的组件和工作流的相关信息。部署过程因您用于部署的计算平台(EC2/本地或 Lambda)而异。

注意

以下区域不支持在 Amazon ECS 或 AWS Lambda 计算平台 上部署:亚太区域 (大阪当地)、AWS GovCloud(美国东部)、AWS GovCloud (US-West)、中国(北京) 和 中国 (宁夏)。

AWS Lambda 计算平台 上的部署

本主题提供了有关使用 AWS Lambda 计算平台的 CodeDeploy 部署的组件和工作流程的信息。

AWS Lambda 计算平台上的部署组件

下图显示了 AWS Lambda 计算平台上的 CodeDeploy 部署中的组件。

AWS Lambda 计算平台上的部署工作流程

下图显示了部署新增和更新 AWS Lambda 函数的主要步骤。

这些步骤包括:

  1. 创建应用程序并为其指定唯一标识要部署的应用程序修订的名称。要部署 Lambda 函数,您在创建应用程序时选择 AWS Lambda 计算平台。CodeDeploy 将在部署期间使用此名称以确保引用正确的部署组件,例如部署组、部署配置和应用程序修订。有关更多信息,请参阅 使用 CodeDeploy 创建应用程序

  2. 通过指定部署组的名称设置部署组。

  3. 选择部署配置以指定如何将流量从原始 AWS Lambda 函数版本转移到新的 Lambda 函数版本。有关更多信息,请参阅 查看部署配置详细信息

  4. 指定一个application specification file (AppSpec file)。您可以将文件上传到 Amazon S3,以 YAML 或 JSON 格式将它输入控制台,或者使用 AWS CLI 或开发工具包指定它。AppSpec file指定用于部署的 Amazon ECS 任务定义,用于路由流量的容器名称和端口映射,以及在部署生命周期挂钩之后运行的 Lambda 函数。如果您不想创建 AppSpec file,您可以在控制台中以 YAML 或 JSON 格式直接输入此信息。有关更多信息,请参阅使用 CodeDeploy 的应用程序修订

  5. 将应用程序修订部署到部署组。AWS CodeDeploy 可部署您指定的 Lambda 函数修订。流量使用您在创建应用程序时选择的部署 AppSpec 文件转移到您的 Lambda 函数修订。有关更多信息,请参阅 使用 CodeDeploy 创建部署

  6. 检查部署结果。有关更多信息,请参阅 在 CodeDeploy 中监控部署

上传应用程序修订

将 AppSpec file放入 Amazon S3 中或将其直接输入到控制台或 AWS CLI 中。有关更多信息,请参阅 应用程序规范文件

创建应用程序和部署组

AWS Lambda 计算平台上的 CodeDeploy 部署组识别一个或多个 AppSpec 文件的集合。每个 AppSpec file可以部署一个 Lambda 函数版本。部署组还定义一些用于未来部署的配置选项,例如警报和回滚配置。

部署应用程序修订

现在您已做好准备,可将 AppSpec file中指定的函数修订部署到部署组。可以使用 CodeDeploy 控制台或 create-deployment 命令。可以指定一些参数(包括修订、部署组和部署配置)来控制部署。

更新应用程序

您可以更新应用程序,然后使用 CodeDeploy 控制台或调用 create-deployment 命令推送修订。

停止和失败的部署

您可以使用 CodeDeploy 控制台或 stop-deployment 命令停止部署。当您尝试停止部署时,将发生下面三种情况之一:

  • 部署将停止,并且操作将返回成功状态。在这种情况下,没有更多的部署生命周期事件将在已停止部署的部署组上运行。

  • 部署将不会立即停止,并且操作将返回挂起状态。在这种情况下,一些部署生命周期事件可能仍在部署组上运行。在挂起的操作完成后,停止部署的后续调用将返回成功状态。

  • 部署无法停止,并且操作将返回错误。有关更多信息,请参阅 AWS CodeDeploy API Reference中的错误信息常见错误

与停止的部署一样,失败的部署可能导致某些部署生命周期事件已在运行。要查明部署失败的原因,可以使用 CodeDeploy 控制台或分析失败部署中的日志文件数据。有关更多信息,请参阅 应用程序修订和日志文件清理查看 CodeDeploy EC2/本地部署的日志数据

重新部署和部署回滚

CodeDeploy 实现回滚的方式是将以前部署的版本重新部署为新的部署。

您可以对部署组进行配置,使之在满足特定条件(例如部署失败或达到警报监控阈值)时自动回滚部署。您还可以在单个部署中覆盖为部署组指定的回滚设置。

另外,也可以选择通过手动重新部署以前部署的版本回滚失败的部署。

在所有情况下,新的或回滚的部署都分配有自己的部署 ID。您可以在 CodeDeploy 控制台中查看的部署列表显示哪些部署是自动部署的结果。

有关更多信息,请参阅使用 CodeDeploy 重新部署和回滚部署

Amazon ECS 计算平台 上的部署

本主题提供了有关使用 Amazon ECS 计算平台的 CodeDeploy 部署的组件和工作流程的信息。

在开始 Amazon ECS 部署之前

在开始 Amazon ECS 应用程序部署之前,必须准备好以下事项。创建部署组时指定了一些要求,并且某些要求在 AppSpec file中指定。

要求 指定的位置
Amazon ECS 集群 部署组
Amazon ECS 服务 部署组
应用程序负载均衡器 或者 Network Load Balancer 部署组
生产侦听器 部署组
测试侦听器(可选) 部署组
两个目标组 部署组
Amazon ECS 任务定义 AppSpec file
容器名称 AppSpec file
容器端口 AppSpec file
Amazon ECS 集群

Amazon ECS 集群 是任务或服务的逻辑分组。在创建 CodeDeploy 应用程序的部署组时,需要指定包含 Amazon ECS 服务的 Amazon ECS 集群。有关更多信息,请参阅 Amazon Elastic Container Service 用户指南 中的 Amazon ECS 集群

Amazon ECS 服务

Amazon ECS 服务 维护并运行 Amazon ECS 集群中任务定义的指定实例。CodeDeploy 必须已启用 Amazon ECS 服务。默认情况下,Amazon ECS 部署已启用 Amazon ECS 服务。当您创建部署组时,您需要选择部署 Amazon ECS 集群中的 Amazon ECS 服务。有关更多信息,请参阅 Amazon Elastic Container Service 用户指南 中的 Amazon ECS 服务

应用程序负载均衡器 或者 Network Load Balancer

在要随 Amazon ECS 部署一起更新的 Amazon ECS 服务中,您必须使用 Elastic Load Balancing。您可以使用 应用程序负载均衡器 或 Network Load Balancer。我们建议使用 应用程序负载均衡器,以便您可以利用动态端口映射和基于路径的路由和优先级规则等功能。在创建 CodeDeploy 应用程序的部署组时,您需要指定负载均衡器。有关更多信息,请参阅 Amazon Elastic Container Service 用户指南 中的创建负载均衡器

一个或两个侦听器

侦听器 由负载均衡器用于将流量定向到目标组。必须提供一个生产侦听器。您可以指定可选的第二个测试侦听器,在您运行验证测试时该侦听器可以将流量定向到替换任务集。在创建部署组时,您需要指定一个或两个侦听器。如果您使用 Amazon ECS 控制台创建 Amazon ECS 服务,系统会为您创建侦听器。有关更多信息,请参阅 Elastic Load Balancing 用户指南 中的 Application Load Balancer 的侦听器以及 Amazon Elastic Container Service 用户指南 中的创建服务

两个 Amazon ECS 目标组

目标组 用于将流量路由到一个注册目标。一个 Amazon ECS 部署需要两个目标组:一个用于 Amazon ECS 应用程序的原始任务集,另一个用于其替换任务集。在部署过程中,CodeDeploy 会创建替换任务集,并将流量从原始任务集重新路由到新的任务集。在创建 CodeDeploy 应用程序的部署组时,您需要指定目标组。

在部署期间,CodeDeploy 会确定哪个目标组与 Amazon ECS 服务中状态为 PRIMARY(这是原始任务集)的任务集关联,并将一个目标组与其关联,然后将另一个目标组与替换任务集关联。如果执行其他部署,则与当前部署的原始任务集关联的目标组将与下一个部署的替换任务集关联。有关更多信息,请参阅 Elastic Load Balancing 用户指南 中的您的 Application Load Balancer 的目标组

Amazon ECS 任务定义

运行包含 Amazon ECS 应用程序的 Docker 容器需要任务定义。您需要在 CodeDeploy 应用程序的 AppSpec file中指定任务定义的 ARN。有关更多信息,请参阅 Amazon Elastic Container Service 用户指南 中的 Amazon ECS 任务定义以及 用于 Amazon ECS 部署的 AppSpec 的“resources”部分

您的 Amazon ECS 应用程序的容器

Docker 容器 是一套打包代码及其依赖项以便应用程序运行的软件。容器可以隔离您的应用程序,使其在不同的计算环境中运行。负载均衡器将流量定向到 Amazon ECS 应用程序任务集中的容器。您需要在 CodeDeploy 应用程序的 AppSpec file中指定容器的名称。AppSpec file中指定的容器必须是 Amazon ECS 任务定义中指定的容器之一。有关更多信息,请参阅 Amazon Elastic Container Service 用户指南 中的什么是 Amazon Elastic Container Service?以及 用于 Amazon ECS 部署的 AppSpec 的“resources”部分

您的替换任务集的端口

在 Amazon ECS 部署期间,负载均衡器会将流量定向到您 CodeDeploy 应用程序的 AppSpec file所指定容器上的端口。您需要在 CodeDeploy 应用程序的 AppSpec file中指定端口。有关更多信息,请参阅 用于 Amazon ECS 部署的 AppSpec 的“resources”部分

Amazon ECS 计算平台上的部署组件

下图显示了 Amazon ECS 计算平台上的 CodeDeploy 部署中的组件。

Amazon ECS 计算平台上的部署工作流(高级)

下图显示部署更新的 Amazon ECS 服务的主要步骤。

这些步骤包括:

  1. 通过指定一个唯一表示要部署的内容的名称,创建 AWS CodeDeploy 应用程序。要部署 Amazon ECS 应用程序,您可以在 AWS CodeDeploy 应用程序中选择 Amazon ECS 计算平台。CodeDeploy 在部署期间使用应用程序来引用正确的部署组件,例如部署组、目标组、侦听器、流量重新路由行为和应用程序修订。有关更多信息,请参阅 使用 CodeDeploy 创建应用程序

  2. 通过指定以下内容设置部署组:

    • 部署组名称。

    • 您的 Amazon ECS 集群和服务名称。Amazon ECS 服务的部署控制器必须设置为 CodeDeploy。

    • 生产侦听器、可选的测试侦听器以及在部署期间使用的目标组。

    • 部署设置,例如何时将生产流量重新路由到 Amazon ECS 服务中的替换 Amazon ECS 任务集以及何时终止 Amazon ECS 服务中的原始 Amazon ECS 任务集。

    • 可选设置,如触发器、警报和回滚行为。

  3. 指定一个application specification file (AppSpec file)。您可以将它上传到 Amazon S3,以 YAML 或 JSON 格式将它输入控制台,或者使用 AWS CLI 或开发工具包指定它。AppSpec file指定用于部署的 Amazon ECS 任务定义,用于路由流量的容器名称和端口映射,以及在部署生命周期挂钩之后运行的 Lambda 函数。容器名称必须是您的 Amazon ECS 任务定义中的容器。有关更多信息,请参阅使用 CodeDeploy 的应用程序修订

  4. 部署您的应用程序修订。AWS CodeDeploy 从 Amazon ECS 服务中任务集的原始版本将流量重新路由到新的替换任务集。部署组中指定的目标组用于处理传输到原始和替换任务集的流量。在部署完成后,会终止原始任务集。您可以指定一个可选的测试侦听器,以便在将流量重新路由到替换版本之前为其提供测试流量。有关更多信息,请参阅 使用 CodeDeploy 创建部署

  5. 检查部署结果。有关更多信息,请参阅 在 CodeDeploy 中监控部署

在 Amazon ECS 部署过程中发生的事件

在启动具有测试侦听器的 Amazon ECS 部署之前,您必须配置其组件。有关更多信息,请参阅 在开始 Amazon ECS 部署之前

下图显示了在准备好启动 Amazon ECS 部署时,这些组件之间的关系。

当部署启动时,开始一次执行一个部署生命周期事件。一些生命周期事件是挂钩,仅执行在 AppSpec file中指定的 Lambda 函数。下表中的部署生命周期事件按照执行的顺序列出。有关更多信息,请参阅用于 Amazon ECS 部署的 AppSpec 的“hooks”部分

生命周期事件 生命周期事件操作
BeforeInstall(Lambda 函数的挂钩) 运行 Lambda 函数。
安装 设置替换任务集。
AfterInstall(Lambda 函数的挂钩) 运行 Lambda 函数。
AllowTestTraffic 将流量从测试侦听器路由至目标组 2。
AfterAllowTestTraffic(Lambda 函数的挂钩) 运行 Lambda 函数。
BeforeAllowTraffic(Lambda 函数的挂钩) 运行 Lambda 函数。
AllowTraffic 将流量从生产侦听器路由至目标组 2。
AfterAllowTraffic 运行 Lambda 函数。

注意

挂钩中的 Lambda 函数是可选的。

  1. 执行在 AppSpec file 的 BeforeInstall 挂钩中指定的任意 Lambda 函数。

  2. Install 生命周期事件期间:

    1. 在您的 Amazon ECS 服务中创建替换任务集。

    2. 更新后的容器化应用程序安装到替换任务集中。

    3. 第二个目标组与替换任务集关联。

    此图显示具有新替换任务集的部署组件。容器化应用程序位于此任务集的内部。任务集包含三个任务。(应用程序可以具有任意数量的任务。) 第二个目标组现与替换任务集关联。

  3. 执行在 AppSpec file的 AfterInstall 挂钩中指定的任意 Lambda 函数。

  4. 调用了 AllowTestTraffic 事件。在此生命周期事件中,测试侦听器将流量路由到更新后的容器化应用程序中。

  5. 执行在 AppSpec file的 AfterAllowTestTraffic 挂钩中指定的任意 Lambda 函数。Lambda 函数可以使用测试流量验证部署。例如,Lambda 函数可以向测试侦听器提供流量,并跟踪替换任务集的指标。如果配置了回滚,则您可以配置 CloudWatch 警报,在 Lambda 函数中的验证测试失败时触发回滚。

    验证测试完成后,将会发生以下情况之一:

    • 如果验证失败并配置了回滚,则部署状态标记为 Failed,组件返回其开始部署时的状态。

    • 如果验证失败但未配置回滚,则部署状态标记为 Failed,并且组件保持其当前状态。

    • 如果验证成功,则部署将继续到 BeforeAllowTraffic 挂钩。

    有关更多信息,请参阅在 CodeDeploy 中使用 CloudWatch 警报监控部署自动回滚为部署组配置高级选项

  6. 执行在 AppSpec file的 BeforeAllowTraffic 挂钩中指定的任意 Lambda 函数。

  7. 调用了 AllowTraffic 事件。生产流量从原始任务集重新路由到替换任务集。下图显示了接收生产流量的替换任务集。

  8. 执行在 AppSpec file的 AfterAllowTraffic 挂钩中指定的任意 Lambda 函数。

  9. 所有事件成功后,部署状态设置为 Succeeded 并删除原始任务集。

上传应用程序修订

将 AppSpec file放入 Amazon S3 中或将其直接输入到控制台或 AWS CLI 中。有关更多信息,请参阅 应用程序规范文件

创建应用程序和部署组

Amazon ECS 计算平台上的 CodeDeploy 部署组可以标识侦听器,以便处理传输到更新的 Amazon ECS 应用程序和部署期间使用的两个目标组的流量。部署组还定义一组配置选项,例如警报和回滚配置。

部署应用程序修订

现在,您已准备好部署在部署组中指定的更新的 Amazon ECS 服务。可以使用 CodeDeploy 控制台或 create-deployment 命令。可以指定一些参数(包括修订和部署组)来控制部署。

更新应用程序

您可以更新应用程序,然后使用 CodeDeploy 控制台或调用 create-deployment 命令推送修订。

停止和失败的部署

您可以使用 CodeDeploy 控制台或 stop-deployment 命令停止部署。当您尝试停止部署时,将发生下面三种情况之一:

  • 部署将停止,并且操作将返回成功状态。在这种情况下,没有更多的部署生命周期事件将在已停止部署的部署组上运行。

  • 部署将不会立即停止,并且操作将返回挂起状态。在这种情况下,一些部署生命周期事件可能仍在部署组上运行。在挂起的操作完成后,停止部署的后续调用将返回成功状态。

  • 部署无法停止,并且操作将返回错误。有关更多信息,请参阅 AWS CodeDeploy API Reference 中的错误信息常见错误

重新部署和部署回滚

CodeDeploy 通过将流量从替换任务集重新路由到原始任务集来实现回滚。

您可以对部署组进行配置,使之在满足特定条件(例如部署失败或达到警报监控阈值)时自动回滚部署。您还可以在单个部署中覆盖为部署组指定的回滚设置。

另外,也可以选择通过手动重新部署以前部署的版本回滚失败的部署。

在所有情况下,新的或回滚的部署都分配有自己的部署 ID。CodeDeploy 控制台显示列出自动部署结果的部署列表。

如果进行重新部署,则与当前部署的原始任务集关联的目标组将与重新部署的替换任务集关联。

有关更多信息,请参阅使用 CodeDeploy 重新部署和回滚部署

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

本主题提供了有关使用 EC2/本地 计算平台的 CodeDeploy 部署的组件和工作流程的信息。有关蓝/绿部署的信息,请参阅蓝/绿部署概述

EC2/本地计算平台上的部署组件

下图显示了 EC2/本地计算平台上的 CodeDeploy 部署中的组件。

EC2/本地计算平台上的部署工作流程

下图显示部署应用程序修订的主要步骤:

这些步骤包括:

  1. 创建应用程序,并向其提供唯一标识您要部署的应用程序修订的名称以及应用程序的计算平台。CodeDeploy 将在部署期间使用此名称来确保引用正确的部署组件,例如,部署组、部署配置和应用程序修订。有关更多信息,请参阅 使用 CodeDeploy 创建应用程序

  2. 指定部署类型以及要将应用程序修订部署到的实例,以此来设置部署组。就地部署将使用最新的应用程序修订更新实例。蓝/绿部署向负载均衡器注册部署组的一组替换实例并取消注册原始实例。

    可以指定应用于实例的标签和/或 Amazon EC2 Auto Scaling 组名称。

    如果在部署组中指定一组标签,CodeDeploy 将部署到至少应用了一个指定标签的实例。如果您指定两个或多个标签组,CodeDeploy 将只部署到满足每个标签组条件的实例。有关更多信息,请参阅标记实例,便于 AWS CodeDeploy 部署

    在所有情况下,实例必须配置为在部署中使用(即,它们必须已标记或属于 Amazon EC2 Auto Scaling 组),并且已安装并运行 CodeDeploy 代理。

    我们提供了一个 AWS CloudFormation 模板,您可使用该模板基于 Amazon Linux 或 Windows Server 快速设置 Amazon EC2 实例。我们还提供了独立的 CodeDeploy 代理,使您可以将其安装在 Amazon Linux、Ubuntu Server、Red Hat Enterprise Linux (RHEL) 或 Windows Server 实例上。有关更多信息,请参阅 使用 CodeDeploy 创建部署组

    您还可以指定以下选项:

    • Amazon SNS 通知。创建触发器,以便在部署和实例中发生指定的事件(例如,成功或失败事件)时,向 Amazon SNS 主题的订阅者发送通知。有关更多信息,请参阅 使用 Amazon SNS 事件通知监控部署

    • 基于警报的部署管理。实现 Amazon CloudWatch 警报监控,以在指标超出或低于 CloudWatch 中设置的阈值时停止部署。

    • 自动部署回滚。配置部署,使之在部署失败或达到警报阈值时自动回滚到已知良好的版本。

  3. 指定部署配置,以指示您的应用程序修订需要同时部署多少个实例,以及说明部署到成功和失败条件。有关更多信息,请参阅 查看部署配置详细信息

  4. 将应用程序修订上传到 Amazon S3 或 GitHub。除了要部署的文件和要在部署期间运行的所有脚本外,您还必须包含application specification file(AppSpec file)。该文件包含部署说明,例如,要将文件复制到的每个实例上的位置,以及运行部署脚本的时间。有关更多信息,请参阅使用 CodeDeploy 的应用程序修订

  5. 将应用程序修订部署到部署组。部署组中每个实例的 CodeDeploy 代理将您的应用程序修订从 Amazon S3 或 GitHub 复制到该实例。然后,CodeDeploy 代理将取消捆绑修订,使用 AppSpec file将相应文件复制到指定的位置并执行任何部署脚本。有关更多信息,请参阅 使用 CodeDeploy 创建部署

  6. 检查部署结果。有关更多信息,请参阅 在 CodeDeploy 中监控部署

  7. 部署修订。如果您需要修复源内容中的错误,或以不同顺序运行部署脚本,或处理失败的部署,则可能需要重新部署。为此,您可将修订后的源内容、所有部署脚本和 AppSpec file重新捆绑成一个新修订,然后将该修订上传到 Amazon S3 存储桶或 GitHub 存储库。然后,使用新修订执行到同一部署组的新部署。有关更多信息,请参阅 使用 CodeDeploy 创建部署

设置实例

您必须先设置实例,然后才能首次部署应用程序修订。如果一个应用程序修订需要三个生产服务器和两个备份服务器,您将启动或使用五个实例。

要手动预配置实例,请执行以下操作:

  1. 在实例上安装 CodeDeploy 代理。CodeDeploy 代理可安装在 Amazon Linux、Ubuntu Server、RHEL 和 Windows Server 实例上。

  2. 如果要使用标签来标识部署组中的实例,请启用标记。CodeDeploy 依赖标签来标识实例并将其分组到 CodeDeploy 部署组。尽管入门教程同时使用了键和值,但是您可以只使用键或值为部署组定义标签。

  3. 启动附加有 IAM 实例配置文件的 Amazon EC2 实例。IAM 实例配置文件必须附加到所启动的 Amazon EC2 实例,以便让 CodeDeploy 代理验证该实例的身份。

  4. 创建服务角色。提供服务访问权,以便 CodeDeploy 可以展开您的 AWS 账户中的标签。

对于初始部署,AWS CloudFormation 模板将为您完成所有这些操作。它基于已安装 CodeDeploy 代理的 Amazon Linux 或 Windows Server 创建并配置单个新 Amazon EC2 实例。有关更多信息,请参阅使用适用于 CodeDeploy 的实例

注意

对于蓝/绿部署,您可以选择使用您已有的用于替换环境的实例,或者也可以选择让 CodeDeploy 在部署过程中为您预置新实例。

上传应用程序修订

将 AppSpec file放在应用程序源内容文件夹结构中的根文件夹下。有关更多信息,请参阅 应用程序规范文件

将应用程序源内容文件夹结构捆绑成存档文件格式,例如 zip、tar 或压缩的 tar。将该存档文件(修订)上传到 Amazon S3 存储桶或 GitHub 存储库。

注意

The tar and compressed tar archive file formats (.tar and .tar.gz) are not supported for Windows Server instances.

创建应用程序和部署组

CodeDeploy 部署组基于实例的标签和/或 Amazon EC2 Auto Scaling 组名称标识实例集合。可以向同一实例部署多个应用程序修订。可以向多个实例部署一个应用程序修订。

例如,可以为三个生产服务器添加标签“Prod”,为两个备份服务器添加标签“Backup”。这两个标签可用于在 CodeDeploy 应用程序中创建两种不同的部署组,从而使您能够选择应参与部署的一组或两组服务器。

您可以在部署组中使用多个标签组,将部署限制到一组较少的实例。有关信息,请参阅 标记实例,便于 AWS CodeDeploy 部署

部署应用程序修订

现在,您可以开始将您的应用程序修订从 Amazon S3 或 GitHub 部署到部署组。可以使用 CodeDeploy 控制台或 create-deployment 命令。可以指定一些参数(包括修订、部署组和部署配置)来控制部署。

更新应用程序

您可以更新应用程序,然后使用 CodeDeploy 控制台或调用 create-deployment 命令推送修订。

停止和失败的部署

您可以使用 CodeDeploy 控制台或 stop-deployment 命令停止部署。当您尝试停止部署时,将发生下面三种情况之一:

  • 部署将停止,并且操作将返回成功状态。在这种情况下,没有更多的部署生命周期事件将在已停止部署的部署组上运行。一些文件可能已复制到部署组中的一个或多个实例,并且一些脚本可能已在一个或多个实例上运行。

  • 部署将不会立即停止,并且操作将返回挂起状态。在这种情况下,一些部署生命周期事件可能仍在部署组上运行。一些文件可能已复制到部署组中的一个或多个实例,并且一些脚本可能已在一个或多个实例上运行。在挂起的操作完成后,停止部署的后续调用将返回成功状态。

  • 部署无法停止,并且操作将返回错误。有关更多信息,请参阅 AWS CodeDeploy API Reference中的错误信息常见错误

与停止的部署一样,失败的部署可能导致一些部署生命周期事件已在部署组中的一个或多个实例上运行。要找出部署失败的原因,您可以使用 CodeDeploy 控制台调用 get-deployment-instance 命令或分析失败部署的日志文件数据。有关更多信息,请参阅 应用程序修订和日志文件清理查看 CodeDeploy EC2/本地部署的日志数据

重新部署和部署回滚

CodeDeploy 实现回滚的方式是将以前部署的版本重新部署为新的部署。

您可以对部署组进行配置,使之在满足特定条件(例如部署失败或达到警报监控阈值)时自动回滚部署。您还可以在单个部署中覆盖为部署组指定的回滚设置。

另外,也可以选择通过手动重新部署以前部署的版本回滚失败的部署。

在所有情况下,新的或回滚的部署都分配有自己的部署 ID。您可以在 CodeDeploy 控制台中查看的部署列表显示哪些部署是自动部署的结果。

有关更多信息,请参阅 使用 CodeDeploy 重新部署和回滚部署