Crie uma política de escalabilidade de etapas para o Application Auto Scaling usando o AWS CLI - Application Auto Scaling

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Crie uma política de escalabilidade de etapas para o Application Auto Scaling usando o AWS CLI

Você pode criar uma política de escalabilidade de etapas para o Application Auto Scaling usando AWS CLI o para as seguintes tarefas de configuração.

  1. Registrar um destino escalável.

  2. Adicione uma política de escalabilidade em etapas ao destino escalável.

  3. Crie um CloudWatch alarme para a política.

Em suma, os exemplos deste tópico ilustram comandos da CLI para um serviço do Amazon ECS. Para especificar um destino escalável diferente, especifique o namespace em --service-namespace, sua dimensão escalável em --scalable-dimension, e o ID do recurso em --resource-id. Para obter mais informações e exemplos de cada serviço, consulte os tópicos na Serviços da AWS que você pode usar com o Application Auto Scaling.

Ao usar o AWS CLI, lembre-se de que seus comandos são Região da AWS executados no configurado para seu perfil. Se você deseja executar os comandos em uma região diferente, altere a região padrão para o seu perfil ou use o parâmetro --region com o comando.

Registrar um destino escalável

Se você ainda não tiver feito isso, inscreva o destino escalável. Use o comando register-scalable-target para inscrever um recurso específico no serviço de destino como destino escalável. O exemplo a seguir inscreve um serviço do Amazon ECS com o Application Auto Scaling. O Application Auto Scaling pode escalar o número de tarefas em um mínimo de duas tarefas e um máximo de dez. Substitua cada espaço reservado para entrada do usuário por suas próprias informações.

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

Se obtiver êxito, esse comando retornará o ARN do destino escalável.

{ "ScalableTargetARN": "arn:aws:application-autoscaling:region:account-id:scalable-target/1234abcd56ab78cd901ef1234567890ab123" }

Criar uma política de escalabilidade em etapas

Para criar uma política de escalabilidade por etapas para sua meta escalável, você pode usar os exemplos a seguir para ajudá-lo a começar.

Scale out
Para criar uma política de escalabilidade por etapas para expansão horizontal (aumentar a capacidade)
  1. Use o cat comando a seguir para armazenar uma configuração de política de escalabilidade de etapas em um arquivo JSON nomeado config.json em seu diretório inicial. Veja a seguir um exemplo de configuração com um tipo de ajuste PercentChangeInCapacity que aumenta a capacidade do alvo escalável com base nos seguintes ajustes de etapa (assumindo um limite de CloudWatch alarme de 70):

    • Aumente a capacidade em 10% quando o valor da métrica for maior ou igual a 70, mas menor que 85

    • Aumente a capacidade em 20% quando o valor da métrica for maior ou igual a 85, mas menor que 95

    • Aumente a capacidade em 30% quando o valor da métrica for maior ou 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 obter mais informações, consulte a Referência StepScalingPolicyConfigurationda API Application Auto Scaling.

  2. Use o comando put-scaling-policy com o arquivo config.json que você criou para criar uma política de escalabilidade chamada my-step-scaling-policy.

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

    O resultado inclui o ARN que serve como um nome exclusivo para a política. Você precisa dele para criar um CloudWatch alarme para sua política.

    { "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
Para criar uma política de escalabilidade por etapas para escalar (diminuir a capacidade)
  1. Use o cat comando a seguir para armazenar uma configuração de política de escalabilidade de etapas em um arquivo JSON nomeado config.json em seu diretório inicial. Veja a seguir um exemplo de configuração com um tipo de ajuste ChangeInCapacity que diminui a capacidade do alvo escalável com base nos seguintes ajustes de etapa (assumindo um limite de CloudWatch alarme de 50):

    • Diminua a capacidade em 1 quando o valor da métrica for menor ou igual a 50, mas maior que 40

    • Diminua a capacidade em 2 quando o valor da métrica for menor ou igual a 40, mas maior que 30

    • Diminua a capacidade em 3 quando o valor da métrica for menor ou 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 obter mais informações, consulte a Referência StepScalingPolicyConfigurationda API Application Auto Scaling.

  2. Use o comando put-scaling-policy com o arquivo config.json que você criou para criar uma política de escalabilidade chamada my-step-scaling-policy.

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

    O resultado inclui o ARN que serve como um nome exclusivo para a política. Você precisa dele para criar um CloudWatch alarme para sua política.

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

Criação de um alarme que invoca a política de escalabilidade

Por fim, use o seguinte comando CloudWatch put-metric-alarm para criar um alarme para usar com sua política de escalabilidade de etapas. Neste exemplo, você tem um alarme com base na utilização média da CPU. O alarme é configurado para entrar em um estado de ALARME se atingir o limite de 70% por, no mínimo, dois períodos de avaliação consecutivos de 60 segundos. Para especificar uma CloudWatch métrica diferente ou usar sua própria métrica personalizada, especifique seu nome em --metric-name e seu namespace em. --namespace

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

Descrever políticas de escalabilidade em etapas

Você pode descrever todas as políticas de escalabilidade para o namespace de serviço especificado usando o seguinte comando describe-scaling-policies.

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

Você pode filtrar os resultados apenas para as políticas de escalabilidade em etapas usando o parâmetro --query. Para mais informações sobre a sintaxe de query, consulte Controlar a saída do comando da AWS CLI no Manual do usuário da AWS Command Line Interface .

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

O seguinte é um exemplo de saída.

[ { "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/my-cluster/my-service", "ServiceNamespace": "ecs", "Alarms": [ { "AlarmName": "Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service", "AlarmARN": "arn:aws:cloudwatch:region:012345678910:alarm:Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service" } ], "PolicyName": "my-step-scaling-policy", "ScalableDimension": "ecs:service:DesiredCount", "CreationTime": 1515024099.901 } ]

Excluir política de escalabilidade em etapas

Quando você não precisar mais de uma política de dimensionamento em etapas, poderá excluí-la. Para excluir a política de escalabilidade e o CloudWatch alarme, conclua as tarefas a seguir.

Para excluir a política de dimensionamento

Use o comando delete-scaling-policy.

Linux, macOS ou Unix

aws application-autoscaling delete-scaling-policy --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/my-cluster/my-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/my-cluster/my-service --policy-name my-step-scaling-policy
Para excluir o CloudWatch alarme

Use o comando delete-alarms. É possível excluir um ou mais alarmes por vez. Por exemplo, use o comando a seguir para excluir os alarmes Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service e Step-Scaling-AlarmLow-ECS:service/my-cluster/my-service.

aws cloudwatch delete-alarms --alarm-name Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service Step-Scaling-AlarmLow-ECS:service/my-cluster/my-service