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

本指南中的过程支持新的控制台设计。如果您选择使用较旧版本的控制台,可以在本指南中找到许多仍然适用的概念和基本过程。要访问新控制台中的帮助,请选择信息图标。

CodeDeploy 主要组件

您在开始使用此项服务之前,应熟悉 CodeDeploy 部署过程中的主要组件。

Application: A name that uniquely identifies the application you want to deploy. CodeDeploy uses this name, which functions as a container, to ensure the correct combination of revision, deployment configuration, and deployment group are referenced during a deployment.

计算平台:CodeDeploy 部署应用程序的平台。

  • EC2/本地:描述可以作为 Amazon EC2 云实例和/或本地服务器的物理服务器实例。使用 EC2/本地 计算平台创建的应用程序可以包括可执行文件、配置文件和映像等。

    使用 EC2/本地 计算平台的部署通过使用就地部署或蓝/绿部署类型,管理流量定向到实例的方式。有关更多信息,请参阅 CodeDeploy 部署类型概述

  • AWS Lambda:用于部署包含更新后的 Lambda 函数版本的应用程序。AWS Lambda 管理由高可用性计算结构构成的无服务器计算环境中的 Lambda 函数。计算资源的所有管理工作均由 AWS Lambda 执行。有关更多信息,请参阅无服务器计算和应用程序。有关 AWS Lambda 和 Lambda 函数的更多信息,请参阅 AWS Lambda

    使用 AWS Lambda 计算平台创建的应用程序可以通过选择金丝雀部署、线性方式或一次性配置,管理部署过程中流量定向到更新后的 Lambda 函数版本的方式。

  • Amazon ECS:用于将 Amazon ECS 容器化应用程序部署为替换任务集。CodeDeploy 通过将容器化应用程序的更新版本安装为新的替换任务集来执行蓝/绿部署。CodeDeploy 将原始应用程序或任务集的生产流量重新路由到替换任务集。成功部署后,将会终止原始任务集。有关 Amazon ECS 的更多信息,请参阅 Amazon Elastic Container Service

部署配置:CodeDeploy 在部署期间使用的一组部署规则以及部署成功条件和失败条件。如果您的部署使用 EC2/本地 计算平台,您可以为部署指定最少数量的运行正常的实例。如果您的部署使用 AWS Lambda 计算平台,您可以指定流量路由到更新后的 Lambda 函数版本的方式。

有关对使用 EC2/本地 计算平台的部署指定最少数量运行正常的主机的更多信息,请参阅最小运行正常的实例数和部署数

在使用 AWS Lambda 计算平台的部署期间,有一些部署配置可指定流量的路由方式:

  • Canary:流量在两次增量中转移。您可以从预定义的金丝雀部署选项中选择,这些选项指定在第一次增量中转移到更新后的 Lambda 函数版本的流量百分比以及以分钟为单位的间隔;然后指定在第二次增量中转移剩余的流量。

  • 线性的:流量使用相等的增量转移,在每次增量之间的分钟数相同。您可以从预定义的线性选项中进行选择,这些选项指定在每次增量中转移的流量百分比以及每次增量之间的分钟数。

  • All-at-once:所有流量均从原始 Lambda 函数一次性地转移到更新后的 Lambda 函数版本。

部署组:一组单独的实例。部署组包含单独标记的实例和/或 Amazon EC2 Auto Scaling 组中的 Amazon EC2 实例。有关 Amazon EC2 实例标签的信息,请参阅通过控制台使用标签。有关本地实例的信息,请参阅使用本地实例。有关 Amazon EC2 Auto Scaling 的信息,请参阅将 CodeDeploy 与 Amazon EC2 Auto Scaling 集成

Deployment type: The method used to make the latest application revision available on instances in a deployment group.

  • 就地部署:停止部署组中每个实例上的应用程序,安装最新的应用程序修订版,然后启动和验证应用程序的新版本。您可以使用负载均衡器,以便在部署期间取消注册每个实例,然后在部署完成后让其重新提供服务。只有使用 EC2/本地 计算平台的部署才能使用就地部署。有关就地部署的更多信息,请参阅就地部署概述

  • 蓝/绿部署:部署的行为取决于您使用的计算平台:

    • EC2/本地 计算平台上的蓝/绿部署:部署组中的实例(原始环境)将被不同的实例集(替代环境)所代替,步骤如下:

      • 系统将为替代环境配置实例。

      • 替代实例上将安装最新的应用程序修订。

      • 对于应用程序测试和系统验证等活动来说,等待时间可选。

      • 替代环境中的实例在 Elastic Load Balancing 负载均衡器中进行注册,使得流量重新路由至这些实例。系统将撤销原始环境中的实例注册,进而终止或因其他使用情形而保持运行。

      注意

      如果您使用EC2/本地 计算平台,请注意蓝/绿部署仅适用于 Amazon EC2 实例。

    • AWS Lambda 计算平台上的蓝/绿部署:流量从当前无服务器环境转移到包含更新后的 Lambda 函数版本的环境。您可以指定执行验证测试的 Lambda 函数并选择流量转移方法。所有 AWS Lambda 计算平台部署都是蓝/绿部署。因此,您无需指定部署类型。

    • Amazon ECS 计算平台上的蓝/绿部署:流量从具有 Amazon ECS 服务中的容器化应用程序的原始版本的任务集转换为同一服务中的替换任务集。指定负载均衡器侦听器的协议和端口用于重新路由生产流量。在部署期间,测试侦听器可以用于在运行验证测试时为替换任务集提供流量。

    有关蓝/绿部署的更多信息,请参阅蓝/绿部署概述

IAM 实例配置文件:一种附加到 Amazon EC2 实例的 IAM 角色。此配置文件包含访问 Amazon S3 存储桶或 GitHub 存储库(其中存储将由 ∿ 部署的应用程序)所需的权限。有关更多信息,请参阅步骤 4:为 Amazon EC2 实例创建 IAM 实例配置文件

修订:AWS Lambda 部署修订是一种 YAML 格式或 JSON 格式的文件,指定有关要部署的 Lambda 函数的信息。EC2/本地 部署修订是一个存档文件,包含源内容(源代码、网页、可执行文件和部署脚本)以及 application specification file (AppSpec file)。AWS Lambda 修订可存储在 Amazon S3 存储桶中。EC2/本地 修订存储在 Amazon S3 存储桶或 GitHub 存储库中。对于 ,修订由其 对象键以及其 ETag 和/或版本唯一标识。对于 GitHub,修订由其提交 ID 唯一标识。

服务角色:一种用于向 AWS 服务授予权限以便可访问 AWS 资源的 IAM 角色。附加到服务角色的策略将确定服务可访问的 AWS 资源以及可使用这些资源执行的操作。对于 CodeDeploy,服务角色用于:

  • 读取应用于实例的标记或与实例关联的 Amazon EC2 Auto Scaling 组名。这使 CodeDeploy 能够标识它可将应用程序部署到的实例。

  • 针对实例、Amazon EC2 Auto Scaling 组和 Elastic Load Balancing 负载均衡器执行操作。

  • 将信息发布到 Amazon SNS 主题,以便在发生指定的部署或实例事件时能够发送通知。

  • 检索有关 CloudWatch 警报的信息,以设置部署的警报监视。

有关更多信息,请参阅 步骤 3:为 CodeDeploy 创建服务角色

目标版本:已上传到存储库并需要部署到部署组中的实例的应用程序修订的最新版本。换言之,当前面向部署的应用程序版本。这也是为自动部署提取的修订。

有关 CodeDeploy 工作流中的其他组件的信息,请参阅以下主题: