Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cree una política de escalado escalonado para Application Auto Scaling mediante el AWS CLI
En este ejemplo, se utilizan AWS CLI comandos para crear una política de escalado por pasos para un servicio de Amazon ECS. Para un objetivo 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
Cuando utilice el AWS CLI, recuerde que sus comandos se ejecutan en la Región de AWS configuración de su perfil. Si desea ejecutar los comandos en otra región, cambie la región predeterminada de su perfil o utilice el parámetro --region
con el comando.
Paso 1: Registrar un objetivo escalable
Si aún no lo ha hecho, registre el destino escalable. Utilice el register-scalable-targetcomando 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. Reemplace cada marcador de posición de entrada del usuario
con información propia.
Linux, macOS o Unix
aws application-autoscaling register-scalable-target --service-namespace ecs
\
--scalable-dimension ecs:service:DesiredCount
\
--resource-id service/my-cluster/my-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/my-cluster/my-service
^
--min-capacity 2
--max-capacity 10
Salida
Si se ejecuta correctamente, este comando devolverá el ARN del destino escalable. A continuación, se muestra un ejemplo del resultado.
{
"ScalableTargetARN": "arn:aws:application-autoscaling:region
:account-id
:scalable-target/1234abcd56ab78cd901ef1234567890ab123"
}
Paso 2: Cree una política de escalado escalonado
Para crear una política de escalado escalonado para su objetivo escalable, puede utilizar los siguientes ejemplos como ayuda para empezar.
- Scale out
-
Para crear una política de escalado escalonado para ampliar (aumentar la capacidad)
-
Utilice el siguiente cat
comando para almacenar una configuración de política de escalado escalonado en un archivo JSON denominado config.json
en su directorio principal. El siguiente es un ejemplo de configuración con un tipo de ajuste PercentChangeInCapacity
que aumenta la capacidad del objetivo escalable en función de los siguientes ajustes escalonados (suponiendo un umbral de CloudWatch alarma de 70):
-
Aumente la capacidad en un 10 por ciento cuando el valor de la métrica sea superior o igual a 70 pero inferior a 85
-
Aumente la capacidad en un 20 por ciento cuando el valor de la métrica sea superior o igual a 85 pero inferior a 95
-
Aumente la capacidad en un 30 por ciento cuando el valor de la métrica sea mayor o igual a 95
$ cat ~/config.json
{
"AdjustmentType": "PercentChangeInCapacity",
"MetricAggregationType": "Average",
"Cooldown": 60
,
"MinAdjustmentMagnitude": 1
,
"StepAdjustments": [
{
"MetricIntervalLowerBound": 0.0
,
"MetricIntervalUpperBound": 15.0
,
"ScalingAdjustment": 10
},
{
"MetricIntervalLowerBound": 15.0
,
"MetricIntervalUpperBound": 25.0
,
"ScalingAdjustment": 20
},
{
"MetricIntervalLowerBound": 25.0
,
"ScalingAdjustment": 30
}
]
}
Para obtener más información, consulte la Referencia StepScalingPolicyConfigurationde la API Application Auto Scaling.
-
Utilice el siguiente put-scaling-policycomando, junto con el config.json
archivo que creó, para crear una política de escalado denominadamy-step-scaling-policy
.
Linux, macOS o Unix
aws application-autoscaling put-scaling-policy --service-namespace ecs
\
--scalable-dimension ecs:service:DesiredCount
\
--resource-id service/my-cluster/my-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/my-cluster/my-service
^
--policy-name my-step-scaling-policy
--policy-type StepScaling ^
--step-scaling-policy-configuration file://config.json
Salida
El resultado incluye el ARN que actúa como un nombre único para la política. Lo necesita para crear una CloudWatch alarma para su política. A continuación, se muestra un ejemplo del resultado.
{
"PolicyARN": "arn:aws:autoscaling:region
:123456789012
:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787
:resource/ecs/service/my-cluster/my-service
:policyName/my-step-scaling-policy"
}
- Scale in
-
Crear una política de escalado escalonado para ampliarlo (reducir la capacidad)
-
Utilice el siguiente cat
comando para almacenar una configuración de política de escalado escalonado en un archivo JSON denominado config.json
en su directorio principal. El siguiente es un ejemplo de configuración con un tipo de ajuste ChangeInCapacity
que reduce la capacidad del objetivo escalable en función de los siguientes ajustes escalonados (suponiendo un umbral de CloudWatch alarma de 50):
-
Reduzca la capacidad en un 1% cuando el valor de la métrica sea inferior o igual a 50, pero superior a 40
-
Reduzca la capacidad en 2 cuando el valor de la métrica sea inferior o igual a 40 pero superior a 30
-
Disminuya la capacidad en 3 cuando el valor de la métrica sea inferior o igual a 30
$ cat ~/config.json
{
"AdjustmentType": "ChangeInCapacity",
"MetricAggregationType": "Average",
"Cooldown": 60
,
"StepAdjustments": [
{
"MetricIntervalUpperBound": 0.0
,
"MetricIntervalLowerBound": -10.0
,
"ScalingAdjustment": -1
},
{
"MetricIntervalUpperBound": -10.0
,
"MetricIntervalLowerBound": -20.0
,
"ScalingAdjustment": -2
},
{
"MetricIntervalUpperBound": -20.0
,
"ScalingAdjustment": -3
}
]
}
Para obtener más información, consulte la Referencia StepScalingPolicyConfigurationde la API Application Auto Scaling.
-
Utilice el siguiente put-scaling-policycomando, junto con el config.json
archivo que creó, para crear una política de escalado denominadamy-step-scaling-policy
.
Linux, macOS o Unix
aws application-autoscaling put-scaling-policy --service-namespace ecs
\
--scalable-dimension ecs:service:DesiredCount
\
--resource-id service/my-cluster/my-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/my-cluster/my-service
^
--policy-name my-step-scaling-policy
--policy-type StepScaling ^
--step-scaling-policy-configuration file://config.json
Salida
El resultado incluye el ARN que actúa como un nombre único para la política. Necesita este ARN para crear una CloudWatch alarma para su póliza. A continuación, se muestra un ejemplo del resultado.
{
"PolicyARN": "arn:aws:autoscaling:region
:123456789012
:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787
:resource/ecs/service/my-cluster/my-service
:policyName/my-step-scaling-policy"
}
Paso 3: Cree una alarma que invoque una política de escalado
Por último, utilice el siguiente CloudWatch put-metric-alarmcomando para crear una alarma y utilizarla con su política de escalado escalonado. 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 CloudWatch métrica diferente o usar su propia métrica personalizada, especifique su nombre --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/my-cluster/my-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/my-cluster/my-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