# EBS: Snapshot de EBS

> Esta regra identifica **EBS Snapshots** que:
>
> * Pertencem à própria conta
> * Não foram criados pelo AWS Backup
> * Estão fora do intervalo de idade definido
> * Atendem aos filtros de tag configurados
>
> O objetivo é identificar snapshots antigos que podem estar gerando custo recorrente desnecessário.

***

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

Snapshots EBS geram custo contínuo baseado em armazenamento incremental.

Problemas comuns:

* Snapshots esquecidos
* Snapshots de projetos descontinuados
* Duplicação de backups
* Ausência de política de retenção

Impacto:

* Custo recorrente invisível
* Crescimento descontrolado de storage
* Falta de governança de retenção

Classificação: **ECONOMIA + GOVERNANÇA**

***

**Detalhamento técnico da regra**

A regra percorre todas as regiões AWS habilitadas na tenancy.

Para cada região:

1. Lista snapshots com:

```
owner-id = account_id
```

2. Aplica filtros de tag (inclusão/exclusão).
3. Avalia idade do snapshot.
4. Exclui snapshots gerados pelo AWS Backup.

***

**Como a regra é executada**

1. Autenticação por região.
2. Execução:

   ```
   ec2:DescribeSnapshots
   ```

   Filtro:

   ```
   owner-id = account_id
   ```
3. Aplicação de filtros de tag.
4. Validação de idade:

   ```
   diff_days = now - StartTime
   ```

   Condição baseada em:

   ```
   period.operator (greater_than / less_than)
   period.days
   ```
5. Exclusão de snapshots criados pelo AWS Backup:

   ```
   "awsbackup" presente em Description
   ```
6. Snapshots restantes são sinalizados.

***

**Lógica aplicada**

Um snapshot será sinalizado quando:

```
OwnerId = account_id
AND Idade atende critério configurado
AND Description não contém "awsbackup"
```

***

**Campos analisados**

Snapshot EBS:

* `SnapshotId`
* `OwnerId`
* `VolumeId`
* `StartTime`
* `State`
* `Description`
* `Tags`
* `Region`
* `ARN`

***

**Parâmetros considerados na busca**

API utilizada:

```
ec2:DescribeSnapshots
```

Parâmetros configuráveis via checker:

* `period.days`
* `period.operator`
* Filtros de tag

***

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

Período Avaliado: 15 dias

Configuração padrão e que serão analisados snapshots retidos com 15 dias ou mais.

> Esse parâmetro pode ser customizado conforme a necessidade do cliente, permitindo adequação a diferentes políticas de retenção.

***

**Intervalo de Análise**

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

***

**Calculo de Savings**

Snapshots representam custo direto de armazenamento.

Seguindo padrão de regras de recurso potencialmente removível:

**Fórmula Oficial de Savings**

```sql
sum("lineitem/unblendedcost")
```

**Interpretação**

O savings considera:

* 100% do custo associado aos snapshots identificados
* Campo do CUR:

```
lineitem/unblendedcost
```

Serviço relacionado:

```
Amazon Elastic Block Store
```

***

**Exemplo de Impacto**

Cenário:

* 300 snapshots antigos
* Custo mensal total: $4.500

Savings estimado:

```
$4.500/mês
```

Caso removidos conforme política de retenção.

***

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

Antes de excluir:

* Validar dependência com AMIs.
* Verificar política de retenção corporativa.
* Confirmar que não fazem parte de DR.
* Avaliar se estão associados a volumes ativos.

Boas práticas:

* Implementar política automática de lifecycle.
* Centralizar backups no AWS Backup.
* Definir retenção padrão por ambiente.

Exceções possíveis:

* Snapshots para compliance.
* Snapshots de disaster recovery.
* Retenção legal obrigatória.

***
