

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 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 [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html)comando para registrar um recurso específico no serviço de destino como um alvo 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 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html)comando a seguir, junto com o `config.json` arquivo 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 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html)comando a seguir, junto com o `config.json` arquivo 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 CloudWatch [put-metric-alarm](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html)comando a seguir 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
```