

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

# CodeDeploy 主要组件
<a name="primary-components"></a>

在开始使用该服务之前，您应该熟悉 CodeDeploy 部署过程的主要组成部分。

**Topics**
+ [应用程序](#primary-components-application)
+ [计算平台](#primary-components-compute-platform)
+ [部署配置](#primary-components-deployment-configuration)
+ [部署组](#primary-components-deployment-group)
+ [部署类型](#primary-components-deployment-type)
+ [IAM 实例配置文件](#primary-components-iam-instance-profile)
+ [修订](#primary-components-revision)
+ [服务角色](#primary-components-service-role)
+ [目标修订](#primary-components-target-revision)
+ [其他组件](#primary-components-other-components)

## 应用程序
<a name="primary-components-application"></a>

*应用程序*是唯一标识要部署的应用程序的名称。 CodeDeploy 使用此名称（用作容器）来确保在部署期间引用修订版、部署配置和部署组的正确组合。

## 计算平台
<a name="primary-components-compute-platform"></a>

*计算平台*是 CodeDeploy 部署应用程序的平台。有三个计算平台：
+ **EC2/本地**：描述物理服务器的实例，这些实例可以是 Amazon EC2 云实例、本地服务器或两者兼而有之。使用 EC2 /Londest 计算平台创建的应用程序可以由可执行文件、配置文件、图像等组成。

  使用 EC2 /Onlide 计算平台的部署使用就地部署或蓝/绿部署类型来管理流量定向到实例的方式。有关更多信息，请参阅 [CodeDeploy 部署类型概述](welcome.md#welcome-deployment-overview)。
+ **AWS Lambda**：用于部署由 Lambda 函数的更新版本组成的应用程序。 AWS Lambda 在由高可用性计算结构组成的无服务器计算环境中管理 Lambda 函数。计算资源的所有管理均由执行 AWS Lambda。有关更多信息，请参阅[无服务器计算和应用程序](https://aws.amazon.com/serverless/)。有关 AWS Lambda 和 Lambda 函数的更多信息，请参阅。[AWS Lambda](https://aws.amazon.com/lambda/)

  您可以通过选择金丝雀、线性或 all-at-once配置来管理部署期间流量转移到更新后的 Lambda 函数版本的方式。
+ **Amazon ECS**：用于将 Amazon ECS 容器化应用程序部署为任务集。 CodeDeploy 通过将应用程序的更新版本安装为新的替换任务集来执行 blue/green 部署。 CodeDeploy 将生产流量从原始应用程序任务集重新路由到替换任务集。成功部署后，将会终止原始任务集。有关 Amazon ECS 的更多信息，请参阅 [Amazon Elastic Container Service](https://aws.amazon.com/ecs/)。

  通过选择金丝雀、线性或 all-at-once配置，您可以管理在部署期间将流量转移到更新的任务集的方式。

**注意**  
 CodeDeploy 和都支持 Amazon ECS blue/green 部署 CloudFormation。这些部署的详细信息将在后续章节中介绍。

## 部署配置
<a name="primary-components-deployment-configuration"></a>

*部署配置*是部署 CodeDeploy 期间使用的一组部署规则以及部署成功和失败条件。如果您的部署使用 EC2 /Unlide 计算平台，则可以为部署指定运行正常的实例的最小数量。如果您的部署使用 AWS Lambda 或 Amazon ECS 计算平台，则可以指定如何将流量路由到更新后的 Lambda 函数或 ECS 任务集。

有关为使用 EC2 /Londest 计算平台的部署指定最少运行正常主机数的更多信息，请参阅[关于最小运行正常的实例数](instances-health.md#minimum-healthy-hosts)。

在使用 Lambda 或 ECS 计算平台的部署期间，有一些部署配置可指定流量的路由方式：
+ **Canary**：流量将通过两次递增进行转移。您可以从预定义的金丝雀部署选项中选择，这些选项指定在第一次增量中转移到更新后的 Lambda 函数或 ECS 任务集的流量百分比以及以分钟为单位的间隔；然后指定在第二次增量中转移剩余的流量。
+ **线性部署**：流量使用相等的增量转移，在每次递增之间间隔的分钟数相同。您可以从预定义的线性选项中进行选择，这些选项指定在每次增量中转移的流量百分比以及每次增量之间的分钟数。
+ **答 ll-at-once**：所有流量将同时从原来的 Lambda 函数或 ECS 任务集转移到更新的函数或任务集。

## 部署组
<a name="primary-components-deployment-group"></a>

*部署组* 是一组单独的实例。部署组包含单独标记的实例、Amazon A EC2 uto Scaling 组中的亚马逊 EC2 实例，或两者兼而有之。有关 Amazon EC2 实例标签的信息，请参阅[使用控制台处理标签](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#Using_Tags_Console)。有关本地实例的信息，请参阅[使用本地实例 CodeDeploy](instances-on-premises.md)。有关 Amazon A EC2 uto Scaling 的信息，请参阅[CodeDeploy 与亚马逊 EC2 Auto Scaling 集成](integrations-aws-auto-scaling.md)。

## 部署类型
<a name="primary-components-deployment-type"></a>

*部署类型* 是一种用于在部署组中的实例上提供最新应用程序修订的方法。具有两种部署类型：
+ **就地部署**：停止部署组中每个实例上的应用程序，安装最新的应用程序修订，然后启动和验证应用程序的新版本。您可以使用负载均衡器，以便在部署期间取消注册每个实例，然后在部署完成后让其重新提供服务。只有使用 EC2 /Unlide 计算平台的部署才能使用就地部署。有关就地部署的更多信息，请参阅[就地部署概述](welcome.md#welcome-deployment-overview-in-place)。
+ **蓝绿部署**：部署的行为取决于使用的计算平台：
  + **Blue/green on an EC2/On-本地计算平台**：使用以下步骤将部署组（原始环境）中的实例替换为另一组实例（替换环境）：
    + 为替换环境配置实例。
    + 在替换实例上安装最新的应用程序修订。
    + 对于应用程序测试和系统验证等活动，可以选择等待时间。
    + 替换环境中的实例在一个或多个 Elastic Load Balancing 负载均衡器中注册，从而导致流量被重新路由到这些负载均衡器。原始环境中的实例已注销，可以终止或继续运行以用于其他用途。
**注意**  
如果您使用 EC2 /本地计算平台，请注意 blue/green 部署仅适用于 Amazon EC2 实例。
  + 或 ** AWS Lambda Amazon ECS 计算平台上的蓝/绿**：流量根据**金丝雀**、**线性**或**all-at-once**部署配置逐渐移动。
  + **蓝/绿部署通过 CloudFormation**：作为 CloudFormation 堆栈更新的一部分，流量将从您当前的资源转移到更新的资源。当前，仅支持 ECS blue/green 部署。

  有关 blue/green 部署的更多信息，请参阅[blue/green 部署概述](welcome.md#welcome-deployment-overview-blue-green)。

**注意**  
同时使用 CodeDeploy 和支持 Amazon ECS blue/green 部署 CloudFormation。这些部署的详细信息将在后续章节中介绍。

## IAM 实例配置文件
<a name="primary-components-iam-instance-profile"></a>

*IAM 实例配置文件*是您附加到您的 Amazon EC2 实例的 IAM 角色。此配置文件包括访问存储应用程序的 Amazon S3 存储桶或存储 GitHub 库所需的权限。有关更多信息，请参阅 [步骤 4：为 Amazon EC2 实例创建 IAM 实例配置文件](getting-started-create-iam-instance-profile.md)。

## 修订
<a name="primary-components-revision"></a>

*修订* 是您的应用程序的一个版本。 AWS Lambda 部署修订版是一个 YAML 或 JSON 格式的文件，用于指定要部署的 Lambda 函数的相关信息。 EC2/Unlide 部署修订版是一个存档文件，其中包含源内容（源代码、网页、可执行文件和部署脚本）和应用程序规范文件（AppSpec 文件）。 AWS Lambda 修订版可以存储在亚马逊 S3 存储桶中。 EC2/本地版本存储在 Amazon S3 存储桶或 GitHub 存储库中。对于 Amazon S3，修订由其 Amazon S3 对象密钥和 ETag /或版本进行唯一标识。对于 GitHub，修订版本由其提交 ID 进行唯一标识。

## 服务角色
<a name="primary-components-service-role"></a>

*服务角色*是一个 IAM 角色，它向 AWS 服务授予权限，使其可以访问 AWS 资源。您附加到服务角色的策略决定了服务可以访问哪些 AWS 资源以及它可以对这些资源执行的操作。对于 CodeDeploy，服务角色用于以下用途：
+ 读取应用于实例的标签或与实例关联的 Amazon A EC2 uto Scaling 组名称。这样就可以 CodeDeploy 确定它可以将应用程序部署到的实例。
+ 要对实例、Amazon A EC2 uto Scaling 组和 Elastic Load Balancing 负载均衡器执行操作。
+ 向 Amazon SNS 主题发布信息，以便在发生指定部署或实例事件时发送通知。
+ 检索有关 CloudWatch 警报的信息，为部署设置警报监控。

有关更多信息，请参阅 [步骤 2：为创建服务角色 CodeDeploy](getting-started-create-service-role.md)。

## 目标修订
<a name="primary-components-target-revision"></a>

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

## 其他组件
<a name="primary-components-other-components"></a>

有关 CodeDeploy 工作流中其他组件的信息，请参阅以下主题：
+ [选择 CodeDeploy 存储库类型](application-revisions-repository-type.md)
+  [CodeDeploy 部署](deployment-steps.md)
+  [CodeDeploy 应用程序规范 (AppSpec) 文件](application-specification-files.md)
+  [CodeDeploy 实例运行状况](instances-health.md)
+  [与 CodeDeploy 代理合作](codedeploy-agent.md)
+  [使用本地实例 CodeDeploy](instances-on-premises.md)