CodeDeploy 主要组件 - AWS CodeDeploy

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

CodeDeploy 主要组件

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

应用程序

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

计算平台

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

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

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

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

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

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

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

注意

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

部署配置

部署配置是一组部署规则以及部署 CodeDeploy 期间使用的部署成功和失败条件。如果您的部署使用 EC2/本地计算平台,您可以为部署指定最少数量的运行正常的实例。如果您的部署使用 AWS 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 实例。

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

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

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

注意

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

IAM 实例配置文件

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

修订

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

服务角色

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

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

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

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

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

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

目标修订

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

其他组件

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