Skip to main content
CostGraph reads your AWS spend from a FOCUS Data Export delivered to S3. Unlike Google Cloud, AWS exposes a full API for this, so the entire setup is automated - one CloudShell command (or a short Terraform module) creates the export and the read role.

What you enable

A single FOCUS 1.2 Data Export (FOCUS_1_2_AWS) written as Parquet to an S3 bucket. It carries billed and effective cost, usage, credits, and commitment (Savings Plans / Reserved Instances) columns in the normalized FOCUS schema. The connect dialog shows a one-line command. Open AWS CloudShell in the management (payer) account and run it:
CloudShell already carries your console credentials, so nothing is stored or pasted anywhere else. The script creates the read role (trusting CostGraph’s identity, locked to your external ID), the export bucket with public access blocked and encryption on, and the FOCUS 1.2 Data Export. It is idempotent - rerun it safely. It prints four values. Paste them into the connect form:
The external ID is issued by CostGraph and ties the role to your organization. It stops anyone else who learns your role ARN from assuming it. Never edit it out of the command.
Set COSTGRAPH_BUCKET to use an existing bucket, or COSTGRAPH_EXPORT_REGION if you are in a different partition (GovCloud, China).

Setup with Terraform

Prefer infrastructure as code? Apply the equivalent below instead of the script. The export is created in us-east-1 (where AWS billing data lives), so aws_bcmdataexports_export must be managed by an AWS provider configured for that region. If your root provider targets another region, add an aliased one and point the export at it.
First Parquet files land within about 24 hours.

Read access

CostGraph reads the export bucket with a cross-account role granting s3:GetObject and s3:ListBucket on the export prefix. The connect flow provides the exact trust policy and external ID.

Connect in CostGraph

  1. Open Integrations and choose Amazon Web Services.
  2. Run the CloudShell command shown there (or apply the Terraform above).
  3. Paste the ROLE_ARN, BUCKET, REGION, and PREFIX the script printed, then connect.
  4. CostGraph assumes the role, validates it can read the export, and starts the first sync.

What CostGraph does with it

  • Cost: FOCUS line items normalized to the same canonical model as every other provider, keeping billed and effective cost, credits, and commitment attribution.
  • Reconciliation: allocated plus unallocated cost is checked to equal the invoice per billing account per month.
  • Allocation: spend attributed by resource, tag, and account, with an explicit unallocated bucket for tax, shared, and commitment costs.