Procedure6 min read

Enable AWS Data Exports

A careful setup path for CUR 2.0, including resource IDs, granularity, S3 delivery, and verification.

Put the detailed bill somewhere your team controls

CUR 2.0 delivers detailed cost and usage records to an S3 bucket you own. Create it from the payer or management account that matches the scope of the questions your team needs to answer.

The setup choices will shape later investigations

Time granularity, resource inclusion, file format, compression, overwrite behavior, and S3 location affect cost, query design, and what you can investigate later.

Set it up deliberately

  1. Open Billing and Cost Management → Data Exports.
  2. Create a standard export from the Cost and Usage Report 2.0 table.
  3. Choose hourly, daily, or monthly granularity from the question you expect to ask.
  4. Include resource IDs if resource attribution is required.
  5. Prefer Parquet for analytical queries; choose the S3 bucket and prefix deliberately.
  6. Review the generated bucket policy before creating the export.
AWS Data Exports time granularity configuration
Console labels change; verify the selected table and configuration before creation.

Do not promise an answer the same afternoon

AWS states that initial report delivery can take up to 24 hours. Resource IDs are not populated for every service. Tags must be activated as cost-allocation tags before they appear, and they do not backfill historically.

Keep the source, then analyze a copy

kulshan analyze cost /path/to/export.parquet
kulshan analyze ec2 /path/to/export.parquet

Keep the original export immutable and treat derived output as reproducible analysis.

Use the export, do not just collect it

Yuvdeep Singh builds Kulshan and runs AWS cost investigations from Mission, BC. These notes distinguish observation, estimate, and inference; check your own billing data, region, and architecture.

← Back to Thinking