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

AWS CodeDeploy 主要组件

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

Application: A name that uniquely identifies the application you want to deploy. AWS 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.

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

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

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

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

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

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

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

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

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

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

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

部署组:一组单独的实例。部署组中包含单独标记的实例和/或 Auto Scaling 组中的 Amazon EC2 实例。有关 Amazon EC2 实例标签的信息,请参阅通过控制台使用标签。有关本地实例的信息,请参阅Working with On-Premises Instances。有关 Auto Scaling 的信息,请参阅将 AWS CodeDeploy 与 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 计算平台部署都是蓝/绿部署。因此,您无需指定部署类型。

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

IAM instance profile: An IAM role that you attach to your Amazon EC2 instances. This profile includes the permissions required to access the Amazon S3 buckets or GitHub repositories where the applications that will be deployed by AWS CodeDeploy are stored. For more information, see 步骤 4:为 Amazon EC2 实例创建 IAM 实例配置文件.

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

Service role: An IAM role that grants permissions to an AWS service so it can access AWS resources. The policies you attach to the service role determine which AWS resources the service can access and the actions it can perform with those resources. For AWS CodeDeploy, a service role is used for the following:

  • To read either the tags applied to the instances or the Amazon EC2 Auto Scaling group names associated with the instances. This enables AWS CodeDeploy to identify instances to which it can deploy applications.

  • To perform operations on instances, Auto Scaling groups, and Elastic Load Balancing load balancers.

  • To publish information to Amazon SNS topics so that notifications can be sent when specified deployment or instance events occur.

  • To retrieve information about CloudWatch alarms in order to set up alarm monitoring for deployments.

For more information, see 步骤 3:为 AWS CodeDeploy 创建服务角色.

Target revision: The most recent version of the application revision that you have uploaded to your repository and want to deploy to the instances in a deployment group. In other words, the application revision currently targeted for deployment is the target revision. This is also the revision that will be pulled for automatic deployments.

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