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:teamkubernetes:servicekubernetes:service_rolekubernetes:environmentkubernetes: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.
| Consideration | Explanation |
|---|---|
| Unused resources aren’t included | Idle CPU/memory is billed by AWS but is not allocated in split_cost. |
| Estimates vs. Actuals | Split cost is an allocation estimate—not a billing amount. |
| Not all services are split | SCAD applies only to ECS/EKS compute. Other AWS services remain separate. |
| Always amortized | AWS includes amortization from RI/SP commitments inside split_cost. |
| Totals rarely match AWS bills | Underutilization 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:
- 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.
- Turn on all relevant EKS and ECS tags in the billing console
- 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.