Low Savings Plan Utilization
CostLens flags Savings Plan commitments that are sitting partly unused — committed hourly spend is being wasted on capacity you aren't consuming.
A Savings Plan bills its full hourly commitment whether or not you actually consume that much compute. Coverage tells you whether enough of your eligible spend is under a Savings Plan; utilization tells you whether the commitment you already made is being fully used. Low utilization means part of your committed hourly spend is going to waste every single hour.
Advisory only
This check can't be auto-fixed — the commitment is locked in until it expires. The available actions are to shift more eligible workloads onto it, or right-size your next commitment when this one renews.
How it works
CostLens measures your Savings Plan utilization
Queries AWS Cost Explorer's GetSavingsPlansUtilization for the previous full calendar month. Utilization is the percentage of your committed hourly spend that was actually matched against eligible usage.
Applies the utilization threshold
Accounts with utilization below 90% and at least $10/month of unused commitment are flagged. Accounts with no Savings Plan, or with negligible unused commitment under that threshold, are skipped entirely.
Estimates the waste
The finding's estimated savings is AWS's own UnusedCommitment for the period — the dollar amount of your hourly commitment that had no matching usage to apply to.
What to do
Step 1 — Understand why utilization is low
Common causes:
- Overall eligible usage (EC2, Fargate, Lambda) dropped below the committed hourly rate after the plan was purchased
- Workloads moved to an instance family, Region, or service not covered by this Savings Plan type
- The commitment was sized against a temporary usage peak that didn't hold
Step 2 — Shift more eligible spend onto it
Savings Plans apply automatically and broadly — a Compute Savings Plan covers any combination of EC2 (any family/size/Region/OS), Fargate, and Lambda. If utilization is low, check whether other eligible workloads could be consolidated onto accounts/Regions where the plan applies, since no manual "assignment" step exists — AWS applies it automatically to the highest-value matching usage first.
Step 3 — Fix the next commitment, not this one
The current plan can't be cancelled or resized. When it's due for renewal:
- Size the new commitment closer to your sustained, not peak, eligible spend.
- Prefer a shorter term or lower hourly commitment if usage has been trending down, to avoid repeating the same waste.
Step 4 — Re-check after usage stabilizes
CostLens re-measures utilization on every billing sync using a rolling calendar-month window, so the finding clears on its own once eligible usage rises to match the commitment.
Severity levels
Severity is based on the estimated monthly waste (UnusedCommitment), using the same scale as every other CostLens check:
| Severity | Estimated monthly savings |
|---|---|
| critical | >$500 |
| high | $100–$500 |
| medium | $20–$100 |
| low | <$20 |
Required IAM permissions
Included in the CostLens IAM policies from AWS Accounts:
ce:GetSavingsPlansUtilization
This is an account-level recommendation
Savings Plan utilization is measured across the entire AWS account, not per individual resource — AWS's utilization API reports one aggregate figure per account per period. The recommendation appears once per account rather than once per resource.