# Bedrock: Ociosidade da Base de Conhecimento do Amazon Bedrock

> Esta regra identifica **AWS Bedrock Knowledge Bases** que não apresentam uso durante um período configurável.
>
> A análise considera:
>
> * Métrica `RetrieveCount` do CloudWatch
> * Período definido em `self.checker.period.days`
>
> Quando a Knowledge Base utiliza **OpenSearch Serverless (AOSS)** como storage vetorial, a regra também:
>
> * Identifica a Collection associada
> * Avalia uso via métricas:
>   * `SearchRequestCount`
>   * `IndexingRequestCount`
>
> O objetivo é identificar recursos de IA potencialmente abandonados ou sem utilização ativa.

***

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

Knowledge Bases do Bedrock podem gerar custo por:

* Armazenamento vetorial
* Operação contínua da Collection OpenSearch Serverless
* Indexação e consultas

Problemas comuns:

* POCs abandonadas
* Projetos pausados
* Ambientes de teste não removidos
* Collections ativas sem tráfego

Impacto:

* Custo recorrente invisível
* Recursos de IA sem geração de valor
* Complexidade operacional desnecessária
* Superfície adicional de exposição

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

***

**Detalhamento técnico da regra**

A regra avalia Knowledge Bases de forma regional.

***

**Como a regra é executada**

1. Lista Knowledge Bases:

```
bedrock-agent:ListKnowledgeBases
```

2. Para cada Knowledge Base:

   * Verifica uso via CloudWatch:

   ```
   cloudwatch:GetMetricStatistics
   ```

   Namespace:

   ```
   AWS/Bedrock
   ```

   Métrica:

   ```
   RetrieveCount
   ```

   Condição:

   ```
   Soma de RetrieveCount = 0 no período configurado
   ```
3. Aplica filtros de tag:

```
bedrock-agent:ListTagsForResource
```

4. Verifica storage vinculado:

```
bedrock-agent:GetKnowledgeBase
```

5. Se utilizar OpenSearch Serverless:

   * Obtém collection:

   ```
   opensearchserverless:BatchGetCollection
   ```

   * Avalia uso via CloudWatch:

   Namespace:

   ```
   AWS/AOSS
   ```

   Métricas:

   ```
   SearchRequestCount
   IndexingRequestCount
   ```

   Condição:

   ```
   Ambas = 0 no período analisado
   ```

A Knowledge Base é sinalizada quando o critério de inatividade é atendido.

***

**Lógica aplicada**

Uma Knowledge Base será sinalizada quando:

```
RetrieveCount = 0 no período configurado
```

Se houver OpenSearch Serverless associado:

A Collection será classificada como candidata à remoção quando:

```
SearchRequestCount = 0
AND
IndexingRequestCount = 0
```

***

**Campos analisados**

Knowledge Base:

* `knowledgeBaseId`
* `name`
* `status`
* `updatedAt`
* `tags`
* `storageConfiguration`

OpenSearch Serverless:

* `collectionArn`
* `collection_id`
* `collection_name`
* `vectorIndexName`

CloudWatch:

* `RetrieveCount`
* `SearchRequestCount`
* `IndexingRequestCount`

***

**Parâmetros considerados na busca**

APIs utilizadas:

* `bedrock-agent:ListKnowledgeBases`
* `bedrock-agent:GetKnowledgeBase`
* `bedrock-agent:ListTagsForResource`
* `cloudwatch:GetMetricStatistics`
* `opensearchserverless:BatchGetCollection`

Parâmetros configuráveis:

* `period.days`
* Filtros de tag

***

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

Período Avaliado: 30 dias

Configuração padrão e que identifique Recursos 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.

***

**Calculo de Savings**

Knowledge Bases ociosas representam custo recorrente de infraestrutura e armazenamento vetorial.

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 à Knowledge Base
* 100% do custo da Collection OpenSearch Serverless vinculada (quando aplicável)

Campos do CUR utilizados:

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

Serviços relacionados:

```
Amazon Bedrock
Amazon OpenSearch Serverless
```

O cálculo representa o custo bruto baseado no consumo registrado no billing.

***

**Exemplo de Impacto**

Cenário:

* Knowledge Base criada para POC
* 30 dias sem uso
* Collection OpenSearch Serverless ativa
* Custo mensal associado: $2.400

Savings estimado:

```
$2.400/mês
```

Caso os recursos sejam removidos.

***

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

Antes de remover:

* Validar se há aplicações dependentes.
* Confirmar se o projeto está realmente encerrado.
* Avaliar retenção de dados indexados.

Boas práticas:

* Definir política de expiração para POCs.
* Monitorar uso via CloudWatch.
* Aplicar tags de owner e ambiente.
* Revisar recursos de IA trimestralmente.

Exceções possíveis:

* Projetos sazonais.
* Ambientes de laboratório.
* Knowledge Bases preparadas para uso futuro.
