使用创建步进扩展策略Amazon CLI - Application Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用创建步进扩展策略Amazon CLI

您可以为 Application Auto Scaling 创建步进扩展策略,方法是使用Amazon CLI,以执行以下配置任务。

注册可扩展目标

如果您尚未这样做,请注册可扩展目标。使用register-scalable-target命令将目标服务中的特定资源注册为可扩展目标。以下示例使用 Application Auto Scaling 注册 Amazon ECS 服务。Application Auto Scaling 可扩展任务的数量,最少 2 个任务,最多 10 个任务。

Linux、macOS 或 Unix

aws application-autoscaling register-scalable-target --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/default/sample-app-service \ --min-capacity 2 --max-capacity 10

Windows

aws application-autoscaling register-scalable-target --service-namespace ecs --scalable-dimension ecs:service:DesiredCount --resource-id service/default/sample-app-service --min-capacity 2 --max-capacity 10
注意

当您在目标服务的控制台中配置扩展策略时,会自动将资源注册为 Application Auto Scaling 的可扩展目标。

为简洁起见,本主题中的示例说明了 Amazon ECS 服务的 CLI 命令。要指定不同的可扩展目标,请在 --service-namespace 中指定其命名空间,在 --scalable-dimension 中指定其可扩展维度,并在 --resource-id 中指定其资源 ID。有关每个选项的有效值的列表,请参阅 register-scalable-target

创建步进扩展策略

以下是调整类型为的示例步进配置ChangeInCapacity,根据以下步进调整 (假设 CloudWatch 警报阈值为 70%) 增加可扩展目标的容量:

  • 当指标的值大于或等于 70% 但小于 85% 时,将容量增加 1

  • 当指标的值大于或等于 85% 但小于 95% 时,将容量增加 2

  • 当指标值大于或等于 95% 时,将容量增加 3

将此配置保存在名为 config.json 的文件中。

{ "AdjustmentType": "ChangeInCapacity", "MetricAggregationType": "Average", "Cooldown": 60, "StepAdjustments": [ { "MetricIntervalLowerBound": 0, "MetricIntervalUpperBound": 15, "ScalingAdjustment": 1 }, { "MetricIntervalLowerBound": 15, "MetricIntervalUpperBound": 25, "ScalingAdjustment": 2 }, { "MetricIntervalLowerBound": 25, "ScalingAdjustment": 3 } ] }

请使用以下put-scaling-policy命令以及config.json文件,创建一个名为的扩展策略,my-step-scaling-policy

Linux、macOS 或 Unix

aws application-autoscaling put-scaling-policy --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/default/sample-app-service \ --policy-name my-step-scaling-policy --policy-type StepScaling \ --step-scaling-policy-configuration file://config.json

Windows

aws application-autoscaling put-scaling-policy --service-namespace ecs --scalable-dimension ecs:service:DesiredCount --resource-id service/default/sample-app-service --policy-name my-step-scaling-policy --policy-type StepScaling --step-scaling-policy-configuration file://config.json

输出包括作为策略唯一名称的 ARN。您需要使用它来创建 CloudWatch 警报。

{ "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787:resource/ecs/service/default/sample-app-service:policyName/my-step-scaling-policy" }

创建触发扩展策略的警报

最后,使用以下 CloudWatchput-metric-alarm命令创建要与步进扩展策略结合使用的警报。在本示例中,您将根据平均 CPU 利用率发出警报。如果警报在至少两个连续 60 秒的评估期间达到 70% 的阈值,则它将被配置为处于 ALARM 状态。要指定其他 CloudWatch 指标或使用您自己的自定义指标,请在--metric-name及其命名空间--namespace

Linux、macOS 或 Unix

aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmHigh-ECS:service/default/sample-app-service \ --metric-name CPUUtilization --namespace AWS/ECS --statistic Average \ --period 60 --evaluation-periods 2 --threshold 70 \ --comparison-operator GreaterThanOrEqualToThreshold \ --dimensions Name=ClusterName,Value=default Name=ServiceName,Value=sample-app-service \ --alarm-actions PolicyARN

Windows

aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmHigh-ECS:service/default/sample-app-service --metric-name CPUUtilization --namespace AWS/ECS --statistic Average --period 60 --evaluation-periods 2 --threshold 70 --comparison-operator GreaterThanOrEqualToThreshold --dimensions Name=ClusterName,Value=default Name=ServiceName,Value=sample-app-service --alarm-actions PolicyARN

描述步进扩展策略

您可使用以下 describe-scaling-policies 命令描述指定服务命名空间的所有扩展策略。

aws application-autoscaling describe-scaling-policies --service-namespace ecs

您可以使用 --query 参数将结果筛选为仅步进扩展策略。有关的语法的更多信息query,请参阅控制 的命令输出Amazon CLI中的Amazon Command Line Interface用户指南

Linux、macOS 或 Unix

aws application-autoscaling describe-scaling-policies --service-namespace ecs \ --query 'ScalingPolicies[?PolicyType==`StepScaling`]'

Windows

aws application-autoscaling describe-scaling-policies --service-namespace ecs --query "ScalingPolicies[?PolicyType==`StepScaling`]"

下面是示例输出。

[ { "PolicyARN": "PolicyARN", "StepScalingPolicyConfiguration": { "MetricAggregationType": "Average", "Cooldown": 60, "StepAdjustments": [ { "MetricIntervalLowerBound": 0.0, "MetricIntervalUpperBound": 15.0, "ScalingAdjustment": 1 }, { "MetricIntervalLowerBound": 15.0, "MetricIntervalUpperBound": 25.0, "ScalingAdjustment": 2 }, { "MetricIntervalLowerBound": 25.0, "ScalingAdjustment": 3 } ], "AdjustmentType": "ChangeInCapacity" }, "PolicyType": "StepScaling", "ResourceId": "service/default/sample-app-service", "ServiceNamespace": "ecs", "Alarms": [ { "AlarmName": "Step-Scaling-AlarmHigh-ECS:service/default/sample-app-service", "AlarmARN": "arn:aws:cloudwatch:region:012345678910:alarm:Step-Scaling-AlarmHigh-ECS:service/default/sample-app-service" } ], "PolicyName": "my-step-scaling-policy", "ScalableDimension": "ecs:service:DesiredCount", "CreationTime": 1515024099.901 } ]

删除步进扩展策略

当您不再需要某个步进扩展策略时,可将其删除。要删除扩展策略和 CloudWatch 警报,请完成以下任务。

删除您的扩展策略

使用以下 delete-scaling-policy 命令。

Linux、macOS 或 Unix

aws application-autoscaling delete-scaling-policy --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/default/sample-app-service \ --policy-name my-step-scaling-policy

Windows

aws application-autoscaling delete-scaling-policy --service-namespace ecs --scalable-dimension ecs:service:DesiredCount --resource-id service/default/sample-app-service --policy-name my-step-scaling-policy

删除 CloudWatch 警报

使用 delete-alarms 命令。您可以一次删除一个或多个警报。例如,使用以下命令可删除 Step-Scaling-AlarmHigh-ECS:service/default/sample-app-serviceStep-Scaling-AlarmLow-ECS:service/default/sample-app-service 警报:

aws cloudwatch delete-alarms --alarm-name Step-Scaling-AlarmHigh-ECS:service/default/sample-app-service Step-Scaling-AlarmLow-ECS:service/default/sample-app-service