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

服务自动扩展

Automatic scaling 是指自动增加或减少 Amazon ECS 服务中所需任务数的功能。Amazon ECS 利用 Application Auto Scaling 服务来提供此功能。有关更多信息,请参阅 Application Auto Scaling 用户指南

Amazon ECS 发布 CloudWatch 指标与服务的平均 CPU 和内存使用率。有关更多信息,请参阅服务利用率。您可以使用这些指标和其他 CloudWatch 指标扩展您的服务(添加更多任务)以应对高峰期的高需求,并缩减您的服务(运行更少的任务)以降低低利用率期间的成本。

Amazon ECS Service Auto Scaling 支持以下类型的自动扩展:

  • 目标跟踪扩展策略 - 根据特定指标的目标值,增加或减少服务运行的任务数。这与恒温器保持家里温度的方式类似。您选择一个温度,恒温器将完成所有其他工作。

  • 分步扩展策略 - 根据一组扩展调整,增加或减少服务运行的任务数,这些调整称为步进调整,将根据警报严重程度发生变化。

  • 计划扩展 -根据日期和时间增加或减少服务运行的任务数。

服务自动扩展和部署

Application Auto Scaling 可在 Amazon ECS 部署正在进行时禁用缩减流程。但是,在部署过程中,除非暂停,否则将继续发生扩展进程。如果要在部署正在进行的过程中暂停向外扩展进程,请执行以下步骤。

  1. 调用 describe-scalable-targets 命令,在 Application Auto Scaling 中指定与可扩展目标关联的 ECS 服务的资源 ID(例如:service/default/sample-webapp)。记录输出。调用下一个命令时,您将用到它。

  2. 调用 register-scalable-target 命令,指定资源 ID、命名空间和可伸缩维度。指定 true 代表 DynamicScalingInSuspendedDynamicScalingOutSuspended

  3. 部署完成后,您可以调用 register-scalable-target 命令恢复扩展。

有关更多信息,请参阅暂停和恢复 Application Auto Scaling 的扩缩

服务 Auto Scaling 所需的 IAM 权限

通过结合使用 Amazon ECS、CloudWatch 和 Application Auto Scaling API 可实现服务自动扩展。使用 Amazon ECS 创建和更新服务,使用 CloudWatch 创建警报,使用 Application Auto Scaling 创建扩展策略。

除了用于创建和更新服务的标准 IAM 权限外,访问 Service Auto Scaling 设置的 IAM 用户还必须具有支持动态缩放的服务的相应权限。IAM 用户必须具有使用以下示例策略中的操作的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "application-autoscaling:*", "ecs:DescribeServices", "ecs:UpdateService", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarmHistory", "cloudwatch:DescribeAlarmsForMetric", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics", "cloudwatch:DisableAlarmActions", "cloudwatch:EnableAlarmActions", "iam:CreateServiceLinkedRole", "sns:CreateTopic", "sns:Subscribe", "sns:Get*", "sns:List*" ], "Resource": [ "*" ] } ] }

创建服务示例更新服务示例 IAM policy 示例显示 IAM 用户在 Amazon Web Services Management Console 中使用 Service Auto Scaling 所需的权限。

Application Auto Scaling 服务还需要描述 Amazon ECS 服务和 CloudWatch 警报的权限,以及代表您修改服务的预期数量的权限。sns: 权限用于在超过阈值时 CloudWatch 向 Amazon SNS 主题发送的通知。如果您为 Amazon ECS 服务使用弹性伸缩功能,它将创建一个名为 AWSServiceRoleForApplicationAutoScaling_ECSService 的服务相关角色。此服务相关角色授予 Application Auto Scaling 权限,以描述策略警报、监控服务的当前运行的任务数以及修改服务的所需计数。Application Auto Scaling 的原托管 Amazon ECS角色为 ecsAutoscaleRole,但今后已不再需要。此服务相关角色是 Application Auto Scaling 的默认角色。有关更多信息,请参阅 Application Auto Scaling 用户指南 中的 Application Auto Scaling 服务相关角色

请注意,如果您在 CloudWatch 指标可用于 Amazon ECS 之前已创建您的 Amazon ECS 容器实例,则可能需要添加 ecs:StartTelemetrySession 权限。有关更多信息,请参阅启用 CloudWatch 指标