Skip to main content

Get started

Infracost enables a shift-left approach for cloud costs by providing cost estimates for Terraform before deployment. Additionally, it can check for FinOps best practices in accordance with the Well-Architected Frameworks of cloud vendors, and your company's required tag keys/values. This not only saves your team money but also streamlines discussions about costs within the engineering workflow rather than it being a post-deployment consideration.

1. Install Infracost

Get the latest Infracost release:

brew install infracost

infracost --version # Should show 0.10.30

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.

  • No cloud credentials or secrets are sent to the API.
  • 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 should point to your Terraform directory.

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

Example output:Infracost breakdown command


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
  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. See costs and best practices in dashboard

  1. The following command instructs the CLI to send its JSON output to Infracost Cloud. This is our SaaS product that builds on top of Infracost open source and works with CI/CD integrations (next step).

    It enables you to check for best practices such as using latest generation instance types or block storage, e.g. consider switching AWS gp2 volumes to gp3 as they are more performant and cheaper. Team leads, managers and FinOps practitioners can also setup tagging policies and guardrails to help guide the team.

  2. infracost upload --path infracost-base.json
  3. Log in to Infracost Cloud > Visibility > Repos page to see the cost estimate.
Infracost Cloud dashboard showing pull request costs over the last 30 days

6. Add to your CI/CD

Use our 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 and best practices 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

If you use VS Code, checkout our VS Code extension to also see cost estimates right in your editor!

Infracost VS Code extension