Application Auto Scaling
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Application Auto Scaling 的计划扩展

按计划扩展使您可以按照可预测的负载变化来设置您自己的扩展计划。例如,您的 Web 应用程序的流量会在每周的星期三开始增加,并在星期四保持高流量状态,然后在星期五开始下降。您可以配置 Application Auto Scaling 在星期三增加容量并在星期五减少容量。

要使用计划的扩展,请创建指示 Application Auto Scaling 在特定时间执行扩展活动的计划的操作。创建计划的操作时,请指定可扩展目标、扩展活动执行的时间以及最小和最大容量。在指定时间,Application Auto Scaling 将基于新的容量值进行扩展。

Application Auto Scaling 将保证同一可扩展目标的计划操作的执行顺序,但不保证跨可扩展目标的计划操作的执行顺序。

注意

为简洁起见,本主题中的示例说明了用于 Amazon ECS、DynamoDB、AppStream 2.0、Spot 队列和自定义资源的 CLI 命令。要指定不同的可扩展目标,请在 --service-namespace 中指定其命名空间,在 --scalable-dimension 中指定其可扩展维度,并在 --resource-id 中指定其资源 ID。

注册可扩展目标

您必须注册可扩展目标,然后才能创建计划的操作。使用 register-scalable-target 命令注册新的可扩展目标。

以下示例使用 Application Auto Scaling 注册 Spot 队列请求。Application Auto Scaling 可以扩展 Spot 队列中的实例数量,最少 2 个实例,最多 10 个实例。

aws application-autoscaling register-scalable-target --service-namespace ec2 \ --scalable-dimension ec2:spot-fleet-request:TargetCapacity \ --resource-id spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --min-capacity 2 --max-capacity 10

使用 AWS CLI 创建或更新计划的操作

您可以使用 put-scheduled-action 命令创建并更新仅扩展一次或按重复计划扩展的已计划的操作。当您指定新容量时,可指定最小容量和/或最大容量。

计划一次性计划的操作

您可以指定一次性计划以在特定日期和时间(采用 UTC 表示)自动扩展您的可扩展目标。

例 示例:仅向内扩展一次

在为 --schedule 指定的日期和时间,如果为 MaxCapacity 指定的值低于当前容量,则 Application Auto Scaling 将向内扩展至 MaxCapacity

aws application-autoscaling put-scheduled-action --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/default/web-app \ --scheduled-action-name my-one-time-action \ --schedule "at(2019-01-31T17:00:00)" \ --scalable-target-action MaxCapacity=10

例 示例:仅向外扩展一次

在为 --schedule 指定的日期和时间,如果为 MinCapacity 指定的值高于当前容量,则 Application Auto Scaling 将向外扩展至 MinCapacity

aws application-autoscaling put-scheduled-action --service-namespace custom-resource \ --scalable-dimension custom-resource:ResourceType:Property \ --resource-id file://~/custom-resource-id.txt \ --scheduled-action-name my-one-time-action \ --schedule "at(2019-03-31T22:00:00)" \ --scalable-target-action MinCapacity=3

custom-resource-id.txt 文件为您的自定义资源指定 API 网关 终端节点。有关配置自定义资源的更多信息,请参阅我们的 GitHub 存储库。文件的内容可能如下所示:

https://example.execute-api.region.amazonaws.com/prod/scalableTargetDimensions/1-23456789

按照定期计划来计划操作

您可以使用 put-scheduled-action 命令的 --schedule 选项为计划的操作指定重复时间表。Application Auto Scaling 支持计划表达式的 cron 和 rate 格式。有关更多信息,请参阅 Amazon CloudWatch Events 用户指南 中的 Cron 表达式Rate 表达式

例 示例:使用 cron 表达式按照重复时间表扩展

对于指定的计划(每天中午 12:00 (UTC)),如果为 MinCapacity 指定的值高于当前容量,则 Application Auto Scaling 将向外扩展至 MinCapacity。如果为 MaxCapacity 指定的值低于当前容量,则 Application Auto Scaling 将向内扩展到 MaxCapacity

aws application-autoscaling put-scheduled-action --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/my-table \ --scheduled-action-name my-recurring-action \ --schedule "cron(0 12 * * ? *)" \ --scalable-target-action MinCapacity=10,MaxCapacity=50

例 示例:使用 rate 表达式按照重复时间表扩展

对于指定的计划(每小时),如果为 MinCapacity 指定的值高于当前容量,则 Application Auto Scaling 将向外扩展至 MinCapacity。如果为 MaxCapacity 指定的值低于当前容量,则 Application Auto Scaling 将向内扩展到 MaxCapacity

aws application-autoscaling put-scheduled-action --service-namespace appstream \ --scalable-dimension appstream:fleet:DesiredCapacity \ --resource-id fleet/sample-fleet \ --scheduled-action-name my-recurring-action \ --schedule "rate(1 hour)" \ --scalable-target-action MinCapacity=3,MaxCapacity=10

描述计划的操作

您可使用以下 describe-scheduled-actions 命令描述指定服务命名空间的所有计划的操作。

aws application-autoscaling describe-scheduled-actions --service-namespace ecs

下面是示例输出。

{ "ScheduledActions": [ { "ScheduledActionARN": "<arn>", "ServiceNamespace": "ecs", "CreationTime": 1515026382.218, "ScalableDimension": "ecs:service:DesiredCount", "Schedule": "at(2018-01-31T17:00:00)", "ScalableTargetAction": { "MaxCapacity": 10 }, "ScheduledActionName": "my-one-time-action", "ResourceId": "service/default/web-app" } ] }

删除计划的操作

在使用完计划的操作后,您可以使用 delete-scheduled-action 命令将其删除。

以下命令将删除指定的可扩展目标的指定计划操作。

aws application-autoscaling delete-scheduled-action --service-namespace ec2 \ --scalable-dimension ec2:spot-fleet-request:TargetCapacity \ --resource-id spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --scheduled-action-name my-spot-fleet-action