

# Recomendações de rebalanceamento de instâncias do EC2
<a name="rebalance-recommendations"></a>

Uma *recomendação de rebalanceamento* de instância do EC2 é um sinal que envia uma notificação quando uma instância Spot tem risco elevado de interrupção. O sinal pode chegar antes do [aviso de interrupção da instância Spot de dois minutos](spot-instance-termination-notices.md), dando a você a oportunidade de gerenciar proativamente a instância spot. É possível decidir rebalancear sua workload em Instâncias spot novas ou existentes que não tenham risco elevado de interrupção.

Nem sempre é possível para o Amazon EC2 enviar o sinal de recomendação de rebalanceamento antes do aviso de interrupção da instância spot de dois minutos. Portanto, o sinal de recomendação de rebalanceamento pode chegar junto com o aviso de interrupção de dois minutos.

As recomendações de rebalanceamento são disponibilizadas como um evento do EventBridge e como um item nos [metadados de instância](ec2-instance-metadata.md) na instância spot. Os eventos são emitidos com base no melhor esforço.

**nota**  
As recomendações de rebalanceamento só são aceitas para Instâncias spot que sejam executadas depois de 5 de novembro de 2020, 0h (UTC).

**Topics**
+ [Rebalancear ações que é possível executar](#rebalancing-actions)
+ [Monitorar os sinais de recomendação de rebalanceamento](#monitor-rebalance-recommendations)
+ [Serviços que usam o sinal de recomendação de rebalanceamento](#services-using-rebalance-rec-signal)

## Rebalancear ações que é possível executar
<a name="rebalancing-actions"></a>

Estas são algumas das possíveis ações de rebalanceamento que é possível executar:

Desligamento normal  
Quando você receber o sinal de recomendação de rebalanceamento para uma instância spot, poderá iniciar os procedimentos de desligamento da instância, o que pode incluir a garantia de que os processos sejam concluídos antes de serem interrompidos. Por exemplo, é possível fazer upload de logs de sistema ou de aplicações para o Amazon Simple Storage Service (Amazon S3), desligar operadores do Amazon SQS ou concluir o cancelamento do registro do Sistema de Nomes de Domínio (DNS). Também é possível salvar seu trabalho em armazenamento externo e retomá-lo mais tarde.

Impedir que novos trabalhos sejam programados  
Quando você recebe o sinal de recomendação de rebalanceamento para uma instância spot, pode impedir que novos trabalhos sejam programados na instância enquanto ela continuar a ser usada até o trabalho programado ser concluído.

Executar proativamente novas instâncias de substituição  
É possível configurar grupos do Auto Scaling, EC2 Fleet ou frota spot para iniciar automaticamente as instâncias spot de substituição quando um sinal de recomendação de rebalanceamento é emitido. Para obter mais informações, consulte [Use Capacity Rebalancing to handle Amazon EC2 Spot interruptions](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html) no *Guia do usuário do Amazon EC2 Auto Scaling* e [Use o rebalanceamento de capacidade na frota do EC2 e na frota spot para substituir instâncias spot em risco](ec2-fleet-capacity-rebalance.md) neste guia do usuário.

## Monitorar os sinais de recomendação de rebalanceamento
<a name="monitor-rebalance-recommendations"></a>

É possível monitorar o sinal de recomendação de rebalanceamento de modo que, quando ele for emitido, você possa executar as ações especificadas na seção anterior. O sinal de recomendação de rebalanceamento é disponibilizado como um evento que é enviado para o Amazon EventBridge (anteriormente conhecido como Amazon CloudWatch Events) e como metadados de instância na instância spot.

**Topics**
+ [Usar o Amazon EventBridge](#cp-eventbridge)
+ [Usar metadados da instância](#cp-instance-metadata)

### Usar o Amazon EventBridge
<a name="cp-eventbridge"></a>

Quando o sinal de recomendação de rebalanceamento é emitido para uma instância spot, o evento para o sinal é enviado para o Amazon EventBridge. Se o EventBridge detectar um padrão de evento que corresponda a um padrão definido em uma regra, o EventBridge invocará um destino (ou destinos) especificado(s) na regra.

Veja a seguir um exemplo de evento para o sinal de recomendação de rebalanceamento.

```
{
    "version": "0",
    "id": "{{12345678-1234-1234-1234-123456789012}}",
    "detail-type": "EC2 Instance Rebalance Recommendation",
    "source": "aws.ec2",
    "account": "{{123456789012}}",
    "time": "{{yyyy}}-{{mm}}-{{dd}}T{{hh}}:{{mm}}:{{ss}}Z",
    "region": "{{us-east-2}}",
    "resources": ["arn:aws:ec2:{{us-east-2}}:{{123456789012}}:instance/{{i-1234567890abcdef0}}"],
    "detail": {
        "instance-id": "{{i-1234567890abcdef0}}"
    }
}
```

Os campos a seguir formam o padrão de evento definido na regra:

`"detail-type": "EC2 Instance Rebalance Recommendation"`  
Identifica que o evento é um evento de recomendação de rebalanceamento

`"source": "aws.ec2"`  
Identifica que o evento é de Amazon EC2

#### Criar uma regra de EventBridge
<a name="cp-eventbridge-rule"></a>

É possível escrever uma regra de EventBridge e automatizar quais ações tomar quando o padrão de evento corresponder à regra.

O exemplo a seguir cria uma regra de EventBridge para enviar um e-mail, mensagem de texto ou notificação por push para dispositivos móveis sempre que Amazon EC2 emite um sinal de recomendação de rebalanceamento. O sinal é emitido como um evento de `EC2 Instance Rebalance Recommendation`, que aciona a ação definida pela regra.

Antes de criar a regra EventBridge, você deve criar o tópico do Amazon SNS para e-mail, mensagem de texto ou notificação por push móvel.

**Para criar uma regra de EventBridge para um evento de recomendação de rebalanceamento**

1. Abra o console do Amazon EventBridge em [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. Selecione **Criar regra**.

1. Em **Define rule detail** (Definir detalhe da regra), faça o seguinte:

   1. Informe um **Name (Nome)** para a regra e, opcionalmente, uma descrição.

      Uma regra não pode ter o mesmo nome que outra regra na mesma região e no mesmo barramento de eventos.

   1. Em **Event Bus** (Barramento de eventos), escolha **default** (padrão). Quando um serviço da AWS em sua conta gerar um evento, ele sempre irá para o barramento de eventos padrão da sua conta.

   1. Em **Rule type** (Tipo de regra), escolha **Rule with an event pattern** (Regra com um padrão de evento).

   1. Escolha **Próximo**.

1. Em **Build event pattern** (Criar padrão de evento), faça o seguinte:

   1. Em **Event source** (Origem do evento), escolha **Eventos da AWS ou eventos de parceiro do EventBridge**.

   1. Em **Event pattern** (Padrão de evento), neste exemplo você especificará o seguinte padrão de evento para corresponder ao evento `EC2 Instance Rebalance Recommendation` e, em seguida, escolherá **Save** (Salvar).

      ```
      {
       "source": ["aws.ec2"],
       "detail-type": ["EC2 Instance Rebalance Recommendation"]
      }
      ```

      Para adicionar o padrão de evento, é possível usar um modelo escolhendo **Event pattern form** (Formulário de padrão de evento), ou especifique seu próprio padrão escolhendo **Custom pattern (JSON editor)** (Padrão personalizado (editor JSON)), como segue:

      1. Para usar um modelo para criar o padrão de evento, faça o seguinte:

         1. Escolha **Event pattern form** (Formulário de evento).

         1. Em **Event source** (Origem do evento), escolha **AWS services** (Serviços da ).

         1. Em **AWS Service** (Produto da ), escolha **EC2 Spot Fleet** (Frota spot do EC2).

         1. Em **Event type** (Tipo de evento), escolha **EC2 Instance Rebalance Recommendation** (Recomendação de rebalanceamento da instância do EC2).

         1. Para personalizar o modelo, escolha **Edit pattern** (Editar padrão) e faça as alterações para corresponder ao padrão de evento de exemplo.

      1. (Alternativa) Para especificar um padrão de evento personalizado, faça o seguinte:

         1. Escolha **Custom pattern (JSON editor)** (Padrão personalizado (editor JSON)).

         1. Na caixa **Event pattern** (Padrão de evento), adicione o padrão de evento para este exemplo.

   1. Escolha **Próximo**.

1. Em **Select target(s)** (Selecionar destino(s)), faça o seguinte:

   1. Em **Tipos de destino**, escolha **Serviço da AWS**.

   1. Em **Select a target** (Selecione um destino), escolha **SNS topic** (Tópico do SNS) para enviar um email, mensagem de texto ou notificação por push móvel quando o evento ocorrer.

   1. Em **Topic** (Tópico), escolha um tópico existente. Para fazer isso, você precisa criar um tópico do Amazon SNS usando o console do Amazon SNS. Para obter mais informações, consulte [Usar o Amazon SNS para mensagens de aplicação para pessoa (A2P)](https://docs.aws.amazon.com//sns/latest/dg/sns-user-notifications.html) no *Guia do desenvolvedor do Amazon Simple Notification Service*.

   1. (Opcional) Em **Additional settings** (Configurações adicionais), é possível, opcionalmente, definir configurações adicionais. Para obter mais informações, consulte [Criar regras do Amazon EventBridge que reajam a eventos](https://docs.aws.amazon.com//eventbridge/latest/userguide/eb-create-rule.html) (etapa 16) no *Guia do usuário do Amazon EventBridge*.

   1. Escolha **Próximo**.

1. (Opcional) Em **Tags** (Etiquetas), é possível atribuir, opcionalmente, uma ou mais etiquetas à sua regra e, em seguida, escolher **Next** (Próximo).

1. Em **Review and create** (Revisar e criar), faça o seguinte:

   1. Revise os detalhes da regra e modifique-os conforme necessário.

   1. Escolha **Criar regra**.

Para obter mais informações, consulte [Amazon EventBridge rules](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html) (Regras do Amazon EventBridge) e [Amazon EventBridge event patterns](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html) (Padrões de eventos do Amazon EventBridge) no *Amazon EventBridge User Guide* (Manual do usuário do Amazon EventBridge).

### Usar metadados da instância
<a name="cp-instance-metadata"></a>

A categoria de metadados da instância `events/recommendations/rebalance` fornece o horário aproximado, em UTC, quando o sinal de recomendação de rebalanceamento foi emitido para uma instância spot.

Recomendamos que você verifique se há sinais de recomendação de rebalanceamento a cada 5 segundos para que você não perca a oportunidade de agir de acordo com a recomendação de rebalanceamento.

Se uma instância spot receber uma recomendação de rebalanceamento, o horário em que o sinal foi emitido estará presente nos metadados da instância. É possível recuperar o horário em que o sinal foi emitido da seguinte forma.

------
#### [ IMDSv2 ]

**Linux**  
Execute o seguinte comando em sua instância Linux.

**IMDSv2**

```
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
    && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/events/recommendations/rebalance
```

**Windows**  
Execute o seguinte cmdlet na sua instância Windows.

```
[string]$token = Invoke-RestMethod `
    -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} `
    -Method PUT -Uri http://169.254.169.254/latest/api/token
```

```
Invoke-RestMethod `
    -Headers @{"X-aws-ec2-metadata-token" = $token} `
    -Method GET -Uri http://169.254.169.254/latest/meta-data/events/recommendations/rebalance
```

------
#### [ IMDSv1 ]

**Linux**  
Execute o seguinte comando em sua instância Linux.

```
curl http://169.254.169.254/latest/meta-data/events/recommendations/rebalance
```

**Windows**  
Execute o seguinte cmdlet na sua instância Windows.

```
Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/events/recommendations/rebalance
```

------

A seguir, é mostrado um exemplo de saída, que indica o horário, em UTC, em que o sinal de recomendação de rebalanceamento foi emitido para a instância spot.

```
{"noticeTime": "2020-10-27T08:22:00Z"}
```

Se o sinal não tiver sido emitido para a instância, o `events/recommendations/rebalance` não estará presente e você receberá uma mensagem de erro HTTP 404 quando tentar recuperá-lo.

## Serviços que usam o sinal de recomendação de rebalanceamento
<a name="services-using-rebalance-rec-signal"></a>

O Amazon EC2 Auto Scaling, a EC2 Fleet e a frota spot usam o sinal de recomendação de rebalanceamento para facilitar a manutenção da disponibilidade da workload, aumentando proativamente a frota com uma nova instância spot antes que uma instância em execução receba o aviso de interrupção da instância spot de dois minutos. É possível fazer com que esses serviços monitorem e respondam proativamente às alterações que afetam a disponibilidade da suas Instâncias spot. Para saber mais, consulte:
+ [Usar o rebalanceamento de capacidade para lidar com interrupções spot do Amazon EC2](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html) no *Guia do usuário do Amazon EC2 Auto Scaling*.
+ [Use o rebalanceamento de capacidade na frota do EC2 e na frota spot para substituir instâncias spot em risco](ec2-fleet-capacity-rebalance.md) no tópico frota do EC2 e frota spot neste guia do usuário