Skip to Content

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)

Settings

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)

Settings

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:

  1. Format: The export must use GZIP compression with CSV format (not Parquet).
  2. S3 Bucket: The export must write to an S3 bucket in the same AWS account.
  3. CUR Version: The export must use CUR 2.0 format (legacy CUR is not supported).
  4. 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_REPORT

When 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)

Settings

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.


Settings

ScaleOps Setup

Helm Install

Install ScaleOps Helm Chart with the following values (reference):


cloudBillingIntegration: aws: enabled: true s3BucketName: scaleops-cur- s3Region: us-east-1 s3Prefix: cur-reports dataExportName: scaleops-cost-report roleName: <ROLE_NAME> accountID:

Verify CUR Integration

Navigate to Cloud Integration under the Settings page, and verify CUR is integrated successfully.


Settings

Reference

Parameters

KeyDescriptionDefault
enabledEnable integrationfalse
s3BucketNameName of the S3 bucket used for storing the CUR exports (from this step)""
s3RegionRegion of the S3 bucket used for storing the CUR exports (from this step)us-east-1
s3PrefixPath prefix of the CUR data in the S3 bucket (from this step)cur-reports
dataExportNameName of the Data Export which creates billing report in your bucket (from this step)scaleops-cost-report
roleNameName of the IAM role that grants ScaleOps read-only permissions to your S3 bucket (from this step)scaleops-cur-access-role
accountIDThe 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.yaml

Store 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 path

If you use this approach, do not include cloudBillingIntegration.aws values in your helm values file.