← Todos os projetos

AWS Cost Monitor

Ferramenta de monitoramento e análise de custos AWS com foco em FinOps e interpretação automatizada via IA local.

PythonBoto3AWS Cost ExplorerOllama / Llamapytest

01 — Problema

Ambientes AWS acumulam custo invisível. Serviços criados para testes, buckets esquecidos, instâncias superprovisionadas e transferências de dados inesperadas aparecem na fatura sem contexto. O console da AWS disponibiliza os dados, mas a interpretação fica a cargo do engenheiro — que muitas vezes não tem tempo ou referência para fazer isso com consistência.

A ausência de uma visão consolidada e interpretada leva a duas situações comuns:

  • gastos mensais que crescem sem justificativa clara;
  • revisões manuais pontuais que não criam hábito.

02 — Objetivo

Criar uma ferramenta de linha de comando que:

  1. Coleta dados de custo diretamente do AWS Cost Explorer via Boto3;
  2. Realiza a análise de forma determinística (sem depender de IA para os cálculos);
  3. Passa o resultado para um modelo de linguagem local (Ollama) para interpretação e recomendações;
  4. Gera um relatório legível com os serviços mais custosos, variações e sugestões de ação.

O objetivo não é substituir ferramentas de FinOps enterprise, mas fornecer um ponto de partida funcional e auditável para equipes pequenas e projetos pessoais.

03 — Requisitos

  • Coletar custos por serviço em um período configurável (padrão: últimos 30 dias);
  • Calcular total, percentuais por serviço e variação entre períodos;
  • Identificar os serviços responsáveis pela maior parte do custo;
  • Gerar interpretação via modelo de linguagem local (sem enviar dados para APIs externas);
  • Funcionar com permissões IAM mínimas (somente leitura);
  • Executar via linha de comando com saída em texto estruturado.

04 — System Design

AWS Cost Explorer
        ↓
      Boto3
        ↓
  Python Analyzer
  (cálculos determinísticos)
        ↓
  Análise determinística
  (totais, variações, ranking)
        ↓
  Ollama / Llama
  (interpretação local)
        ↓
   Relatório final

A separação entre análise determinística e interpretação via IA é deliberada: os números são calculados pelo código Python antes de qualquer interação com o modelo. O modelo recebe apenas os resultados já processados e é responsável pela narrativa — não pelos cálculos.

05 — Arquitetura

O projeto é dividido em módulos com responsabilidades separadas:

  • src/aws/cost_explorer.py: coleta os dados do Cost Explorer via Boto3;
  • src/analysis/cost_analyzer.py: cálculos, agregações e comparação de períodos;
  • src/analysis/finops_rules.py: regras de crescimento, concentração e ranking;
  • src/ai/llama_client.py: interpretação opcional via modelo local;
  • src/reports/report_generator.py: formatação e gravação dos relatórios;
  • src/main.py: orquestração, com parâmetros em src/config.py.

A IA é tratada como camada opcional: se o Ollama não estiver disponível, o relatório determinístico é gerado sem ela.

06 — Stack

  • Python 3.14+ — linguagem principal;
  • Boto3 — SDK oficial da AWS para acesso ao Cost Explorer;
  • AWS Cost Explorer API — fonte dos dados de custo;
  • AWS STS — verificação de identidade da conta;
  • Ollama / Llama — modelo de linguagem local para interpretação;
  • pytest — suite de testes automatizados.

07 — Segurança

O projeto foi desenhado com segurança como requisito, não como adendo:

  • Permissões mínimas: a ferramenta requer apenas ce:GetCostAndUsage e sts:GetCallerIdentity;
  • Sem dados externos: a interpretação via IA usa modelo local (Ollama) — nenhum dado de custo é enviado para APIs de terceiros;
  • Credenciais via ambiente: nenhuma credencial é hardcoded; autenticação via variáveis de ambiente ou perfis AWS configurados localmente;
  • Auditabilidade: os cálculos determinísticos são transparentes e verificáveis independentemente do modelo de IA.

Política IAM mínima necessária:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ce:GetCostAndUsage",
        "sts:GetCallerIdentity"
      ],
      "Resource": "*"
    }
  ]
}

08 — Custos

O uso da API do AWS Cost Explorer pode gerar cobranças na conta AWS. Avalie a tabela vigente de preços antes de configurar execuções frequentes.

A interpretação com Ollama usa o computador local, sem contratação de API de IA externa. Hardware, energia e outros recursos de execução continuam sujeitos a custos.

09 — Testes

A suite de testes cobre os módulos de análise e coleta com mocks do Boto3, evitando chamadas reais à AWS durante o desenvolvimento.

Os testes verificam:

  • cálculos de total e variação de custo;
  • formatação dos relatórios;
  • comportamento quando os dados estão ausentes ou malformados;
  • integração entre os módulos.

10 — Status

V1 funcional — coleta, análise determinística e relatório com interpretação via IA local estão implementados. O projeto está em uso e pode ser executado via linha de comando com uma conta AWS configurada.

11 — Código / GitHub

O código-fonte está disponível no GitHub:

https://github.com/AirtonNettu/aws-cost-monitor

Ver no GitHub (abre em nova aba)Falar sobre este projeto