Crear una política de escalado por pasos con el AWS CLI - Application Auto Scaling

Crear una política de escalado por pasos con el AWS CLI

Puede crear una política de escalado por pasos para Auto Scaling de aplicaciones con el AWS CLI para las siguientes tareas de configuración.

Registrar un destino escalable

Si aún no lo ha hecho, registre el destino escalable. Use el comando register-scalable-target para registrar un recurso específico en el servicio de destino como destino escalable. En el siguiente ejemplo se registra un Servicio ECS de Amazon con Auto Scaling de aplicaciones. Auto Scaling de aplicaciones puede escalar el número de tareas a un mínimo de 2 tareas y un máximo de 10.

Linux, macOS o 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
nota

Por cuestiones de brevedad, los ejemplos que aparecen en este tema ilustran los comandos de la CLI de un Servicio ECS de Amazon. Para especificar un destino escalable diferente, especifique su espacio de nombres en --service-namespace, su dimensión escalable en --scalable-dimension y su ID de recurso en --resource-id.

Creación de una política de escalado por pasos

A continuación, se muestra un ejemplo de configuración por pasos con un tipo de ajuste de ChangeInCapacity que aumenta la capacidad del destino escalable en rol de los siguientes ajustes por pasos (se presupone que el umbral de las alarmas de CloudWatch es del 70 %):

  • Aumento de la capacidad en 1 cuando el valor de la métrica es mayor o igual al 70 % pero inferior al 85 %

  • Aumento de la capacidad en 2 cuando el valor de la métrica es mayor o igual al 85 % pero inferior al 95 %

  • Aumento de la capacidad en 3 cuando el valor de la métrica es mayor o igual al 95 %

Guarde esta configuración en un archivo llamado 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 } ] }

Utilice el siguiente comando put-scaling-policy junto con el archivo config.json que ha creado para crear una política de escalado denominada my-step-scaling-policy.

Linux, macOS o 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

El resultado incluye el ARN que actúa como un nombre único para la política. Lo necesitará para crear alarmas de 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" }

Cree una alarma que desencadene la política de escalado

Por último, utilice el siguiente comando put-metric-alarm de CloudWatch para crear una alarma y utilizarla con la política de escalado de pasos. En este ejemplo, tiene una alarma basada en la utilización media de la CPU. La alarma está configurada para que adopte el estado ALARM si alcanza un umbral del 70 % durante al menos dos periodos de evaluación consecutivos de 60 segundos. Para especificar una métrica de CloudWatch diferente o usar su propia métrica personalizada, especifique su nombre en --metric-name y su espacio de nombres en --namespace.

Linux, macOS o 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

Descripción de políticas de escalado por pasos

Puede describir todas las políticas de escalado para el espacio de nombres del servicio especificado mediante el siguiente comando describe-scaling-policies.

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

Puede filtrar los resultados a solo las políticas de escalado por pasos mediante el parámetro --query. Para obtener más información acerca de syntax para query, consulte Control de la salida de comandos de la AWS CLI en la Guía del usuario de AWS Command Line Interface.

Linux, macOS o 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`]"

A continuación, se muestra un ejemplo del resultado.

[ { "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 } ]

Eliminación de una política de escalado por pasos

Puede eliminar una política de escalado cuando ya no la necesite. Para eliminar la política de escalado y la alarma de CloudWatch, realice las siguientes tareas.

Para eliminar una política de escalado

Utilice el siguiente comando delete-scaling-policy.

Linux, macOS o 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

Para eliminar una alarma de CloudWatch

Utilice el comando delete-alarms. Puede eliminar una o más alarmas a la vez. Por ejemplo, utilice el siguiente comando para eliminar las alarmas Step-Scaling-AlarmHigh-ECS:service/default/sample-app-service y Step-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