Amazon Elastic Container Service
开发人员指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Amazon ECS 部署类型

Amazon ECS 部署类型决定了您的服务使用的部署策略。具有两种部署类型:

滚动更新

滚动更新部署类型由 Amazon ECS 控制。这涉及将当前运行版本的容器替换为最新版本的服务计划程序。在滚动更新期间 Amazon ECS 在服务中添加或删除的任务数量由部署配置控制。部署配置包括在服务部署期间允许的任务的最小数量和最大数量。

要创建使用滚动更新部署类型的新 Amazon ECS 服务,请参阅创建服务

使用 CodeDeploy 进行蓝/绿部署

蓝/绿部署类型使用由 CodeDeploy 控制的蓝/绿部署模型。此部署类型允许您先验证服务的新部署,然后再向其发送生产流量。有关更多信息,请参阅 AWS CodeDeploy User Guide 中的什么是 CodeDeploy?

以下是在服务使用蓝/绿部署类型时,Amazon ECS 使用的 CodeDeploy 的组件:

CodeDeploy 应用程序

CodeDeploy 资源的集合。这包括一个或多个部署组。

CodeDeploy 部署组

部署设置。这包括以下内容:

  • Amazon ECS 集群和服务

  • 负载均衡器目标组和侦听器信息

  • 部署回滚策略

  • 流量重新路由设置

  • 原始修订终止设置

  • 部署配置

  • 可设置为停止部署的 CloudWatch 警报配置

  • SNS 或 CloudWatch Events 通知设置

有关更多信息,请参阅 AWS CodeDeploy User Guide 中的使用部署组

CodeDeploy 部署配置

指定在部署期间 CodeDeploy 如何将生产流量路由到您的替换任务集。目前唯一支持的值为 CodeDeployDefault.AllAtOnce,这意味着所有流量同时从原始任务集路由到替换任务集。有关更多信息,请参阅 AWS CodeDeploy User Guide 中的使用部署配置

修订

修订是 CodeDeploy 应用程序规范文件(AppSpec 文件)。在 AppSpec 文件中,指定任务定义的完整 ARN 以及在创建新部署时要将流量路由到的替换任务集的容器和端口。容器名称必须是任务定义中引用的容器名称之一。如果在服务定义中更新了网络配置或平台版本,则还必须在 AppSec 文件中指定这些详细信息。您也可以指定要在部署生命周期事件期间运行的 Lambda 函数。Lambda 函数允许您在部署期间运行测试和返回指标。有关更多信息,请参阅 AWS CodeDeploy User Guide 中的 AppSpec 文件参考

蓝/绿部署注意事项

在使用蓝/绿部署类型时,需要考虑以下几个事项:

  • 在初次创建使用蓝/绿部署类型的 Amazon ECS 服务时,将创建一个 Amazon ECS 任务集。

  • 该服务必须配置为使用 应用程序负载均衡器 或 网络负载均衡器。不支持 传统负载均衡器。以下是负载均衡器要求:

    • 必须将生产侦听器添加到负载均衡器,这用于路由生产流量。

    • 可以将可选的测试侦听器添加到负载均衡器,这用于路由测试流量。如果您指定了测试侦听器,则在部署期间 CodeDeploy 会将测试流量路由到替换任务集。

    • 生产和测试侦听器必须属于同一负载均衡器。

    • 必须为负载均衡器定义目标组。目标组通过生产侦听器将流量路由到服务中的原始任务集。

  • 在初次创建 CodeDeploy 应用程序和部署组时,必须指定以下内容:

    • 必须为负载均衡器定义两个目标组。一个目标组应为在创建 Amazon ECS 服务时为负载均衡器定义的初始目标组。第二个目标组的唯一要求是,它不能与非服务使用的负载均衡器相关联。

  • 在为 Amazon ECS 服务创建了 CodeDeploy 部署后,CodeDeploy 会在该部署中创建替换任务集(或绿色任务集)。如果将测试侦听器添加到了负载均衡器,则 CodeDeploy 会将测试流量路由到替换任务集。此时可以运行任何验证测试。然后,CodeDeploy 会根据部署组的流量重新路由设置将生产流量从原始任务集重新路由到替换任务集。

Amazon ECS 控制台体验

Amazon ECS 控制台中的服务创建和服务更新工作流程支持蓝/绿部署。

要创建使用蓝/绿部署类型的新 Amazon ECS 服务,请参阅创建服务

要更新使用蓝/绿部署类型的现有 Amazon ECS 服务,请参阅更新服务

在使用 Amazon ECS 控制台初次创建使用蓝/绿部署类型的 Amazon ECS 服务时,将自动使用以下默认设置创建 Amazon ECS 任务集和以下 CodeDeploy 资源。

资源 默认设置

应用程序名称

AppECS-<cluster[:47]>-<service[:47]>

部署组名称

DgpECS-<cluster[:47]>-<service[:47]>

部署组负载均衡器信息

将负载均衡器生产侦听器、可选的测试侦听器和指定的目标组添加到部署组配置。

流量重新路由设置

流量重新路由 – 默认设置为立即重新路由流量。它可在 CodeDeploy 控制台中或通过更新 TrafficRoutingConfig 进行更改。有关更多信息,请参阅 AWS CodeDeploy API Reference 中的 CreateDeploymentConfig

原始修订终止设置

原始修订终止设置配置为在重新路由流量之后等待 1 小时再终止蓝色任务集。

部署配置 部署配置设置为 CodeDeployDefault.AllAtOnce,这会一次性地将所有流量从蓝色任务集路由到绿色任务集。此设置不可更改。
自动回滚配置 如果部署失败,自动回滚设置配置为将其回滚。

要查看使用蓝/绿部署类型的 Amazon ECS 服务的详细信息,请使用 Amazon ECS 控制台中的 Deployments (部署) 选项卡。

要在 CodeDeploy 控制台中查看 CodeDeploy 部署组的详细信息,请参阅 AWS CodeDeploy User Guide 中的使用 CodeDeploy 查看部署组详细信息

要在 CodeDeploy 控制台中修改 CodeDeploy 部署组的设置,请参阅 AWS CodeDeploy User Guide 中的使用 CodeDeploy 更改部署组设置

蓝/绿部署所需的 IAM 权限

通过组合使用 Amazon ECS 和 CodeDeploy API 可进行 Amazon ECS 蓝/绿部署。IAM 用户必须对这些服务拥有适当权限,然后才能在 AWS 管理控制台中或通过 AWS CLI 或开发工具包使用 Amazon ECS 蓝/绿部署。

除了用于创建和更新服务的标准 IAM 权限之外,Amazon ECS 还需要以下权限。这些权限已添加到 AmazonECS_FullAccess IAM 策略。有关更多信息,请参阅AmazonECS_FullAccess

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codedeploy:CreateApplication", "codedeploy:CreateDeployment", "codedeploy:CreateDeploymentGroup", "codedeploy:GetApplication", "codedeploy:GetDeployment", "codedeploy:GetDeploymentGroup", "codedeploy:ListApplications", "codedeploy:ListDeploymentGroups", "codedeploy:ListDeployments", "codedeploy:StopDeployment", "codedeploy:GetDeploymentTarget", "codedeploy:ListDeploymentTargets", "codedeploy:GetDeploymentConfig", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision", "codedeploy:BatchGetApplicationRevisions", "codedeploy:BatchGetDeploymentGroups", "codedeploy:BatchGetDeployments", "codedeploy:BatchGetApplications", "codedeploy:ListApplicationRevisions", "codedeploy:ListDeploymentConfigs", "codedpeloy:ContinueDeployment", "sns:ListTopics", "cloudwatch:DescribeAlarms", "lambda:ListFunctions" ], "Resource": [ "*" ] } ] }

注意

除了运行任务和服务所需的标准 Amazon ECS 权限外,IAM 用户还需要 iam:PassRole 权限,以使用 IAM 角色执行任务。

CodeDeploy 需要调用 Amazon ECS API、修改 Elastic Load Balancing、调用 Lambda 函数和描述 CloudWatch 警报的权限,以及代表您修改服务的预期数量的权限。在创建使用蓝/绿部署类型的 Amazon ECS 服务之前,您必须先创建一个 IAM 角色 (ecsCodeDeployRole)。有关更多信息,请参阅 Amazon ECS CodeDeploy IAM 角色

创建服务更新服务 IAM 策略示例说明 IAM 用户在 AWS 管理控制台中使用 Amazon ECS 蓝/绿部署所需的权限。