Skip to main content
discount · aws

Production ElastiCache caches paying on-demand with no Reserved Node

resource types
1
rule IDs covered
1
severity
low

What does ZopNight detect here?

ZopNight surfaces a 1-year ElastiCache Reserved Node purchase only for caches that look production, have at least 60 days of observed history with high uptime and utilization, are not already covered by a reservation or Savings Plan, and where the reserved rate times 730 hours beats current monthly spend.

Signal and threshold

How ZopNight evaluates Production ElastiCache caches paying on-demand with no Reserved Node.
Field Value
Rule IDsRC-107
Categorydiscount
Severitylow
Metricnone — pure configuration read
Sourceelasticache_reserved.go

“Production” is decided on two axes

A 1-year Reserved Node is an irreversible commitment, so misclassifying a scratch cluster is the expensive mistake. The rule reads two independent signals: the cache’s name and its environment tag. An explicit dev/test tag is an authoritative suppressor. It wins even when the name says “prod”. With no dev/test tag present, the cache must look production either by name or by a production environment tag before the rule will consider it at all. Ambiguous caches produce nothing.

The bar for recommending a lock-in

Looking production is necessary, not sufficient. The cache must also prove it is a commitment candidate: at least 60 days of observed history, high uptime across that window, and meaningful CPU and memory utilization drawn from the series ElastiCache publishes for each node. A cache that runs part-time should be scheduled instead, and an underutilized one should be rightsized. Locking either into a 1-year reservation just cements the waste. Caches already covered by a reservation or Savings Plan in the billing data are skipped outright, as is anything the discoverer already marked reserved.

Break-even math, not a discount table

The saving is computed as a real break-even. The Reserved Node is priced at its fixed full-month rate (the reserved hourly rate multiplied by 730 hours) and recommended only when that figure is lower than the cache’s actual, uptime-adjusted monthly cost. The saving is exactly the net difference, and the headline percentage is derived from that same net. There is no fallback: when live reserved-node rates are unavailable the rule abstains rather than applying the roughly 40% average discount AWS lists for 1-year partial-upfront reservations. A reservation that would cost more than today’s spend is rejected by the same arithmetic.

The full list of silent exits

No finding is produced for dev/test-tagged caches; caches that are neither production-named nor production-tagged; caches already under a commitment; caches with no resolved monthly cost; caches that fail the 60-day history, uptime or utilization bar; and caches where reserved rates are missing or the break-even does not clear.

Check your current reservations

Terminal window
aws elasticache describe-reserved-cache-nodes \
--query "ReservedCacheNodes[?State=='active'].[ReservedCacheNodeId,CacheNodeType,CacheNodeCount,StartTime]" \
--output table

Compare active node types and counts against your running clusters. Before buying, confirm the cache will still exist in 12+ months. The reservation bills for its full term whether the cluster survives or not, and it must match the node type it is meant to cover.

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·