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
- A CloudQuery Platform account with admin access
- An AWS account with access to AWS Billing and Cost Management
- For manual setup: AWS CLI installed and configured
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
- Navigate to Data Pipelines → Integrations in CloudQuery Platform.
- Click Create Integration and select AWS Cost and Usage.
- Choose your setup method: Automated setup or Manual setup.
Automated setup
Automated setup creates all required AWS resources through a CloudFormation stack.
-
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
-
In the AWS CloudFormation console, review the stack parameters and click Create stack.
-
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.
-
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:
| Table | Description |
|---|---|
awscur_reports_v2 | Line-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 5Troubleshooting
| Issue | Cause | Fix |
|---|---|---|
| CloudFormation stack fails | Insufficient permissions | Verify your AWS user has cloudformation:CreateStack, s3:CreateBucket, and iam:CreateRole permissions. Check the Events tab in the CloudFormation console. |
| No data after sync | CUR export not yet generated | AWS delivers CUR data within 24 hours of creating a new export. Wait for the first delivery, then re-run the sync. |
AccessDenied on S3 | Bucket policy mismatch | Verify 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 mismatch | Trust policy doesn’t match secret | Ensure the EXTERNAL_ID in the IAM trust policy matches the value entered in CloudQuery Platform exactly. |
| Legacy CUR format error | Not using CUR 2.0 Parquet | This integration requires CUR 2.0 with Parquet format. Create a new data export with the correct format. |
Next steps
- Set up a sync to schedule when your CUR data syncs
- Browse cost data in the SQL Console
- View synced resources in the Asset Inventory
- See the AWS CUR integration documentation for full configuration reference and table schema