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

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

CodeDeploy

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

应用程序:唯一地标识要部署的应用程序的名称。CodeDeploy 使用此名称,即充当容器,以确保在部署期间引用修订、部署配置和部署组的正确组合。

计算平台:CodeDeploy

  • EC2/本地:描述可以作为 Amazon EC2 云实例和/或本地服务器的物理服务器实例。使用 EC2/本地计算平台

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

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

    您可以通过选择金丝雀部署、线性方式或一次性配置,管理部署过程中流量转移到更新后的 Lambda 函数版本的方式。

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

    您可以通过选择 Canary、线性或一次性部署配置,管理部署过程中流量转移到更新后的任务集的方式。

注意

通过 CodeDeploy 和Amazon CloudFormation。这些部署的详细信息将在后续章节中介绍。

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

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

这些部署配置指定流量的路由方式。AmazonLambda 计算平台:

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

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

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

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

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

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

  • 一次性:所有流量均从原始 Amazon ECS 任务集一次性地转移到更新后的 Amazon 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/本地计算平台上的蓝/绿:部署组中的实例(原始环境)将被不同的实例集(替换环境)所代替,步骤如下:

      • 为替换环境预置实例。

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

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

      • 替换环境中的实例向弹性负载均衡器注册,导致流量重新路由到这些实例。原始环境中的实例将取消注册,并且可以终止或保持运行以供其他用途。

      注意

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

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

    • Amazon ECS 计算平台上的蓝/绿:流量从 Amazon ECS 服务中包含原始版本的应用程序的任务集转移到同一服务中的替换任务集。您可以通过部署配置将流量转移设置为线性或 Canary。指定负载平衡器侦听器的协议和端口用于重新路由生产流量。在部署期间,在运行验证测试时,可以使用测试侦听器为替换任务集提供流量。

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

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

注意

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

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

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

服务角色:一个 IAM 角色,它向Amazon服务,以便它可以访问Amazon资源的费用。附加到服务角色的策略决定了Amazon服务可以访问的资源以及它可以使用这些资源执行的操作。对于 CodeDeploy,服务角色用于以下内容:

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

  • 对实例、Amazon EC2 自动扩展组和 Elastic Load Balancing 器执行操作。

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

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

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

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

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