本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
CodeDeploy 主要组件
在开始使用该服务之前,您应该熟悉 CodeDeploy 部署过程的主要组成部分。
应用程序
应用程序是唯一标识要部署的应用程序的名称。 CodeDeploy 使用此名称,可用作容器,以确保修改、部署配置和部署组的正确组合,并确保在部署期间引用部署组的正确组合。
计算平台
计算平台是 CodeDeploy 部署应用程序的平台。这里有三个计算平台:
EC2/Onderase:描述物理服务器的实例,这些实例可以是 Amazon EC2 云实例、本地服务器或两者兼而有之。使用 EC2/Onside 计算平台创建的应用程序可以由可执行文件、配置文件、图像等组成。
使用 EC2/Onside 计算平台的部署使用就地部署或蓝/绿部署类型来管理将流量定向到实例的方式。有关更多信息,请参阅 CodeDeploy 部署类型概述。
AmazonLambda:用于部署由 Lambda 函数的更新版本组成的应用程序。 Amazon Lambda在由高可用性计算结构组成的无服务器计算环境中管理 Lambda 函数。计算资源的所有管理工作均由 Amazon Lambda 执行。有关更多信息,请参阅无服务器计算和应用程序
。有关Amazon Lambda和 Lambda 函数的更多信息,请参阅Amazon Lambda 。 您可以通过选择金丝雀、线性或 all-at-once 配置,管理部署期间流量转移到更新后的 Lambda 函数版本的方式。
Amazon ECS:用于将 Amazon ECS 容器化应用程序作为任务集部署。 CodeDeploy 通过安装应用程序的更新版本作为新的替换任务集来执行蓝/绿部署。 CodeDeploy 将生产流量从原始应用程序任务集重新路由到替换任务集。成功部署后,将会终止原始任务集。有关 Amazon ECS 的更多信息,请参阅亚马逊弹性容器服务
。 您可以通过选择金丝雀、线性或 all-at-once 配置来管理部署期间流量转移到更新的任务集的方式。
注意
CodeDeploy 和均支持 Amazon ECS 蓝/绿部署Amazon CloudFormation。这些部署的详细信息将在后续章节中介绍。
部署配置
部署配置是一组部署规则以及部署 CodeDeploy 期间使用的部署成功和失败条件。如果您的部署使用 EC2/Onside 计算平台,则可以为部署指定运行状况良好的实例的最小数量。如果您的部署使用Amazon Lambda或 Amazon ECS 计算平台,则可以指定如何将流量路由到更新后的 Lambda 函数或 ECS 任务集。
有关为使用 EC2/Onside 计算平台的部署指定运行正常主机的最小数量的更多信息,请参阅最小运行正常的实例数和部署数。
以下部署配置指定了在使用 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:为 AmazAmazon EC2 实例创建 IAmazon EC2 实例配置文件。
Revision
修订版是您的应用程序的一个版本。AmazonLambda 部署修订是一个 YAML 或 JSON 格式的文件,用于指定有关要部署的 Lambda 函数的信息。EC2/Onside 部署修订版是一个存档文件,其中包含源内容(源代码、网页、可执行文件和部署脚本)和应用程序规范文件(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 Auto Scaling 组和Elastic Load Balancing 负载均衡器执行操作。
-
向 Amazon SNS 主题发布信息,以便在发生指定的部署或实例事件时发送通知。
-
检索有关 CloudWatch 警报的信息,为部署设置警报监控。
有关更多信息,请参阅 步骤 2:为创建服务角色 CodeDeploy。
目标修改
目标修订是您已上传到存储库并希望部署到部署组中实例的应用程序修订的最新版本。换言之,当前面向部署的应用程序版本。这也是为自动部署提取的修订。
其他组件
有关 CodeDeploy 工作流中其他组件的信息,请参阅以下主题: