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

Source: https://levelfour.ai/pt-br/blog/custo-do-terraform-em-pull-requests

Updated: 2026-10-28

12 de agosto de 2026. Por [Gabriel Nielsen](https://www.linkedin.com/in/gabrielnielsen/), Co-founder and CPO.

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:

```bash
terraform plan -out=tfplan
terraform show -json tfplan > plan.json
```

O array [`resource_changes`](https://developer.hashicorp.com/terraform/internals/json-format) 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`](https://developer.hashicorp.com/terraform/cli/commands/plan).

Algumas ferramentas pulam o plan e leem os arquivos `.tf` direto. O [`l4 estimate`](https://docs.levelfour.ai/cli/commands/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](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/price-changes.html).
- 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](https://learn.microsoft.com/en-us/rest/api/cost-management/retail-prices/azure-retail-prices).
- 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](https://docs.cloud.google.com/billing/v1/how-tos/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](https://aws.amazon.com/lambda/pricing/) cobram por requisição e pelo tempo que o código roda, e o [Amazon S3](https://aws.amazon.com/s3/pricing/) 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](https://www.infracost.io/docs/features/usage_based_resources/).
- 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](https://levelfour.ai/blog/infracost-alternatives.md), em inglês, compara as ferramentas com mais detalhe.

| Ferramenta | Como estima | Onde a estimativa aparece | Indicada para |
| --- | --- | --- | --- |
| LevelFour | Calcula o custo do Terraform ou do CloudFormation que um pull request altera e sugere configurações mais baratas | Comentário, status e sugestões inline no GitHub e no GitLab; códigos de saída da CLI `l4` no CI | Times que querem a estimativa e a correção no mesmo review |
| Infracost | CLI open source para Terraform, Terragrunt, CloudFormation e outros, com um produto hospedado por cima | Comentários em pull requests no GitHub, no GitLab, no Azure Repos e no Bitbucket, e extensões para editores | Times que querem uma CLI open source em qualquer pipeline |
| HCP Terraform e Terraform Enterprise | Uma fase de estimativa entre o plan e o apply, para recursos na AWS, no Azure e no Google Cloud | A execução e as políticas Sentinel no modo legado | Times que rodam Terraform no HCP Terraform, nos planos Standard ou Premium, ou no Terraform Enterprise |
| env0, Spacelift e Scalr | O Infracost dentro das próprias execuções, ou o servidor de preços dele no Scalr, com a sua API key do Infracost | As execuções e os motores de política; o Spacelift também publica nos pull requests | Times que já fazem deploy por uma delas |
| Terracost | Uma biblioteca em Go que estima o custo do Terraform com preços de cloud carregados num MySQL | Onde você integrar | 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](https://www.infracost.io/pricing). Extensões para VS Code, IDEs da JetBrains e outros editores mostram a estimativa enquanto você escreve. [Extensões do Infracost para editores](https://www.infracost.io/docs/ai_editor_plugins/ide_extensions/).

### 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](https://developer.hashicorp.com/terraform/cloud-docs/overview). 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](https://developer.hashicorp.com/terraform/cloud-docs/workspaces/cost-estimation).

### 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](https://docs.envzero.com/guides/policies-governance/cost-estimation) estima Terraform, OpenTofu e Terragrunt. O [Spacelift](https://docs.spacelift.io/vendors/terraform/infracost) roda um breakdown do Infracost que dá feedback nos pull requests e alimenta as políticas de plan. O [Scalr](https://docs.scalr.io/docs/infracost) 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](https://github.com/cycloidio/terracost).

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

```text
@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:

```yaml
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`](https://docs.levelfour.ai/cli/commands/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`](https://docs.levelfour.ai/cli/commands/diff) usa como critério o que a mudança acrescenta ao custo, em vez do total.

```bash
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](https://docs.levelfour.ai/guides/ci-cd) traz os dois jobs completos.

## Como começar

Conecte o [GitHub](https://docs.levelfour.ai/integrations/github) ou o [GitLab](https://docs.levelfour.ai/integrations/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](https://docs.levelfour.ai/integrations/pull-request-bot) lista todos os comandos, e a [referência de configuração](https://docs.levelfour.ai/guides/pr-bot-configuration) traz todos os campos.

[Comece com a LevelFour](https://levelfour.ai/sign-up) 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?](https://levelfour.ai/glossary/shift-left-finops.md).

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

## See what LevelFour can save you

[Start free trial](https://levelfour.ai/sign-up) · [Get in touch](https://levelfour.cal.com/)

## About LevelFour

The FinOps platform that actually cuts costs. One system of record for Cloud, SaaS, and AI spend. LevelFour applies each saving, or your engineers merge it as code.

- **Cloud Savings**: 30% success fee on savings found and applied. No hidden charges, only pay on what you actually save.
- **Pro**: $30 per month · Up to $2,500 spend/mo
- **Scale**: $200 per month · Up to $7,500 spend/mo
- **Enterprise**: Custom · Unlimited spend

[Pricing](https://levelfour.ai/pricing.md) · [Guide for agents (llms.txt)](https://levelfour.ai/llms.txt) · [Documentation](https://docs.levelfour.ai) · MCP server: `https://mcp.levelfour.ai/mcp`
