

# Usar ações programadas para substituir os valores de previsão para o Amazon ECS
<a name="predictive-scaling-overriding-forecast-capacity"></a>

Às vezes, você pode ter informações adicionais sobre seus futuros requisitos de aplicações que o cálculo de previsão não pode levar em conta. Por exemplo, os cálculos de previsão podem subestimar as tarefas necessárias para um evento de marketing futuro. É possível usar ações programadas para substituir temporariamente a previsão durante períodos futuros. As ações programadas podem ser executadas de forma recorrente ou em uma data e hora específicas quando houver flutuações de demanda únicas. 

Por exemplo, você pode criar uma ação programada com um número maior de tarefas que o previsto. Em runtime, o Amazon ECS atualiza o número mínimo de tarefas em seu serviço. Como o ajuste de escala preditivo otimiza o número de tarefas, uma ação programada com um número mínimo de tarefas maior do que os valores de previsão é respeitada. Isso impede que o número de tarefas seja inferior ao esperado. Para interromper a substituição da previsão, use uma segunda ação agendada para retornar o número mínimo de tarefas à configuração original.

O procedimento a seguir descreve as etapas necessárias para substituir a previsão durante períodos futuros. 

**Topics**
+ [Etapa 1: (Opcional) Analisar dados de séries temporais](#analyzing-time-series-data)
+ [Etapa 2: Criar duas ações programadas](#scheduling-capacity)

**Importante**  
Este tópico pressupõe que você esteja tentando substituir a previsão para escalar para uma capacidade maior do que a prevista. Se você precisar diminuir temporariamente o número de tarefas sem a interferência de uma política de ajuste de escala preditivo, use o modo *somente previsão*. Enquanto estiver no modo somente de previsão, a escala preditiva continuará a gerar previsões, mas não aumentará automaticamente o número de tarefas. Você então poderá monitorar a utilização dos recursos e diminuir manualmente o número de tarefas conforme necessário. 

## Etapa 1: (Opcional) Analisar dados de séries temporais
<a name="analyzing-time-series-data"></a>

Comece analisando os dados de séries temporais de previsão. Essa é uma etapa opcional, mas é útil quando você deseja entender os detalhes da previsão.

1. **Recuperar a previsão**

   Após a criação da previsão, é possível consultar um período específico na previsão. O objetivo da consulta é obter uma visão completa dos dados de séries temporais para um período específico. 

   Sua consulta pode incluir até dois dias de dados de previsão futura. Se você usa a escalabilidade preditiva há algum tempo, também pode acessar seus dados de previsão anteriores. No entanto, a duração máxima de tempo entre as horas inicial e final é de 30 dias. 

   Para obter a previsão usando o comando da AWS CLI [get-predictive-scaling-forecast](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/get-predictive-scaling-forecast.html), forneça os seguintes parâmetros no comando: 
   + Inclua o nome do cluster no parâmetro `resource-id`. 
   + Insira o nome da política no parâmetro `--policy-name`. 
   + Insira a hora de início no parâmetro `--start-time` para retornar apenas os dados de previsão para depois ou no horário especificado.
   + Insira a hora de término no parâmetro `--end-time` para retornar apenas os dados de previsão para antes do horário especificado. 

   ```
   aws application-autoscaling get-predictive-scaling-forecast \
       --service-namespace ecs \
       --resource-id service/MyCluster/test \
       --policy-name {{cpu40-predictive-scaling-policy}} \
       --scalable-dimension ecs:service:DesiredCount \
       --start-time "{{2021-05-19T17:00:00Z}}" \
       --end-time "{{2021-05-19T23:00:00Z}}"
   ```

   Se bem-sucedido, o comando retornará uma resposta semelhante à seguinte. 

   ```
   {
       "LoadForecast": [
           {
               "Timestamps": [
                   "2021-05-19T17:00:00+00:00",
                   "2021-05-19T18:00:00+00:00",
                   "2021-05-19T19:00:00+00:00",
                   "2021-05-19T20:00:00+00:00",
                   "2021-05-19T21:00:00+00:00",
                   "2021-05-19T22:00:00+00:00",
                   "2021-05-19T23:00:00+00:00"
               ],
               "Values": [
                   153.0655799339254,
                   128.8288551285919,
                   107.1179447150675,
                   197.3601844551528,
                   626.4039934516954,
                   596.9441277518481,
                   677.9675713779869
               ],
               "MetricSpecification": {
                   "TargetValue": 40.0,
                   "PredefinedMetricPairSpecification": {
                       "PredefinedMetricType": "ASGCPUUtilization"
                   }
               }
           }
       ],
       "CapacityForecast": {
           "Timestamps": [
               "2021-05-19T17:00:00+00:00",
               "2021-05-19T18:00:00+00:00",
               "2021-05-19T19:00:00+00:00",
               "2021-05-19T20:00:00+00:00",
               "2021-05-19T21:00:00+00:00",
               "2021-05-19T22:00:00+00:00",
               "2021-05-19T23:00:00+00:00"
           ],
           "Values": [
               2.0,
               2.0,
               2.0,
               2.0,
               4.0,
               4.0,
               4.0
           ]
       },
       "UpdateTime": "2021-05-19T01:52:50.118000+00:00"
   }
   ```

   A resposta inclui duas previsões: `LoadForecast` e `CapacityForecast`. `LoadForecast` mostra a previsão de carga horária. `CapacityForecast` mostra os valores de previsão para a capacidade que é necessária em uma base horária para lidar com a carga prevista enquanto mantém um `TargetValue` de 40,0 (40% de utilização média da CPU).

1. **Identificar o período-alvo**

   Identifique a hora ou horas em que a flutuação de demanda única deverá ocorrer. Lembre-se de que as datas e os horários mostrados na previsão estão em UTC.

## Etapa 2: Criar duas ações programadas
<a name="scheduling-capacity"></a>

Em seguida, crie duas ações programadas para um período específico em que sua aplicação terá uma carga maior do que a prevista. Por exemplo, se você tiver um evento de marketing que irá direcionar o tráfego para seu site por um período limitado, poderá programar uma ação única para atualizar a capacidade mínima quando ele começar. Em seguida, agende outra ação para retornar a capacidade mínima para a configuração original quando o evento terminar. 

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**.

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

1. Escolha **Ações programadas** e, em seguida, escolha **Criar**.

   A página **Criar ação de programação** é exibida.

1. Em **Nome da ação**, insira um nome exclusivo.

1. Em **Time zone** (Fuso horário), escolha um fuso horário.

   Todos os fusos horários listados são do banco de dados de fuso horário da IANA. Para obter mais informações, consulte a [Lista de fusos horários no banco de dados de FH](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).

1. Em **Hora de início**, insira a **Data** e a **Hora** em que a ação começa.

1. Em **Recurrence (Recorrência)**, escolha **Once (Uma vez)**.

1. Em **Ajustes de tarefas**, para Mínimo, insira um valor inferior ou igual ao número máximo de tarefas.

1. Escolha **Criar ação programada**.

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

1. Configure uma segunda ação programada para retornar o número mínimo de tarefas para a configuração original no final do evento. A escalabilidade preditiva pode escalar o número de tarefas somente quando o valor definido para **Minínimo** é menor que os valores da previsão.

**Para criar duas ações programadas para eventos únicos (AWS CLI)**  
Para usar o AWS CLI para criar as ações programadas, use o comando [put-scheduled-update-group-action](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scheduled-update-group-action.html). 

Por exemplo, vamos definir uma programação que mantenha uma capacidade mínima de três instâncias em 19 de maio às 17h por oito horas. Os comandos a seguir mostram como implementar esse cenário.

O primeiro comando [put-scheduled-update-group-action](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scheduled-update-group-action.html) instrui o Amazon EC2 Auto Scaling a atualizar a capacidade mínima do grupo do Auto Scaling especificado às 17h UTC em 19 de maio de 2021. 

```
aws autoscaling put-scheduled-update-group-action --scheduled-action-name {{my-event-start}} \
  --auto-scaling-group-name {{my-asg}} --start-time "{{2021-05-19T17:00:00Z}}" --minimum-capacity {{3}}
```

O segundo comando instrui o Amazon EC2 Auto Scaling a definir a capacidade mínima do grupo como um à 1h da manhã UTC em 20 de maio de 2021. 

```
aws autoscaling put-scheduled-update-group-action --scheduled-action-name {{my-event-end}} \
  --auto-scaling-group-name {{my-asg}} --start-time "{{2021-05-20T01:00:00Z}}" --minimum-capacity {{1}}
```

Após você adicionar essas ações programadas ao grupo do Auto Scaling, o Amazon EC2 Auto Scaling fará o seguinte: 
+ Às 17h UTC em 19 de maio de 2021, a primeira ação programada é executada. Se o grupo tiver menos de três instâncias, ele será expandido para três instâncias. Durante esse período e nas próximas oito horas, o Amazon EC2 Auto Scaling poderá continuar a aumentar a escala na horizontal se a capacidade prevista for maior do que a capacidade real ou se houver uma política de escalabilidade dinâmica em vigor. 
+ À 1h da manhã UTC em 20 de maio de 2021, a segunda ação programada é executada. Isso retorna a capacidade mínima para sua configuração original no final do evento.

### Escalabilidade com base em programações recorrentes
<a name="scheduling-recurring-actions"></a>

Para substituir a previsão para o mesmo período de tempo todas as semanas, crie duas ações programadas e forneça a lógica de hora e data usando uma expressão cron. 

A expressão cron consiste em cinco campos separados por espaços: [Minute] [Hour] [Day\_of\_Month] [Month\_of\_Year] [Day\_of\_Week]. Os campos podem conter quaisquer valores permitidos, incluindo caracteres especiais. 

Por exemplo, esta expressão cron executa a ação todas as terças-feiras às 6h30. O asterisco é usado como um curinga para corresponder a todos os valores de um campo.

```
30 6 * * 2
```

### Consulte também
<a name="scheduling-scaling-see-also"></a>

Para obter mais informações sobre como gerenciar ações programadas, consulte [Usar ações programadas para escalar os serviços do Amazon ECS](service-autoscaling-schedulescaling.md).