AWS Cost Monitor — FinOps com IA

Em Desenvolvimento

Ferramenta de monitoramento e análise de custos da AWS em Python com foco em FinOps, aplicando o princípio arquitetural "Python calcula, IA interpreta".

Categoria FinOps & Cloud Automation
Linguagem & Tooling Python 3.14, uv, pytest, boto3
Nuvem AWS & IA Cost Explorer, STS, IAM, Ollama (Llama 3)

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:

⚙️ Cálculo Determinístico em Python:

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

aws-finops-ollama-pipeline.svg
AWS Cost Explorer [boto3 / STS / IAM] Python 3.14 Engine Cálculo Determinístico Relatório FinOps Resultado Final Ollama API Modelo Llama Local

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