Skip to main content
discount · aws

EC2 Compute Savings Plan Opportunity

resource types
1
rule IDs covered
1
severity
low

What does ZopNight detect here?

Production EC2 instances running on-demand with at least 60 days of observed history, high uptime, and no existing reservation coverage qualify for a Compute Savings Plan recommendation. ZopNight prices the commitment off the real 1-year Compute SP rate times 730 hours, abstaining entirely when that rate is unavailable.

Signal and threshold

How ZopNight evaluates EC2 Compute Savings Plan Opportunity.
Field Value
Rule IDsRC-091
Categorydiscount
Severitylow
Metricnone — pure configuration read
Sourcesavings_plan.go

Which production instances clear the commitment gate

  • resource.Status: running
  • CUR-derived ReservationCoverage[uid] (Reservation/SavingsPlan) => skip (already committed)
  • tag: savings_plan=true
  • tag: ri_covered=true
  • metadata: lifecycle=spot / purchase_type=Spot => skip; Savings Plans do not cover Spot usage (issue #1657; shared isSpotLifecycle helper)
  • EvaluationContext TierRates (RI / SP1yrCompute / OnDemand) + measured uptime + CommitmentEligible: the saving and the eligibility gates are computed from these fires only on production-identified workloads (isProdName or isProdEnvTag), the exact complement of the scheduling rule (RC-093, which absorbed the retired RC-015), so commitment (always-on lever) and scheduling (non-prod lever) partition the fleet and never both fire on the same box. Then a Wave-7 commitment-discipline gate (CommitmentEligible: ≥60d observed history, high uptime, meaningful CPU/mem util) must pass before any 1-/3-yr lock-in is recommended.

Pricing off the Compute SP rate, not the RI rate

RC-091 recommends a Compute Savings Plan, so it prices the commitment off the SP-specific rate via CommitmentBreakEvenSP (TierRates.SP1yrCompute), not the Reserved-Instance rate. A Compute SP is its own pricing instrument, shallower than a Standard RI, and reusing the RI rate would systematically overstate the SP saving. CommitmentBreakEvenSP prices SP1yrCompute×730 and recommends only when that is less than the instance’s compute-only monthly basis (min(cost, OnDemand×730); on a bare EC2 the cost is the compute line, so the cap is ~inert, applied defensively per the RC-031 idiom), so savings = breakEvenBasis − SP×730 (a commitment costing more than today’s spend is rejected), then gated by an uptime-hysteresis suppressor. Abstains (returns nil) when the live SP rate is unavailable (SP1yrCompute absent/non-positive). This is the intended behaviour change: RC-091 no longer falls back to the RI rate, to DeriveSavingsPlanFraction, or to any flat fraction (the 0.20 fallback and savingsPlanNoRateSentinel are gone). A Savings-Plan saving is backed by a real SP rate or it emits nothing; the headline ~%d%% is derived from the real net applied.

Buying the Compute Savings Plan

  1. Review AWS Cost Explorer Savings Plans recommendations
  2. Identify consistent EC2/Fargate/Lambda spend over the last 30 days
  3. Purchase a Compute Savings Plan for the recommended hourly commitment
  4. Tag covered instances with savings_plan=true for tracking

See it fire on your bill.

Connect an account read-only. The first findings land in minutes.

417 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

417 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·