# S3: Bucket S3 inativo

> Esta regra identifica buckets Amazon S3 que:
>
> * Estão dentro do intervalo de idade configurado
> * Atendem aos filtros de tag definidos
> * Não apresentam variação de tamanho ou número de objetos no período analisado
>
> O objetivo é identificar buckets potencialmente **inativos ou abandonados**, que continuam gerando custo recorrente.

***

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

Buckets S3 inativos podem indicar:

* Projetos descontinuados
* Ambientes temporários não removidos
* Dados esquecidos
* Falta de governança de storage

Impactos:

* Custo recorrente invisível
* Crescimento acumulado de storage
* Complexidade operacional desnecessária

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

***

**Detalhamento técnico da regra**

A regra avalia todos os buckets da conta (escopo global).

A inatividade é determinada via métricas do CloudWatch:

* `NumberOfObjects`
* `BucketSizeBytes`

***

**Como a regra é executada**

1. Executa:

   ```
   s3:ListBuckets
   ```
2. Para cada bucket:

   * Obtém tags:

     ```
     s3:GetBucketTagging
     ```
   * Aplica filtros de tag.
   * Valida idade com base em:

     ```
     CreationDate
     ```
   * Obtém região do bucket:

     ```
     s3:GetBucketLocation
     ```
   * Consulta métricas no CloudWatch:

     ```
     AWS/S3 - NumberOfObjects
     AWS/S3 - BucketSizeBytes
     ```

   Período analisado:

   ```
   agora - period.days
   ```
3. Bucket é considerado inativo quando:
   * Não existem datapoints OU
   * Valores de NumberOfObjects são constantes E
   * Valores de BucketSizeBytes são constantes

***

**Lógica aplicada**

Um bucket será sinalizado quando:

```
Idade atende critério configurado
AND
(
    Sem datapoints no período
    OR
    Número de objetos constante
    AND
    Tamanho total constante
)
```

Constância indica ausência de gravação ou exclusão de objetos.

***

**Campos analisados**

Bucket S3:

* `Name`
* `CreationDate`
* `Tags`
* `ARN`

Métricas analisadas:

* `AWS/S3 - NumberOfObjects`
* `AWS/S3 - BucketSizeBytes`

***

**Parâmetros considerados na busca**

APIs utilizadas:

* `s3:ListBuckets`
* `s3:GetBucketTagging`
* `s3:GetBucketLocation`
* `cloudwatch:GetMetricStatistics`

Parâmetros configuráveis:

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

***

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

Período Avaliado: 180 dias

Configuração padrão é identificar Buckets S3 sem Atividade Recente

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

***

**Calculo de Savings**

Buckets inativos representam oportunidade potencial de remoção ou arquivamento.

Seguindo o padrão das regras de recurso potencialmente eliminável:

**Fórmula Oficial de Savings**

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

**Interpretação**

O savings considera:

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

```
lineitem/unblendedcost
```

Serviço relacionado:

```
Amazon Simple Storage Service
```

***

**Exemplo de Impacto**

Cenário:

* 12 buckets inativos
* Custo mensal total: $6.800

Savings estimado:

```
$6.800/mês
```

Caso sejam removidos ou arquivados adequadamente.

***

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

Antes de remover:

* Validar se não fazem parte de processo batch eventual.
* Verificar dependência com aplicações externas.
* Avaliar requisitos legais de retenção.

Boas práticas:

* Definir política de lifecycle automática.
* Estabelecer processo de revisão trimestral.
* Aplicar tag obrigatória de owner e expiração.
* Avaliar migração para Glacier antes da exclusão.

Exceções possíveis:

* Buckets de DR.
* Buckets de retenção legal.
* Ambientes sazonais.
