EKS & ECS Cost Visibility via AWS Split Cost Allocation Data

CloudForecast’s container cost visibility leverages AWS Split Cost Allocation Data (SCAD) to provide per-deployment, per-namespace, per-service, and per-Kubernetes-label insights for EKS and ECS. This documentation explains how SCAD works, how CloudForecast interprets it, and how labels can be used to improve attribution and reporting.


☁️ What Is Split Cost Allocation Data?

AWS Split Cost Allocation Data breaks down the cost of shared compute resources—such as EC2 or Fargate—across individual containers (ECS tasks or EKS pods). This appears in the AWS Cost & Usage Report (CUR) in the column:

  • split_line_item_split_cost

This cost represents a proportional allocation of underlying cluster compute resources based on container usage.

What CloudForecast Surfaces

CloudForecast uses SCAD to enable cost visibility across:

  • ECS services and tasks
  • EKS namespaces, deployments, and workloads
  • Kubernetes labels, allowing teams to group costs according to existing workload taxonomy

How AWS Calculates Split Cost

AWS allocates shared cluster compute cost using proportional CPU and memory consumption:

  • Default weighting: 90% CPU / 10% Memory

This results in estimated usage-based cost, not a reflection of the actual billed amount.


Kubernetes Label Support

AWS includes Kubernetes label key/value pairs within the CUR when EKS label cost allocation tagging is enabled. CloudForecast reads these label fields directly from the CUR and makes them available for grouping and filtering.

Kubernetes workload labels allow teams to organize container costs around:

  • Team ownership
  • Services or microservices
  • Environments (prod/stage/dev)
  • Business units or product areas
  • Cost centers
  • Any custom labeling scheme used internally

Examples of Labels Commonly Used

  • kubernetes:team
  • kubernetes:service
  • kubernetes:service_role
  • kubernetes:environment
  • kubernetes:product

These labels provide a more stable and meaningful perspective on cost attribution than relying solely on namespace or deployment naming conventions.


📊 What You See in CloudForecast

AWS Costs

Source: line_item_unblended_cost or line_item_amortized_cost

  • Represents actual AWS billing data.
  • You can toggle between Unblended or Amortized modes.

EKS/ECS Cost (Split)

Source: split_line_item_split_cost

  • Represents estimated containerized workload cost based on CPU/Memory usage.
  • Always amortized by AWS.

Cluster, Service, and Label-Level Views

Using SCAD and metadata from AWS, CloudForecast supports breakdowns by:

  • Namespace
  • Deployment
  • ECS service
  • Kubernetes labels, enabling multi-dimensional and business-aligned cost attribution

This allows teams to view cost according to actual engineering ownership and organizational structure.


🔍 Understanding Gaps and Mismatches

It is expected that cost reported via SCAD will differ from AWS billing totals.

ConsiderationExplanation
Unused resources aren’t includedIdle CPU/memory is billed by AWS but is not allocated in split_cost.
Estimates vs. ActualsSplit cost is an allocation estimate—not a billing amount.
Not all services are splitSCAD applies only to ECS/EKS compute. Other AWS services remain separate.
Always amortizedAWS includes amortization from RI/SP commitments inside split_cost.
Totals rarely match AWS billsUnderutilization results in split costs being lower than billed totals.

🧪 Example Scenario

You run a single EC2 instance for EKS:

  • Actual AWS cost: $100/day (unblended_cost)
  • Two pods using 1 CPU + 9GB RAM each → total usage = 2 CPU / 18GB
  • Node capacity = 4 CPU / 36GB

AWS allocates 50% of the cost (based on usage):

  • Estimated container cost: ~$50/day (split_cost)

Reason for mismatch: AWS charges for the full instance, but unused capacity is not included in SCAD.


💡 Pro Tips for Interpreting Data

  • “AWS Cost” reflects actual spend.
  • “EKS/ECS Cost” reflects usage of shared compute.
  • SCAD should not be reconciled against AWS totals; rather, it highlights efficiency or underutilization.
  • Tools that show full cluster cost (e.g., CAST.ai) will differ from usage-based values in CloudForecast.
  • When using SCAD for showback/chargeback, avoid assigning idle costs directly to teams—allocate only what they consume.

❓ FAQs

Why doesn’t my EKS deployment cost match the AWS bill?
SCAD includes only used container capacity, not idle resources, so totals differ.

Can CloudForecast break down costs by cluster?
Yes, but totals won’t match AWS’s billed amount if there is unused capacity.

Is split cost accurate?
It is accurate according to AWS’s CPU/Memory allocation model—the best available without installing cluster agents.

Can I use this for showback/chargeback?
Yes, but pair usage-based attribution with additional context such as utilization and team SLOs.

Will Kubernetes labels appear automatically?
Yes—once the EKS Label cost allocation tag is enabled and AWS includes them in the CUR.


Setting up EKS/ECS Cost Visibility

To enable Split Cost Allocation Data for CloudForecast, there are three main steps to follow:

  1. Follow the steps provided in the AWS documentation to opt in to SCAD and turn on SCAD for a CUR 2.0 Data Export: https://docs.aws.amazon.com/cur/latest/userguide/enabling-split-cost-allocation-data.html
    • Important note: We only support SCAD w/ CUR 2.0 in Parquet format. This might require you to create a new CUR, as it’s not possible to turn on the feature for an existing CUR.
  2. Turn on all relevant EKS and ECS tags in the billing console
  3. Reach out to the CloudForecast team to enable the feature: [email protected]

If you have any questions or need help troubleshooting, feel free to reach out. We’re here to help.