CloudBudgetMasterCloudBudgetMaster

← All articles

Strategy

Advanced Cloud Cost Optimization Strategy Teams Overlook

July 17, 2026·7 min read·CloudBudgetMaster

Why a strategic approach matters

Engineers, founders and platform teams often focus on low‑hanging fruit such as unused volumes or idle instances. Those wins are valuable, but they rarely move the needle on a mature bill that already runs in the low‑single‑digit percent range. At that point the next level of savings comes from aligning long‑term commitment contracts with actual usage patterns. A strategic, predictive Savings Plans program can shave 10‑30 % off compute spend without sacrificing performance, yet many organizations never adopt it because the workflow feels complex.

The overlooked tactic: Predictive Savings Plans based on Compute Optimizer

AWS Compute Optimizer continuously analyzes historical utilization of EC2, Lambda, and Fargate resources and produces recommendations for instance families, sizes, and Savings Plans. The hidden value is that you can export those recommendations, combine them with Cost Explorer data, and build a simple forecast that tells you exactly how much commitment to buy and for which instance families. The result is a data‑driven Savings Plans purchase that matches real demand rather than a guess.

Enable Compute Optimizer

  1. Open the Compute Optimizer console at https://console.aws.amazon.com/compute-optimizer/.
  2. Choose SettingsEnable for the services you want to analyze (EC2, Auto Scaling groups, Lambda, ECS/Fargate).
  3. Confirm that the IAM role ComputeOptimizerServiceRole exists; if not, click Create service linked role.

Export recommendations via CLI

aws compute-optimizer get-recommendations \
  --service ec2 \
  --account-ids 123456789012 \
  --region us-east-1 \
  --output json > ec2-recs.json

aws compute-optimizer get-recommendations \
  --service lambda \
  --account-ids 123456789012 \
  --region us-east-1 \
  --output json > lambda-recs.json

The JSON files contain UtilizationMetrics (CPU, Memory, Network) and a SavingsPlansRecommendation block with an estimated monthly savings percentage for each instance type.

Analyze utilization patterns

Use Cost Explorer to pull the last 90 days of usage for the same account:

aws ce get-cost-and-usage \
  --time-period Start=$(date -d '-90 days' +%Y-%m-%d),End=$(date +%Y-%m-%d) \
  --granularity DAILY \
  --metrics UsageQuantity UnblendedCost \
  --group-by Type=DIMENSION,Key=INSTANCE_TYPE \
  --output json > usage.json

Import ec2-recs.json and usage.json into a Jupyter notebook or any Python environment. For each instance family, calculate the average daily usage hours:

import json, pandas as pd
recs = json.load(open('ec2-recs.json'))['instanceRecommendations']
usage = pd.read_json('usage.json')
# Simplified example: sum usage hours per instance type
usage_summary = usage.groupby('InstanceType')['UsageQuantity'].sum()

The summary shows which families are consistently used and which have large idle windows.

Build a forecast model (simple steps)

  1. Identify candidate families – any family with >70 % CPU utilization on average and a Savings Plans recommendation >15 %.
  2. Project 12‑month usage – multiply the average daily hours by 365 and by the number of instances in that family.
  3. Determine commitment level – AWS offers 1‑year and 3‑year Standard Savings Plans. Choose the term that matches your budgeting horizon.
  4. Calculate expected spend – use the SavingsPlansRecommendation estimatedMonthlySavingsAmount field to estimate the dollar impact of each commitment.

Automate Savings Plan purchase with AWS CLI

Once you have a JSON payload with the desired commitment, run:

aws savingsplans create-savings-plan \
  --savings-plan-offering-id 0b1c2d3e-4567-89ab-cdef-0123456789ab \
  --commitment 5000 \
  --term 1yr \
  --payment-option PartialUpfront \
  --region us-east-1

Replace the offering ID with the one returned by aws savingsplans describe-savings-plans-offerings that matches your chosen instance family and term. You can script this entire flow to run monthly, ensuring the commitment stays in sync with actual usage.

Step‑by‑step implementation guide

Prerequisites

Step 1: Gather data

Run the two CLI commands shown earlier to download recommendations and usage data. Store them in a secure S3 bucket for auditability.

Step 2: Identify candidate workloads

In your notebook, filter the recommendation list:

candidates = [r for r in recs if r['utilizationMetrics'][0]['value'] > 70 and r['savingsPlansRecommendation']['estimatedMonthlySavingsPercentage'] > 15]

Print the instance families and projected savings.

Step 3: Calculate optimal commitment

For each candidate, compute the 12‑month projected usage hours and translate that into a dollar commitment using the pricePerUnit from the Savings Plans offering API.

offerings = boto3.client('savingsplans').describe_savings_plans_offerings(
    serviceCode='AmazonEC2',
    usageType='EC2Instance',
    termLength='ONE_YEAR',
    paymentOption='PartialUpfront'
)
# Match offering to instance family and extract pricePerUnit

Sum the dollar values to get the total commitment you should purchase.

Step 4: Purchase Savings Plans

Generate a JSON file purchase.json with the required fields and call aws savingsplans create-savings-plan for each offering. Verify the response contains a savingsPlanId.

Step 5: Verify and monitor

Create a CloudWatch dashboard that shows: - Actual Savingsaws ce get-savings-plans-utilization-details. - Commitment vs. Usage – a line chart of committed hours vs. consumed hours. - Anomaly alerts – trigger an EventBridge rule if utilization drops below 50 % of the committed amount for three consecutive days.

Comparison of Savings Plan selection methods

Method Setup effort Accuracy of commitment Flexibility Typical ROI
Manual purchase based on intuition Low Low – often over‑ or under‑commit High – you can change anytime 5‑10 %
Compute Optimizer guided purchase (this tactic) Medium – requires data export and script High – uses 90‑day utilization + forecast Medium – commitments are fixed for term 15‑30 %
Third‑party forecasting tool (e.g., CloudHealth, CloudZero) High – subscription and integration Very high – advanced ML models Low – most tools lock you into their recommendation cycle 20‑35 %

The table shows why the Predictive Savings Plans tactic sits in the sweet spot: it balances effort and ROI without adding a separate SaaS cost.

Common pitfalls and how to avoid them

Frequently asked questions

How often should I refresh the forecast?

Refresh the usage export and recompute the forecast at least once per quarter. Seasonal spikes are common, so a quarterly cadence captures most variance.

Can I combine Standard and Compute Savings Plans?

Yes. Standard plans cover any EC2 usage, while Compute plans apply only to the specific instance families you select. Mixing both lets you lock in the bulk of your steady workload with Standard plans and fine‑tune the remainder with Compute plans.

What if my actual usage exceeds the commitment?

AWS bills the excess at On‑Demand rates. That is why the forecast should include a safety buffer of 5‑10 % to avoid surprise overage charges.

Do I need elevated permissions to run the automation?

Only read‑only permissions for Cost Explorer and Compute Optimizer, plus savingsplans:CreateSavingsPlan. You can delegate the purchase step to a dedicated IAM role with limited scope.

Key takeaways

How CloudBudgetMaster helps

CloudBudgetMaster can scan your AWS account in read‑only mode today, surface idle and wasted resources, and report the dollar impact of each recommendation. GCP, Azure and Snowflake support are coming soon. Use our free AWS waste finder to get an instant view of obvious waste, then create a free account to start automating the predictive Savings Plans workflow described above.

Stop guessing where your AWS bill comes from

Upload a CSV, no signup. CloudBudgetMaster finds idle, unused, and overspending AWS resources automatically. GCP and Azure coming soon.

Run a free check