Skip to main content
discount · aws

EC2 RI Coverage Below 50%

resource types
1
rule IDs covered
1
severity
medium

What does ZopNight detect here?

EC2 fleets where production instances run below 50% Reserved Instance coverage leave commitment discounts unclaimed. ZopNight infers 0% coverage from a missing CUR reservation label, requires 60 days of history and high uptime, and prices savings as actual monthly cost minus the live 1-year RI rate times 730.

Signal and threshold

How ZopNight evaluates EC2 RI Coverage Below 50%.
Field Value
Rule IDsRC-1506
Categorydiscount
Severitymedium
Metricnone — pure configuration read
Sourceri_ec2_coverage.go

Reading coverage from billing, not the tag

  • resource.Status: running
  • Production classification: isProdEnvTag or prod-looking name; dev/test env tag is an authoritative veto
  • Coverage gate from the authoritative CUR-derived ReservationCoverage signal (EvaluationContext), not the phantom ri_coverage_pct tag. A Reservation/SavingsPlan label => already covered => abstain; absence of a label => no commitment => 0% coverage (the <50% gap this rule targets). Gating on the tag kept the rule permanently dead (P5, no producer). The ri_coverage_pct Tag is read only as a documented P5 last-resort to refine the displayed pct, never the firing gate.
  • EvaluationContext: per-UID pricing, CommitmentEligible, SuppressCommitmentForUptime, live RI TierRates (CommitmentBreakEven)

The 50% coverage threshold

Terminal window
riEC2CoverageThreshold=50

Break-even net for closing the coverage gap

concrete-or-abstain (discount/commitment). Savings = the real break-even net, nothing else: CommitmentBreakEven prices the RI at the published 1-year No Upfront rate times 730 hours and recommends only when that is less than the resource’s actual current monthly cost, so savings = currentCost − RI×730 (positive by construction), headline % from that live net. Abstains when break-even inputs are unavailable (live RI tier rates absent/non-positive); the prior cost × DeriveCommitmentFraction(tiers, 0.40) flat-fraction fallback is dropped (byte-pattern-identical to the sibling RC-014 fix). commitmentFallbackFraction is no longer applied. Gated by CommitmentEligible (≥60d history, high uptime, utilization) and long-off uptime suppression.

Choosing 1-year versus 3-year RIs

  1. Review EC2 RI recommendations in AWS Cost Explorer
  2. Evaluate 1-year vs 3-year commitment based on workload stability
  3. Consider Convertible RIs for flexibility
  4. Purchase RIs matching the instance family and region

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·