# EC2: Expiração da Instância Reservada EC2

> Esta regra identifica Reserved Instances (RIs) ativas do Amazon EC2 que estão próximas da data de expiração, com base no período configurado na regra.
>
> O objetivo é permitir planejamento antecipado de renovação, reestruturação de capacidade ou revisão da estratégia de compromisso financeiro.

***

**Contexto da regra e impacto no negócio**

Reserved Instances oferecem desconto significativo em comparação ao modelo On-Demand, mediante compromisso de 1 ou 3 anos.

Quando uma RI expira:

* O desconto deixa de ser aplicado automaticamente.
* A cobrança volta ao modelo On-Demand.
* Pode ocorrer aumento inesperado no custo mensal.

Sem monitoramento preventivo:

* O time financeiro perde previsibilidade.
* Pode ocorrer ruptura na cobertura de instâncias.
* O orçamento mensal pode sofrer variação abrupta.

Esta regra atua como mecanismo de governança financeira preventiva.

***

**Detalhamento técnico da regra**

A regra executa análise regional das Reserved Instances EC2.

***

**Como a regra é executada**

1. Autentica na conta AWS por região.
2. Lista Reserved Instances via `describe_reserved_instances`, filtrando:

   ```
   state = active
   ```
3. Aplica filtros de tag (inclusão/exclusão).
4. Para cada reserva:
   * Obtém o campo:

     ```
     End
     ```
   * Calcula:

     ```
     Dias até expiração = End - Data atual
     ```
5. Se os dias restantes forem menores ou iguais ao período configurado, a reserva é sinalizada.

***

**Lógica aplicada**

Uma Reserved Instance será sinalizada quando:

```
State = active
E
Dias até expiração ≤ período configurado
```

A regra não considera reservas já expiradas.

***

**Campos analisados**

Reserved Instance:

* `ReservedInstancesId`
* `InstanceType`
* `InstanceCount`
* `State`
* `End`
* `Tags`
* Região

***

**Parâmetros considerados na busca**

APIs utilizadas:

* `ec2:DescribeReservedInstances`

Condições técnicas:

* Filtro de estado = active
* Comparação de data atual com campo `End`
* Threshold baseado em `self.checker.period.days`

***

**Período Avaliado (Filtro Temporal)**

Período Avaliado (Filtro Temporal): A regra avalia o tempo restante até a data de expiração da Reserved Instance.

O intervalo de análise corresponde aos dias configurados na regra.

Exemplo: Se configurado para 30 dias, a regra listará todas as RIs que irão expirar nos próximos 30 dias.

Esse parâmetro permite alinhar o aviso com o ciclo interno de planejamento financeiro.

> Esse parâmetro de avaliação pode ser ajustado nas configurações das regras.

***

**Intervalo de Análise**

Execução padrão: a cada 8 horas.

***

**Aderência às melhores práticas**

Não gera savings direto, mas previne:

* Perda de desconto contratual.
* Aumento inesperado de custo.
* Desalinhamento de capacidade provisionada.

Está alinhada com práticas de FinOps e gestão ativa de compromissos.

***

**Impacto financeiro indireto**

Quando uma RI expira:

```
Novo custo = Preço On-Demand – Preço com desconto da RI
```

A diferença pode variar entre 30% e 60%, dependendo do tipo de instância e modelo de pagamento.

***

**Exemplo prático**

Cenário:

* Instância: m5.large
* 5 unidades reservadas
* Desconto médio: 40%
* Custo On-Demand por instância: $100/mês
* Custo com RI: $60/mês

Impacto após expiração:

```
Impacto mensal por instância = 100 - 60 = $40
Impacto total mensal = 40 × 5 = $200
Impacto anual = $2.400
```

***

**Dicas de uso e boas práticas para o usuário**

* Avaliar histórico de utilização antes da renovação.
* Revisar necessidade real de capacidade.
* Considerar migração para Savings Plans quando aplicável.
* Iniciar processo de renovação com antecedência mínima de 30 a 60 dias.
* Revisar se houve mudança de geração de instância (ex: m5 → m6i).
* Avaliar opção de pagamento (All Upfront, Partial, No Upfront).

Possíveis exceções:

* Instâncias que serão descontinuadas.
* Migração para arquitetura diferente.
* Substituição por instâncias Spot ou Auto Scaling flexível.

Recomenda-se alinhamento entre times de arquitetura, FinOps e financeiro antes da renovação.
