Skip to main content

Get started

Infracost shows cloud cost estimates for Terraform. It lets DevOps, SRE and engineers see a cost breakdown and understand costs before making changes, either in the terminal or pull requests. This provides your team with a safety net as people can discuss costs as part of the workflow.

If you're upgrading from an older version, see the v0.10 migration guide.

1. Install Infracost

Get the latest Infracost release:

brew install infracost

infracost --version # Should show 0.10.9

To upgrade Infracost, run brew update then brew upgrade infracost.


2. Get API key

Register for a free API key, which is used by the CLI to retrieve prices from our Cloud Pricing API, e.g. get prices for instance types.

note
  • No cloud credentials or secrets are sent to the API and you can also self-host it.
  • Infracost does not make any changes to your Terraform state or cloud resources.
infracost auth login

The key can be retrieved with infracost configure get api_key.


3. Show cost estimate breakdown

Infracost parses the project locally to determine resource types and quantities needed to calculate costs. The --path flag can point to a Terraform directory or plan JSON file.

# You can also: git clone https://github.com/infracost/example-terraform
cd my-terraform-project
# Terraform variables can be set using --terraform-var-file or --terraform-var
infracost breakdown --path .

Example output:Infracost breakdown command

tip

Infracost can also estimate usage-based resources such as AWS S3 or Lambda


4. Show cost estimate diff

  1. Generate an Infracost JSON file as the baseline:
  2. infracost breakdown --path . --format json --out-file infracost-base.json
  3. Edit your Terraform project. If you're using our example project, try changing the instance type:
  4. vim main.tf
  5. Generate a diff by comparing the latest code change with the baseline:
  6. infracost diff --path . --compare-to infracost-base.json

Example output:Infracost diff command


5. Monitor cost estimates

  1. The following environment variable instructs the CLI to send its JSON output to Infracost Cloud. This is our SaaS product that can be used alongside our open source CLI and gives you visibility across all changes in a dashboard. It is specially useful for CI/CD integrations (next step).
  2. INFRACOST_ENABLE_CLOUD=true infracost diff \
    --path . --compare-to infracost-base.json
  3. Log in to Infracost Cloud to see the cost estimate:Infracost Cloud provides team visibility across all changes so you can see pull requests that increase/decrease costs the most.

6. Add to your CI/CD

Use our CI/CD integrations to add cost estimates to pull requests, it only takes 15 minutes. This provides your team with a safety net as people can understand cloud costs upfront, and discuss them as part of your workflow.

If you run into any issues, please join our community Slack channel, we'll help you very quickly 😄

Infracost pull request comment