Skip to main content
Todos os posts

Guia

Estimativa de custo do Terraform: como funciona e as ferramentas

Como a estimativa de custo do Terraform sai do plan e dos preços das clouds, o que ela não enxerga, as ferramentas que a calculam e como levá-la ao code review.

Gabriel NielsenCo-founder and CPO
Publicado em
Atualizado em
Tempo de leitura
10 min
Read in EnglishTerraform Cost Estimation: How It Works and the Tools That Do It

O Terraform não estima custo sozinho: a CLI dele faz o plan e o apply, mas não tem comando de custo. A estimativa vem de uma ferramenta que lê o seu plan ou o seu código, busca o preço de cada recurso e informa o custo mensal e quanto a mudança acrescenta. A CLI open source do Infracost roda no seu pipeline, o HCP Terraform tem uma fase de estimativa nos planos Standard e Premium, env0 e Spacelift rodam o Infracost dentro das próprias execuções, e o Scalr calcula os plans pelo servidor de preços do Infracost. O bot de PR da LevelFour publica a estimativa em cada pull request que mexe em Terraform ou CloudFormation, com configurações mais baratas que você aplica com um comentário.

Lemos a documentação da HashiCorp e das clouds e as páginas de cada ferramenta em outubro de 2026. A LevelFour é nossa, por isso o bot dela ocupa mais espaço, e cada afirmação sobre outra ferramenta leva à página dela.

Como funciona a estimativa de custo do Terraform

A estimativa calcula o preço de duas versões da sua infraestrutura, a que está hoje no state do Terraform e a que a mudança propõe, e mostra a diferença. A maioria das ferramentas parte do plan. Salve o plan com -out e converta para JSON:

Terminal
terraform plan -out=tfplan
terraform show -json tfplan > plan.json

O array resource_changes do JSON lista cada recurso que o plan altera, com as actions e os atributos before e after da mudança. A ferramenta liga cada tipo de recurso e os atributos que definem o preço dele, como o instance_type de um aws_instance, a um preço, multiplica o preço por hora por 730 horas para chegar ao mês e soma as duas versões. O plan salvo e o JSON gerado a partir dele guardam valores sensíveis em texto puro, então trate os dois como segredo. terraform plan.

Algumas ferramentas pulam o plan e leem os arquivos .tf direto. O l4 estimate da LevelFour interpreta o Terraform na sua máquina e manda só os recursos para a API da LevelFour, sem precisar de terraform plan nem de stack no ar.

De onde vêm os preços

Cada cloud publica a tabela de preços numa API, e as ferramentas de estimativa partem desses preços, direto ou por uma base de preços própria.

  • AWS: a Price List Query API e a Price List Bulk API, as duas atrás de uma permissão do IAM. A Query API não traz preços de Savings Plans, e quando a API e a página de preço de um serviço discordam, a AWS cobra o preço da página. AWS Price List API.
  • Azure: a Retail Prices API responde sem autenticação, e os preços de plano de economia só aparecem na versão 2023-01-01-preview. Azure Retail Prices API.
  • Google Cloud: a Cloud Billing Catalog API pede uma API key, e a Pricing API, mais nova, pode devolver os preços do seu contrato, se você tiver preço negociado. Cloud Billing Catalog API.

São preços de lista de uma região. Uma estimativa calculada em us-east-1 para um stack que roda em São Paulo erra pela diferença entre as duas regiões, então calcule na região onde o stack roda de verdade.

O que a estimativa não enxerga

O plan diz o que vai rodar, mas não quanto tráfego vai atender nem quanto você paga depois dos descontos. Três lacunas separam a estimativa da fatura:

  • Uso. As funções de evento do AWS Lambda cobram por requisição e pelo tempo que o código roda, e o Amazon S3 por armazenamento, requisições e transferência de dados. Nada disso está no código. O Infracost lê o uso esperado de cada recurso num arquivo infracost-usage.yml, e os planos pagos definem padrões de uso para a empresa toda. O Infracost sobre recursos cobrados por uso.
  • Os seus descontos. O preço de lista deixa de fora Savings Plans, Reserved Instances, committed use discounts e preço negociado, então um time com muitos commitments vê estimativas acima da fatura. O Infracost Cloud aceita uma tabela de preços própria, e a Pricing API do Google pode devolver os preços do seu contrato.
  • Recursos fora da mudança. O que foi criado à mão, por outro stack ou por um autoscaler durante a execução não está no plan, e a estimativa não conta.

Leia a estimativa como o tamanho e a direção de uma mudança, e confira o resultado na fatura depois do merge.

Ferramentas de estimativa de custo do Terraform

Nem a CLI do Terraform nem o OpenTofu têm comando de custo, então a estimativa vem de uma destas. O guia The Best Infracost Alternatives in 2026, em inglês, compara as ferramentas com mais detalhe.

LevelFour
Como estima
Calcula o custo do Terraform ou do CloudFormation que um pull request altera e sugere configurações mais baratas
Onde a estimativa aparece
Comentário, status e sugestões inline no GitHub e no GitLab; códigos de saída da CLI l4 no CI
Indicada para
Times que querem a estimativa e a correção no mesmo review
Infracost
Como estima
CLI open source para Terraform, Terragrunt, CloudFormation e outros, com um produto hospedado por cima
Onde a estimativa aparece
Comentários em pull requests no GitHub, no GitLab, no Azure Repos e no Bitbucket, e extensões para editores
Indicada para
Times que querem uma CLI open source em qualquer pipeline
HCP Terraform e Terraform Enterprise
Como estima
Uma fase de estimativa entre o plan e o apply, para recursos na AWS, no Azure e no Google Cloud
Onde a estimativa aparece
A execução e as políticas Sentinel no modo legado
Indicada para
Times que rodam Terraform no HCP Terraform, nos planos Standard ou Premium, ou no Terraform Enterprise
env0, Spacelift e Scalr
Como estima
O Infracost dentro das próprias execuções, ou o servidor de preços dele no Scalr, com a sua API key do Infracost
Onde a estimativa aparece
As execuções e os motores de política; o Spacelift também publica nos pull requests
Indicada para
Times que já fazem deploy por uma delas
Terracost
Como estima
Uma biblioteca em Go que estima o custo do Terraform com preços de cloud carregados num MySQL
Onde a estimativa aparece
Onde você integrar
Indicada para
Times que montam a própria ferramenta de estimativa

Fontes: a documentação e as páginas de preço de cada ferramenta.

LevelFour

O bot de PR da LevelFour lê cada pull request no GitHub e cada merge request no GitLab que mexe em Terraform ou CloudFormation, calcula o custo da mudança e propõe configurações mais baratas quando encontra alguma. A CLI l4 calcula o custo do mesmo código num pipeline. As próximas seções mostram os dois.

Infracost

A CLI do Infracost é open source, sob a licença Apache 2.0, e calcula o custo de Terraform, Terragrunt e CloudFormation, entre outros, na AWS, no Azure e no Google Cloud, e a integração hospedada com os repositórios acrescenta o AWS CDK. O plano gratuito de CI/CD inclui 1.000 execuções por mês e se integra a GitHub, GitLab e Azure DevOps. O Starter custa US$ 250 por mês, e o Cloud, por US$ 1.000 por mês, acrescenta os Cost Guardrails, que podem bloquear o merge acima de um limite que você define, e uma tabela de preços própria. Preços do Infracost. Extensões para VS Code, IDEs da JetBrains e outros editores mostram a estimativa enquanto você escreve. Extensões do Infracost para editores.

HCP Terraform

O HCP Terraform, serviço hospedado da HashiCorp, estima recursos da AWS, do Azure e do Google Cloud numa fase extra da execução, entre o plan e o apply, com o custo por hora, o custo mensal e a diferença. A estimativa vem desligada por padrão e faz parte dos planos Standard e Premium. O Terraform Enterprise, a versão self-hosted, também oferece, e as políticas Sentinel leem a estimativa no modo legado de execução de políticas. Estimativa de custo no HCP Terraform.

env0, Spacelift e Scalr

As três estimam com a sua API key do Infracost: env0 e Spacelift rodam o Infracost dentro das próprias execuções, e o Scalr calcula os plans pelo servidor de preços do Infracost. O env0 estima Terraform, OpenTofu e Terragrunt. O Spacelift roda um breakdown do Infracost que dá feedback nos pull requests e alimenta as políticas de plan. O Scalr estima plans de Terraform e OpenTofu e passa a estimativa para as políticas OPA dele como cost_estimate.

Terracost

O Terracost, da Cycloid, é uma biblioteca em Go com licença MIT que estima o custo do Terraform na AWS, no Google Cloud e no Azure a partir de preços que você carrega num banco MySQL. É o ponto de partida de quem monta a própria ferramenta de estimativa. Terracost no GitHub.

Leve a estimativa para o code review

Boa parte da fatura de cloud se decide no code review. Alguém escolhe o tamanho da instância por costume, copia o tipo de disco de outro módulo ou sobe o número de réplicas para um teste de carga e nunca mais baixa. Quando isso aparece na fatura, a mudança já está rodando há semanas. O bot de PR da LevelFour põe a estimativa no pull request, enquanto quem revisa ainda pode mudar o código. Em cada pull request, ele publica:

  • Um comentário com quanto os recursos alterados custam antes e depois da mudança, e o gasto mensal. A cada push, o bot edita esse mesmo comentário, e a conversa continua legível.
  • Um status da LevelFour no painel de checks do GitHub e no status do pipeline do GitLab, com o resumo da análise. Esse status só falha quando a própria análise não conseguiu rodar.
  • Sugestões inline nas linhas do diff, cada uma com uma mudança concreta num recurso, prontas para commit.

No CloudFormation, o bot lê templates em YAML e JSON, templates SAM e nested stacks cujo template está no repositório. Antes de calcular o custo, ele resolve parâmetros, condições e mapeamentos, e lista em Assumptions, no comentário de custo, tudo o que precisou supor.

Faça o commit da correção com um comentário

Responda ao bot e ele atende o pedido. O apply grava as sugestões num único commit na branch e responde com o SHA curto desse commit. No GitLab, ele também resolve as threads cujas sugestões aplicou. No GitHub, se a branch andou depois da última análise do bot, ele se recusa a aplicar para não sobrescrever trabalho mais novo.

Comentário no pull request
@levelfourai apply all
@levelfourai apply aws_instance.batch
@levelfourai ignore AWS::EC2::Volume.Logs
@levelfourai snooze waiting for the load test
@levelfourai dismiss sized for the holiday peak

Quem pode comentar também pode rodar o help. Os comandos que mudam alguma coisa exigem acesso de escrita ao repositório no GitHub, ou o papel Developer ou superior no GitLab. dismiss e snooze pedem um motivo, e o comentário de custo mostra quem decidiu e por quê. Assim o próximo revisor vê a decisão.

Ajuste por repositório

Um arquivo .levelfour/config.yml na raiz do repositório, na branch padrão, desliga o bot, mantém o comentário de custo sem as sugestões inline, ignora caminhos e tipos de recurso ou liga um template de CloudFormation ao arquivo de parâmetros usado no deploy dele:

.levelfour/config.yml
code_suggestions_enabled: false
excluded_paths:
  - tests/fixtures/**
  - examples/**
excluded_resource_types:
  - aws_iam_role_policy_attachment
  - AWS::Logs::*
cloudformation:
  parameter_files:
    stacks/app.yaml: stacks/params/prod.json

O enabled: false desliga o bot, o max_code_suggestions limita as sugestões inline a um número entre 0 e 25, e o region_override fixa todas as estimativas numa região da AWS. O bot descarta o campo que não reconhece e avisa no fim do comentário dele, então um erro de digitação como enabld: false deixa o bot ligado.

Barre o pipeline pelo custo

A CLI l4 calcula o custo do mesmo Terraform e do mesmo CloudFormation no terminal ou num pipeline. Com --fail-above, o l4 estimate sai com código 2 quando o total mensal passa do limite que você definiu, e o pipeline pode decidir o que fazer com esse código antes de qualquer deploy. O l4 diff usa como critério o que a mudança acrescenta ao custo, em vez do total.

Terminal
l4 estimate --fail-above 500 -q ./infra/

Por padrão, o l4 diff compara com o merge-base do git em relação à main ou à master, então o job precisa do histórico completo do git: fetch-depth: 0 no GitHub Actions e GIT_DEPTH: 0 no GitLab CI. O guia de CI/CD traz os dois jobs completos.

Como começar

Conecte o GitHub ou o GitLab pelo dashboard da LevelFour, e o bot começa a trabalhar no próximo pull request que mexer em Terraform ou CloudFormation. No GitHub, quem instala o app da LevelFour é um Owner da organização. No GitLab, você precisa do papel Maintainer ou Owner em cada projeto, seja no GitLab.com ou numa instância self-managed. A checagem de custo em pull requests vem em todos os planos.

A documentação do bot de PR lista todos os comandos, e a referência de configuração traz todos os campos.

Comece com a LevelFour e veja o custo do seu próximo pull request antes do merge.

Perguntas frequentes

O Terraform tem estimativa de custo nativa?

A CLI do Terraform não tem comando de custo, e o OpenTofu também não. O HCP Terraform, nos planos Standard e Premium, e o Terraform Enterprise têm uma fase de estimativa de custo entre o plan e o apply. Fora deles, a estimativa vem de uma ferramenta como a LevelFour ou o Infracost.

Quão precisa é uma estimativa de custo do Terraform?

Tão precisa quanto os preços e o uso por trás dela. A estimativa usa o preço de lista de cada cloud numa região, então deixa de fora Savings Plans, Reserved Instances e descontos negociados, e os custos cobrados por uso, como requisições do Lambda ou transferência de dados, dependem do uso que você informar. Use a estimativa para o tamanho e a direção da mudança, e a fatura para confirmar.

Que tipo de Infrastructure as Code o bot de PR da LevelFour lê?

Terraform e CloudFormation, em pull requests do GitHub e merge requests do GitLab. No CloudFormation, ele lê templates em YAML e JSON, templates SAM e nested stacks cujo template está no repositório. O que é Shift-Left FinOps?.

Quem pode usar os comandos do bot?

Quem pode comentar pode rodar o help. dismiss, snooze, ignore e apply exigem acesso de escrita ao repositório no GitHub, ou o papel Developer ou superior no GitLab.

Como manter o comentário de custo sem as sugestões inline?

Defina code_suggestions_enabled como false no .levelfour/config.yml. O bot continua publicando o comentário de custo e o status.

Teste a LevelFour por 14 dias

Veja quanto ela economiza nas suas contas de cloud, SaaS e IA. Sem cartão de crédito.

Começar teste grátis

See what LevelFour can save you