

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
<a name="create-step-scaling-policy-cli"></a>

Este exemplo usa AWS CLI comandos para criar uma política de escalabilidade por etapas para um serviço do Amazon ECS. Para usar um destino escalável diferente, especifique o respectivo namespace em `--service-namespace`, a dimensão escalável em `--scalable-dimension` e o ID do recurso em `--resource-id`.

Ao usar o AWS CLI, lembre-se de que seus comandos são Região da AWS executados no configurado para o 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.

**Topics**
+ [Etapa 1: registrar um destino escalável](#step-scaling-register-scalable-target)
+ [Etapa 2: criar uma política de escalabilidade em etapas](#create-step-scaling-policy)
+ [Etapa 3: criar um alarme que invoca uma política de escalabilidade](#step-scaling-create-alarm)

## Etapa 1: registrar um destino escalável
<a name="step-scaling-register-scalable-target"></a>

Se você ainda não tiver feito isso, inscreva o destino escalável. Use o comando [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 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 {{user input placeholder}} 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}}
```

**Output**  
Se obtiver êxito, esse comando retornará o ARN do destino escalável. O seguinte é um exemplo de saída.

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

## Etapa 2: criar uma política de escalabilidade em etapas
<a name="create-step-scaling-policy"></a>

Para criar uma política de escalabilidade em etapas para um destino escalável, você pode usar os exemplos a seguir para começar.

------
#### [ Scale out ]

**Como criar uma política de escalabilidade em etapas para aumentar a escala horizontalmente (aumentar a capacidade)**

1. Use o comando `cat` a seguir para especificar uma configuração de política de escalabilidade em etapas em um arquivo JSON chamado `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): 
   + Aumentar a capacidade em 10% quando o valor da métrica for maior ou igual a 70, mas menor que 85.
   + Aumentar a capacidade em 20% quando o valor da métrica for maior ou igual a 85, mas menor que 95.
   + Aumentar 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 [StepScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_StepScalingPolicyConfiguration.html)da *API Application Auto Scaling*.

1. Use o comando [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 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}}
   ```

**Output**  
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. O seguinte é um exemplo de saída.

   ```
   {
       "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 ]

**Como criar uma política de escalabilidade em etapas para reduzir a escala horizontalmente (diminuir a capacidade)**

1. Use o comando `cat` a seguir para especificar uma configuração de política de escalabilidade em etapas em um arquivo JSON chamado `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): 
   + Diminuir a capacidade em 1 quando o valor da métrica é menor ou igual a 50, mas maior que 40.
   + Diminuir a capacidade em 2 quando o valor da métrica é menor ou igual a 40, mas maior que 30.
   + Diminuir a capacidade em 3 quando o valor da métrica é 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 [StepScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_StepScalingPolicyConfiguration.html)da *API Application Auto Scaling*.

1. Use o comando [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 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}}
   ```

**Output**  
O resultado inclui o ARN que serve como um nome exclusivo para a política. Você precisa desse ARN para criar um CloudWatch alarme para sua política. O seguinte é um exemplo de saída.

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

------

## Etapa 3: criar um alarme que invoca uma política de escalabilidade
<a name="step-scaling-create-alarm"></a>

Por fim, use o seguinte comando CloudWatch [put-metric-alarm para criar um alarme](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html) 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}}
```