Skip to Content

Setting up an AWS Cost and Usage Integration

The AWS Cost and Usage Report (CUR) integration syncs CUR 2.0 Parquet data from S3 into your destination.

Prerequisites

This integration supports CUR 2.0 with Parquet format only. Legacy CUR format is not supported. If you have an existing legacy CUR, you need to create a new CUR 2.0 data export.

The initial sync may take significant time depending on the volume of your cost and usage data. Subsequent syncs are incremental and faster.

CloudQuery Platform offers two setup methods:

  • Automated setup — CloudQuery provisions an S3 bucket, CUR 2.0 Parquet export, and a scoped read-only IAM role in your AWS account via CloudFormation.
  • Manual setup — You provide access to an existing CUR 2.0 Parquet export by creating a cross-account IAM role yourself.

Creating the integration

  1. Navigate to Data PipelinesIntegrations in CloudQuery Platform.
  2. Click Create Integration and select AWS Cost and Usage.
  3. Choose your setup method: Automated setup or Manual setup.

Automated setup

Automated setup creates all required AWS resources through a CloudFormation stack.

  1. Click Open AWS Console. This opens the AWS CloudFormation console with a pre-configured stack that creates:

    • An S3 bucket for CUR data
    • A CUR 2.0 Parquet export configuration
    • A scoped read-only IAM role that grants CloudQuery access to the bucket
  2. In the AWS CloudFormation console, review the stack parameters and click Create stack.

  3. Return to CloudQuery Platform. The setup screen polls for progress and shows the current status:

    • Setting up — Waiting for the CloudFormation stack to be applied.
    • Finalizing setup — Stack applied. CloudQuery is validating access and finalizing configuration.
    • Setup complete — CloudQuery populates the Role ARN and report name automatically.
  4. Click Test Connection to verify access.

If setup fails, click Reset to start over. Check the CloudFormation stack events in the AWS CloudFormation console for error details.

What gets synced

The AWS CUR integration syncs a single table:

TableDescription
awscur_reports_v2Line-item cost and usage data from your CUR 2.0 Parquet export, including service, usage type, pricing, and resource tags

Each row represents a line item from your cost report. See the AWS CUR table documentation for the full schema.

Verify the integration

After your first sync completes, open the SQL Console and run these queries to confirm cost data arrived:

-- Count synced cost records SELECT count(*) FROM awscur_reports_v2
-- Preview cost data SELECT * FROM awscur_reports_v2 LIMIT 5

Troubleshooting

IssueCauseFix
CloudFormation stack failsInsufficient permissionsVerify your AWS user has cloudformation:CreateStack, s3:CreateBucket, and iam:CreateRole permissions. Check the Events tab in the CloudFormation console.
No data after syncCUR export not yet generatedAWS delivers CUR data within 24 hours of creating a new export. Wait for the first delivery, then re-run the sync.
AccessDenied on S3Bucket policy mismatchVerify the S3 bucket name in the IAM policy matches the actual bucket. Check that both s3:ListBucket (on the bucket) and s3:GetObject (on bucket contents) are granted.
External ID mismatchTrust policy doesn’t match secretEnsure the EXTERNAL_ID in the IAM trust policy matches the value entered in CloudQuery Platform exactly.
Legacy CUR format errorNot using CUR 2.0 ParquetThis integration requires CUR 2.0 with Parquet format. Create a new data export with the correct format.

Next steps

Last updated on