EC2/本地计算平台上的部署 - Amazon CodeDeploy
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

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

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

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

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

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

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

这些步骤包括:

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

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

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

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

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

    我们为您提供Amazon CloudFormation模板,您可使用该模板基于亚马逊 Linux 或 Windows 服务器快速设置 Amazon EC2 实例。我们还提供了独立的 CodeDeploy 代理,以便您可以将其安装在亚马逊 Linux、Ubuntu 服务器、红帽企业 Linux (RHEL) 或 Windows 服务器实例上。有关更多信息,请参阅使用 CodeDeploy 创建部署组

    您还可以指定以下选项:

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

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

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

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

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

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

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

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

设置实例

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

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

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

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

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

  4. 创建服务角色。提供服务访问权,以便 CodeDeploy 可以展开Amazonaccount.

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

注意

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

上传应用程序修订

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

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

注意

Windows 服务器实例不支持 tar 和压缩 tar 归档文件格式(.tar 和 .tar.gz)。

创建应用程序和部署组

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

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

您可以在部署组中使用多个标签组,将部署限制到一组较少的实例。有关信息,请参阅 Tagging Instances for Deployments

部署您的应用程序修订

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

更新应用程序

您可以更新应用程序,然后使用 CodeDeploy 控制台或调用创建部署命令推送修订版本。

停止和失败的部署

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

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

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

  • 部署无法停止,并且操作将返回错误。有关更多信息,请参阅 。ErrorInformation常见错误中的Amazon CodeDeployAPI 参考。

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

重新部署和部署回滚

CodeDeploy 通过将以前部署的版本重新部署为新的部署来实现回滚。

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

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

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

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