Advanced Setup Available in v1.15.7+
AWS CUR Setup
Sign in to AWS
Sign in to either management or scaleops installed account.
S3 Bucket
S3 bucket for storing the CUR exports, and bucket policy for allowing the Data Export to write reports to your bucket.
Launch CloudFormation (or Download Template / Preview)
Fill in the following parameters: s3BucketName (reference)

Data Export
Data Export periodically creates billing report in your bucket.
Launch CloudFormation (or Download Template / Preview)
Fill in the following parameters: dataExportName, s3BucketName, s3Prefix, s3Region (reference)

Data Exports can only be setup in the US East (N. Virginia) region.
Using an Existing Data Export
If you already have an existing AWS Data Export, you can use it instead of creating a new one. Ensure the export meets the following requirements:
- Format: The export must use GZIP compression with CSV format (not Parquet).
- S3 Bucket: The export must write to an S3 bucket in the same AWS account.
- CUR Version: The export must use CUR 2.0 format (legacy CUR is not supported).
- Columns: The export query must include the following columns:
SELECT
bill_payer_account_id,
line_item_availability_zone,
line_item_currency_code,
line_item_line_item_description,
line_item_line_item_type,
line_item_net_unblended_cost,
line_item_net_unblended_rate,
line_item_operation,
line_item_product_code,
line_item_resource_id,
line_item_unblended_cost,
line_item_unblended_rate,
line_item_usage_account_id,
line_item_usage_amount,
line_item_usage_end_date,
line_item_usage_start_date,
line_item_usage_type,
pricing_lease_contract_length,
pricing_offering_class,
pricing_public_on_demand_cost,
pricing_public_on_demand_rate,
pricing_purchase_option,
pricing_rate_code,
pricing_term,
product_instance_type,
product_product_family,
product_region_code,
product_servicecode,
product_sku,
reservation_amortized_upfront_cost_for_usage,
reservation_amortized_upfront_fee_for_billing_period,
reservation_availability_zone,
reservation_effective_cost,
reservation_end_time,
reservation_modification_status,
reservation_number_of_reservations,
reservation_recurring_fee_for_usage,
reservation_reservation_a_r_n,
reservation_start_time,
reservation_subscription_id,
reservation_upfront_value,
resource_tags,
savings_plan_amortized_upfront_commitment_for_billing_period,
savings_plan_end_time,
savings_plan_instance_type_family,
savings_plan_net_amortized_upfront_commitment_for_billing_period,
savings_plan_net_recurring_commitment_for_billing_period,
savings_plan_net_savings_plan_effective_cost,
savings_plan_offering_type,
savings_plan_payment_option,
savings_plan_purchase_term,
savings_plan_recurring_commitment_for_billing_period,
savings_plan_savings_plan_a_r_n,
savings_plan_savings_plan_effective_cost,
savings_plan_savings_plan_rate,
savings_plan_start_time,
savings_plan_total_commitment_to_date
FROM COST_AND_USAGE_REPORTWhen using an existing export, update the Helm values to match your export’s s3BucketName, s3Prefix, and dataExportName.
IAM Permissions
IAM role and policy granting ScaleOps read access to your CUR bucket.
Launch CloudFormation (or Download Template / Preview)
Fill in the following parameters: externalID, policyName, roleName, s3BucketName (reference)

The External ID is a unique, fixed value tied to your account. It is used to securely assume the read-only IAM role you create. The value can be found in Cloud Integration under the Settings page.

ScaleOps Setup
Helm Install
Install ScaleOps Helm Chart with the following values (reference):
cloudBillingIntegration:
aws:
enabled: true
s3BucketName: scaleops-cur-<ACCOUNT_ID>
s3Region: us-east-1
s3Prefix: cur-reports
dataExportName: scaleops-cost-report
roleName: <ROLE_NAME>
accountID: <ACCOUNT_ID>Verify CUR Integration
Navigate to Cloud Integration under the Settings page, and verify CUR is integrated successfully.

Reference
Parameters
| Key | Description | Default |
|---|---|---|
enabled | Enable integration | false |
s3BucketName | Name of the S3 bucket used for storing the CUR exports (from this step) | "" |
s3Region | Region of the S3 bucket used for storing the CUR exports (from this step) | us-east-1 |
s3Prefix | Path prefix of the CUR data in the S3 bucket (from this step) | cur-reports |
dataExportName | Name of the Data Export which creates billing report in your bucket (from this step) | scaleops-cost-report |
roleName | Name of the IAM role that grants ScaleOps read-only permissions to your S3 bucket (from this step) | scaleops-cur-access-role |
accountID | The AWS account ID that CUR was setup in | "" |
Using External Secret
Run helm template with correct values of the AWS billing integration to retrieve secret definition:
helm template ... --show-only templates/cur_settings_secret.yamlStore the secret data from the helm template output on your secret provider, and reference it using External Secrets:
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: scaleops-cloud-billing-settings
namespace: scaleops-system
spec:
secretStoreRef:
name: SECRET_STORE_NAME # Replace with your secret store name
kind: ClusterSecretStore # Replace with your secret store kind
target:
name: scaleops-cloud-billing-settings
template:
data:
settings: "{{ .aws_billing_config }}"
data:
- secretKey: aws_billing_config
remoteRef:
key: path/to/secret # Replace with your secret pathIf you use this approach, do not include cloudBillingIntegration.aws values in your helm values file.