# Bedrock: Modelos inativos do Amazon Bedrock

> Esta regra identifica recursos avançados do **Amazon Bedrock** que não apresentam utilização durante o período configurado.
>
> A análise abrange:
>
> * **Provisioned Throughput** (Capacidade provisionada de modelos)
> * **Custom Models** (Modelos treinados/afinados)
> * **Imported Models** (Modelos importados externamente)
>
> A regra avalia a métrica de `Invocations` via CloudWatch para determinar se o recurso está ativo ou abandonado.
>
> O objetivo é eliminar custos elevados de capacidade provisionada e armazenamento de modelos não utilizados.

***

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

Recursos dedicados no Bedrock possuem custos significativos:

* **Provisioned Throughput:** Cobrado por hora/unidade de modelo, independentemente do uso. É um dos custos mais altos da plataforma.
* **Custom/Imported Models:** Geram custos de armazenamento e manutenção do modelo.

Problemas comuns:

* Throughput provisionado para testes de carga e esquecido ligado.
* Modelos customizados criados em POCs e não operacionalizados.
* Migração para modo On-Demand sem desligamento do Provisioned.

Impacto:

* Desperdício financeiro crítico (Provisioned Throughput).
* Custo de storage desnecessário (Models).
* Governança de ativos de IA.

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

***

**Detalhamento técnico da regra**

A regra executa análise **regional**.

Para cada região habilitada, ela varre três tipos de recursos distintos no Bedrock.

***

**Como a regra é executada**

**1. Listagem de Recursos**

A regra consulta três listas independentes:

* **Provisioned Throughput:** API: `bedrock:ListProvisionedModelThroughputs`
* **Custom Models:** API: `bedrock:ListCustomModels`
* **Imported Models:** API: `bedrock:ListImportedModels`

***

**2. Verificação de Inatividade**

Para cada recurso encontrado, a regra consulta o CloudWatch:

API:

```
cloudwatch:GetMetricStatistics
```

Namespace:

```
AWS/Bedrock
```

Métrica:

```
Invocations
```

Dimensão:

```
ModelId = {Arn do Recurso}
```

Período analisado:

```
Últimos N dias (self.checker.period.days)
```

Condição de Ociosidade:

```
Soma de Invocations == 0
```

Se o recurso tiver **zero invocações** no período, ele é considerado candidato à análise.

***

**3. Aplicação de filtros de tag**

API:

```
bedrock:ListTagsForResource
```

Se o recurso for identificado como ocioso, os filtros de inclusão/exclusão de tags são aplicados antes da sinalização final.

***

**Lógica aplicada**

Um recurso será sinalizado quando:

```
Total Invocations == 0
NO PERÍODO CONFIGURADO
```

E atender aos filtros de tag.

***

**Campos analisados**

Recursos Bedrock:

* `provisionedModelArn` / `modelArn`
* `provisionedModelName` / `modelName`
* `creationTime`
* `tags`

CloudWatch:

* `Invocations`

***

**Parâmetros considerados na busca**

APIs utilizadas:

* `bedrock:ListProvisionedModelThroughputs`
* `bedrock:ListCustomModels`
* `bedrock:ListImportedModels`
* `bedrock:ListTagsForResource`
* `cloudwatch:GetMetricStatistics`

Parâmetros configuráveis:

* `period.days` (Janela de análise de ociosidade)
* Filtros de tag

***

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

Período Avaliado: 30 dias

Configuração padrão e que identifique Modelos IA ociosos no ambiente no período maior de 30 dias.

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

***

**Calculos de Savings**

Recursos provisionados geram custo fixo por tempo, e modelos geram custo de armazenamento.

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

**Fórmula:**

```sql
SUM("lineitem/unblendedrate" * "lineitem/usageamount")
```

**Interpretação**

O savings considera:

* 100% do custo histórico associado ao Throughput Provisionado (geralmente cobrado por hora).
* 100% do custo de armazenamento dos Modelos Customizados/Importados.

Campos do CUR utilizados:

```
lineitem/unblendedrate
lineitem/usageamount
```

Serviço relacionado:

```
Amazon Bedrock
```

O cálculo representa o custo bruto baseado no consumo registrado no billing durante o período.

***

**Exemplo de Impacto**

Cenário:

* 1 Unidade de Modelo (MU) provisionada para Llama 3 70B
* Esquecida ligada por 30 dias sem tráfego
* Custo estimado: \~$15.000+ (dependendo da região e contrato)

Savings estimado:

```
Valor total da cobrança mensal do Provisioned Throughput
```

Caso o recurso seja encerrado e trocado por inferência On-Demand.

***

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

Recomendações:

* Utilizar **Invocação On-Demand** para cargas de trabalho variáveis ou baixas.
* Reservar **Provisioned Throughput** apenas para produção com tráfego garantido e requisitos estritos de latência.
* Excluir modelos customizados após o fim da validação se não forem entrar em produção.

Boas práticas:

* Configurar alarmes de billing específicos para o serviço Bedrock.
* Taggear recursos de IA com `Project`, `ExpirationDate` e `Owner`.
* Revisar provisionamentos semanalmente.

Exceções possíveis:

* Modelos em standby (Hot Standby) para Disaster Recovery.
* Ambientes de treinamento pré-lan
