# RDS: RDS Snapshot

> Esta regra identifica snapshots de banco de dados Amazon RDS (manuais, automatizados, compartilhados ou públicos) que foram criados há um período superior ao configurado.
>
> O objetivo é detectar backups antigos que podem não ser mais necessários, mas que continuam consumindo armazenamento e gerando custos recorrentes.

***

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

Snapshots do RDS são cópias de armazenamento de instâncias de banco de dados.

Cenários comuns de acumulação:

* Snapshots manuais criados antes de atualizações e nunca excluídos.
* Retenção de backups de instâncias que já foram encerradas.
* Políticas de backup automatizado com janelas de retenção muito longas.
* Cópias de segurança para ambientes de desenvolvimento/teste esquecidas.

Impactos financeiros:

* Custo de armazenamento persistente.
* Acúmulo de dados obsoletos (liability).
* Dificuldade de gestão do ciclo de vida dos dados.

Diferente de instâncias paradas, snapshots não consomem computação, apenas storage, o que torna o crescimento do custo silencioso e constante.

***

**Detalhamento técnico da regra**

A regra executa análise regional dos snapshots RDS.

***

**Como a regra é executada**

1. Autentica na conta AWS por região.
2. Lista todos os snapshots via `describe_db_snapshots`, filtrando pelos tipos:
   * `manual`
   * `automated`
   * `shared`
   * `public`
3. Aplica filtros de tag (inclusão/exclusão).
4. Avalia a data de criação (`SnapshotCreateTime`) de cada snapshot.
5. Compara a idade do snapshot com o período configurado na regra (ex: "maior que X dias").
6. Caso a condição temporal seja atendida, o snapshot é sinalizado.

***

**Lógica aplicada**

Um snapshot será sinalizado quando:

* A diferença entre a data atual e `SnapshotCreateTime` satisfizer a condição do operador (ex: `>=` dias configurados).

Exemplo: Se a regra for configurada para "Maior que 90 dias", qualquer snapshot criado há 91 dias ou mais será listado.

***

**Campos analisados**

* `DBSnapshotIdentifier`
* `DBInstanceIdentifier`
* `SnapshotCreateTime`
* `SnapshotType`
* `DBSnapshotArn`
* `TagList`

***

**Parâmetros considerados na busca**

APIs utilizadas:

* `rds:DescribeDBSnapshots`

Condições técnicas:

* Filtro de tipo: manual, automated, shared, public.
* Comparação direta de data (`datetime.now` vs `SnapshotCreateTime`).

***

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

Período Avaliado (Filtro Temporal): A regra avalia a data de criação do snapshot (`SnapshotCreateTime`). O intervalo de análise corresponde ao operador do período do filtro (ex: "maior que") combinado com os dias do período do filtro definidos na configuração da regra.

Padrão é configurado para "Maior que 15 dias", a regra analisará apenas snapshots criados há mais de 15 dias.

Esse parâmetro deve ser ajustado conforme a política de retenção de backup da organização (ex: compliance de 5 anos vs backups operacionais de 30 dias).<br>

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

***

**Cálculo de Savings**

O savings é baseado na eliminação do custo de armazenamento do snapshot.

***

**Fórmula Conceitual**

```
Savings Mensal = Tamanho do Snapshot (GB) × Preço de Armazenamento de Backup RDS na Região
```

Onde:

* Tamanho do Snapshot = Tamanho do armazenamento provisionado da instância de origem (na maioria dos casos).
* Preço por GB = Varia conforme a região e se é Single-AZ ou Multi-AZ (embora snapshots sejam armazenados no S3 internamente, a cobrança segue tabela do RDS).

***

**Campo de custo utilizado**

No Billing AWS:

* Service: AmazonRDS
* Usage Type:
  * RDS:ChargedBackupUsage
  * SnapshotUsage
* Line Item Type: Usage
* Campo financeiro considerado:
  * Unblended Cost
  * Ou Amortized Cost

***

**Elementos considerados**

* Tamanho do armazenamento (GB).
* Região.
* Não há projeção futura automática; trata-se de economia recorrente após exclusão.

***

**Exemplo aplicado ao Billing**

Cenário:

* Snapshot Manual de 500 GB.
* Região us-east-1.
* Custo aproximado de backup: $0.095 por GB/mês.

Cálculo:

```
Savings = 500 × 0.095
Savings = $47,50/mês
```

Savings anual:

```
47,50 × 12 = $570
```

***

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

* **Atenção aos snapshots automatizados:** Eles são gerenciados pelo RDS e removidos automaticamente conforme a janela de retenção da instância. Excluí-los manualmente pode não ser possível ou recomendável sem alterar a configuração da instância.
* Focar principalmente em **Snapshots Manuais**, que não expiram automaticamente.
* Verificar se o snapshot é o último backup de uma instância já deletada.
* Exportar dados para S3 (formato Parquet/CSV) se precisar de retenção de longo prazo com custo menor (S3 Glacier).
* Implementar tags de data de validade em snapshots manuais.

Possíveis falsos positivos:

* Backups de compliance (ex: retenção legal de 5 anos).
* "Golden Images" usadas para criar novas instâncias.

Recomenda-se validar a finalidade do backup antes da exclusão.
