CodeDeploy 主要组件 - Amazon CodeDeploy
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

CodeDeploy 主要组件

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

应用程序

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

计算平台

计算平台是 CodeDeploy 部署应用程序的平台。有三种计算平台:

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

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

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

    通过选择金丝雀、线性或 all-at-once 配置,您可以管理在部署期间将流量转移到更新后的 Lambda 函数版本的方式。

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

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

注意

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

部署配置

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

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

以下部署配置指定了在使用 Lambda 或 ECS 计算平台的部署期间如何路由流量:

  • Canary:流量将通过两次递增进行转移。您可以从预定义的金丝雀选项中进行选择,这些选项指定在第一个增量中转移到更新后的 Lambda 函数或 ECS 任务集的流量百分比,以及第二个增量中剩余流量转移之前的间隔(以分钟为单位)。

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

  • 答 ll-at-once:所有流量将同时从原来的 Lambda 函数或 ECS 任务集转移到更新的函数或任务集。

部署组

部署组是一组单独的实例。部署组包含单独标记的实例、Amazon EC2 Auto Scaling 组中的 Amazon EC2 实例,或者两者兼而有之。有关 Amazon EC2 实例标签的信息,请参阅使用控制台处理标签。有关本地实例的信息,请参阅Working with On-Premises Instances。有关 Amazon EC2 Auto Scaling 的信息,请参阅将 CodeDeploy 与 Amazon EC2 Auto Scaling 集成

Deployment type (部署类型)

部署类型是一种用于在部署组中的实例上提供最新的应用程序修订版的方法。具有两种部署类型:

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

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

    • EC2/本地计算平台上的蓝/绿:使用以下步骤,将部署组(原始环境)中的实例替换为另一组实例(替换环境):

      • 实例是为替换环境预配置的。

      • 替换实例上安装了最新的应用程序版本。

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

      • 替换环境中的实例在一个或多个 Elastic Load Balancing 负载均衡器中注册,从而导致流量被重新路由到这些负载均衡器。原始环境中的实例已注销,可以终止或继续运行以用于其他用途。

      注意

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

    • Amazon Lambda或 Amazon ECS 计算平台上的蓝/绿:流量根据金丝雀线性all-at-once部署配置以增量移动。

    • 通过 Amazon CloudFormation 进行蓝/绿部署:作为 Amazon CloudFormation 堆栈更新的一部分,流量将从当前资源转移到更新的资源。目前,仅支持 ECS 蓝/绿部署。

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

注意

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

IAM 实例配置文件

IAM 实例配置文件是您附加到 Amazon EC2 实例的 IAM 角色。此配置文件包括访问存储应用程序的 Amazon S3 存储桶或存储 GitHub 库所需的权限。有关更多信息,请参阅步骤 4:为您的 Amazon EC2 实例创建 IAM 实例配置文件

Revision

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

服务角色

服务角色是一个 IAM 角色,它向Amazon服务授予权限,使其可以访问Amazon资源。您附加到服务角色的策略决定了服务可以访问哪些Amazon资源以及它可以对这些资源执行的操作。对于 CodeDeploy,服务角色用于以下用途:

  • 读取应用于实例的标签或与实例关联的 Amazon EC2 Auto Scaling 组名称。这样就可以 CodeDeploy 确定它可以将应用程序部署到的实例。

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

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

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

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

目标修订版

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

其他组件

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