

# Criar uma política de escalabilidade preditiva para ajuste de escala automático do serviço do Amazon ECS
<a name="predictive-scaling-create-policy"></a>

Crie uma política de escalabilidade preditiva para que o Amazon ECS aumente ou diminua o número de tarefas executadas pelo serviço com base em dados de histórico. 

**nota**  
Um novo serviço precisa fornecer pelo menos 24 horas de dados antes que uma previsão possa ser gerada.

## Console
<a name="predictive-scaling-policy-aws-console"></a>

1. Além das permissões padrão do IAM para criar e atualizar serviços, você precisa de permissões adicionais. Para obter mais informações, consulte [Permissões obrigatórias do IAM para o ajuste de escala automático do serviço Amazon ECS](auto-scaling-IAM.md).

1. Determine as métricas a serem usadas para a política. As seguintes métricas estão disponíveis:
   +  **ECSServiceAverageCPUUtilization**: utilização média da CPU que o serviço deveria usar. 
   + **ECSServiceAverageMemoryUtilization**: utilização média da memória que o serviço deveria usar. 
   + **ALBRequestCountPerTarget**: o número médio de solicitações por minuto que a tarefa deve idealmente receber.

   Como alternativa, você pode usar uma métrica personalizada. É necessário definir os seguintes valores:
   + Carga: uma métrica que representa com precisão a carga total da aplicação e é o aspecto mais importante a ser escalado.
   + Métrica de escalabilidade: o melhor indicador de quanta utilização é ideal para sua aplicação.

1. Abra o console em [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. Na página **Clusters**, escolha o cluster.

1. Na página de detalhes do cluster, na seção **Serviços**, escolha o serviço.

   A página de detalhes do serviço é exibida.

1. Escolha **Ajuste de escala automático do serviço** e depois **Definir o número de tarefas**.

1. Em **Contagem de tarefas do serviço do Amazon ECS**, escolha **Usar ajuste de escala automático**.

   A seção **Contagem de tarefas** é exibida.

   1. Em **Número mínimo de tarefas**, insira o limite inferior do número de tarefas a serem usadas pelo ajuste de escala automático. A contagem desejada não será inferior a essa contagem.

   1. Em **Máximo**, insira o limite superior do número de tarefas a serem usadas pelo ajuste de escala automático. A contagem desejada não ultrapassará essa contagem.

   1. Escolha **Salvar**.

      A página de políticas será exibida.

1. Escolha **Criar política de escalabilidade**.

   A página **Criar política** é exibida.

1. Em **Tipo de política de escalabilidade**, escolha **Escalabilidade preditiva**.

1. Em **Policy name** (Nome da política), insira o nome da política.

1. Em **Métricas**, escolha suas métricas na lista de opções.

   Se tiver escolhido **Application Load Balancer request count per target** (Número de solicitações do Application Load Balancer por destino), escolha um grupo de destino em **Target group** (Grupo de destino). A opção **Número de solicitações do Application Load Balancer por destino** só será válida de você tiver anexado um grupo de destino do Application Load Balancer para seu serviço. 

   Se você escolheu **Par de métricas personalizadas**, escolha métricas individuais nas listas para **Métrica de carga** e **Métrica de escalabilidade**. 

1. Em **Utilização pretendida**, insira o valor desejado para o percentual de tarefas que o Amazon ECS deve manter. O ajuste de escala automático do serviço expandirá sua capacidade até que a utilização média seja igual à utilização pretendida ou até atingir o número máximo de tarefas especificado.

1. Escolha **Criar política de escalabilidade**.

## AWS CLI
<a name="predictive-scaling-policy-aws-cli"></a>

Use a AWS CLI conforme mostrado a seguir para configurar políticas de escalabilidade preditiva para seu serviço do Amazon ECS. Substitua cada *espaço reservado para entrada do usuário* por suas próprias informações.

Para obter mais informações sobre as métricas do CloudWatch que você pode especificar para uma política de escalabilidade preditiva, consulte [PredictivEscalingMetricSpecification](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_PredictiveScalingMetricSpecification.html) na *Referência da API do Amazon EC2 Auto Scaling*.

### Exemplo 1: uma política de escalabilidade preditiva com memória predefinida.
<a name="predictive-scaling-cli-example-one"></a>

Veja a seguir um exemplo de política com uma configuração de memória predefinida.

```
cat policy.json
{
    "MetricSpecifications": [
        {
            "TargetValue": 40,
            "PredefinedMetricPairSpecification": {
                "PredefinedMetricType": "ECSServiceMemoryUtilization"
            }
        }
    ],
    "SchedulingBufferTime": 3600,
    "MaxCapacityBreachBehavior": "HonorMaxCapacity",
    "Mode": "ForecastOnly"
}
```

O exemplo a seguir ilustra a criação da política via execução do comando [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scaling-policy.html) com o arquivo de configuração especificado.

```
aws application-autoscaling put-scaling-policy \
--service-namespace ecs \
--region us-east-1 \
--policy-name predictive-scaling-policy-example \
--resource-id service/MyCluster/test \
--policy-type PredictiveScaling \
--scalable-dimension ecs:service:DesiredCount \
--predictive-scaling-policy-configuration file://policy.json
```

Em caso de êxito, esse comando retornará o ARN da política.

```
{
    "PolicyARN": "arn:aws:autoscaling:us-east-1:012345678912:scalingPolicy:d1d72dfe-5fd3-464f-83cf-824f16cb88b7:resource/ecs/service/MyCluster/test:policyName/predictive-scaling-policy-example",
    "Alarms": []
}
```

### Exemplo 2: uma política de escalabilidade preditiva com CPU predefinida.
<a name="predictive-scaling-cli-example-two"></a>

Veja a seguir um exemplo de política com uma configuração de CPU predefinida.

```
cat policy.json
{
    "MetricSpecifications": [
        {
            "TargetValue": 0.00000004,
            "PredefinedMetricPairSpecification": {
                "PredefinedMetricType": "ECSServiceCPUUtilization"
            }
        }
    ],
    "SchedulingBufferTime": 3600,
    "MaxCapacityBreachBehavior": "HonorMaxCapacity",
    "Mode": "ForecastOnly"
}
```

O exemplo a seguir ilustra a criação da política via execução do comando [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scaling-policy.html) com o arquivo de configuração especificado.

```
aws aas put-scaling-policy \
--service-namespace ecs \
--region us-east-1 \
--policy-name predictive-scaling-policy-example \
--resource-id service/MyCluster/test \
--policy-type PredictiveScaling \
--scalable-dimension ecs:service:DesiredCount \
--predictive-scaling-policy-configuration file://policy.json
```

Em caso de êxito, esse comando retornará o ARN da política.

```
{
    "PolicyARN": "arn:aws:autoscaling:us-east-1:012345678912:scalingPolicy:d1d72dfe-5fd3-464f-83cf-824f16cb88b7:resource/ecs/service/MyCluster/test:policyName/predictive-scaling-policy-example",
    "Alarms": []
}
```