AWS Cost Monitor — FinOps com IA
Em DesenvolvimentoFerramenta de monitoramento e análise de custos da AWS em Python com foco em FinOps, aplicando o princípio arquitetural "Python calcula, IA interpreta".
Descrição do Projeto
O AWS Cost Monitor é uma ferramenta desenvolvida em Python para consulta e análise de custos na AWS via API Cost Explorer (`boto3`). Organiza os gastos por serviço e executa análises determinísticas: custo total, percentual de participação por serviço, identificação do maior causador de custos e comparação entre períodos com tratamento seguro contra divisão por zero.
Princípio Arquitetural: "Python calcula, IA interpreta"
Para garantir confiabilidade absoluta em relatórios financeiros, a ferramenta adota uma separação rigorosa de responsabilidades:
Todos os valores monetários, porcentagens e variações periódicas são calculados estritamente por código Python. A IA nunca gera números.
🤖 Interpretação por IA Desacoplada (Ollama API):Uma camada de IA desacoplada baseada em um modelo Llama local (executado via API HTTP compatível com Ollama) lê os dados já calculados para gerar resumos explicativos. A IA é opcional e não-bloqueante: se o serviço do Ollama estiver indisponível ou offline, o relatório FinOps é emitido normalmente sem erros.
Arquitetura do Pipeline FinOps
Engenharia & Resiliência
- Tratamento Explícito de Erros: Lida graciosamente com credenciais AWS ausentes, permissão insuficiente no IAM, indisponibilidade da API da AWS ou falha na chamada HTTP para o Ollama local.
- Configuração Centralizada: Gerenciamento seguro via variáveis de ambiente com `python-dotenv`.
- Segurança com Múltiplas Camadas: Aplicação do princípio de menor privilégio (*least privilege*) nas credenciais IAM e uso de STS.
- Suíte de Testes Automatizados: Testes completos com `pytest` e `mocks`, permitindo validar a lógica de cálculo e relatórios sem nenhuma dependência de chamadas a contas AWS reais.
- Gerenciamento Moderno: Projeto estruturado utilizando `uv` para alta velocidade na resolução de dependências.
Exemplo de Código (Cálculo e Chamada Desacoplada à IA)
# Exemplo simplificado da estrutura de cálculo determinístico e chamada não-bloqueante à API do Ollama
import boto3
import requests
from typing import Dict, Any
def calculate_cost_metrics(costs_by_service: Dict[str, float]) -> Dict[str, Any]:
total_cost = sum(costs_by_service.values())
# Tratamento seguro contra divisão por zero
percentages = {
service: (cost / total_cost * 100) if total_cost > 0 else 0.0
for service, cost in costs_by_service.items()
}
top_service = max(costs_by_service, key=costs_by_service.get) if costs_by_service else "N/A"
return {
"total_cost": round(total_cost, 2),
"percentages": percentages,
"top_service": top_service
}
def get_ai_insights(metrics: Dict[str, Any]) -> str:
# Chamada à IA desacoplada e não-bloqueante (API do Ollama em localhost:11434)
try:
response = requests.post(
"http://localhost:11434/api/generate",
json={"model": "llama3", "prompt": f"Interprete estes dados: {metrics}"},
timeout=3.0
)
return response.json().get("response", "")
except Exception:
# Se o Ollama estiver offline ou indisponível, o relatório não falha
return "Ollama indisponível. Relatório gerado com base nas métricas determinísticas."