Skip to main content
rightsizing · aws

S3 Intelligent-Tiering Not Enabled

resource types
1
rule IDs covered
1
severity
low

What does ZopNight detect here?

Intelligent-Tiering suits S3 buckets whose measured access rate stays below 1,000 requests per day, a cold tail worth demoting. ZopNight sums the per-class Standard-to-IA/IT rate delta times cold-class GB times 730 hours, net of the per-1,000-object monitoring fee, firing only on a positive delta; the old flat 0.30 fraction is removed.

Signal and threshold

How ZopNight evaluates S3 Intelligent-Tiering Not Enabled.
Field Value
Rule IDsRC-071
Categoryrightsizing
Severitylow
Metricnone — pure configuration read
Sources3_intelligent_tiering.go

Cold buckets not already on Intelligent-Tiering

  • metadata: intelligent_tiering (bool; s3.go): read via metadataBoolRaw as the suppression axis (a bucket already on Intelligent-Tiering is skipped). T0040 re-point: the prior intelligent_tiering=true Tag suppression read a key no producer wrote, so it never suppressed; it now reads the real Metadata flag. Firing still requires the measured low S3AccessRatePerDay activity axis.
  • metric: S3AccessRatePerDay; the rule now reads the authoritative activity axis (producer metrics/aws/s3_access.go::S3AccessRatePerDayMetric) and fires only when the measured daily access rate is below the actively-hot ceiling (1000 req/day; cold-object tail that IT can demote); a frequently-accessed bucket (IT only adds a monitoring fee) and a bucket with no Request-Metrics series both abstain (items PAP011/PAC004).
  • injected per-bucket Standard→IA/IT tier delta (SetS3TierDeltaSavings), wired end-to-end via the aggregator’s calcS3 (s3RetierDeltas, cost/calc_aws_storage.go), which sets CostOutput.S3StandardToITSavingsUSD from Metadata[“storageClasses”] × per-class pricing, net of the per-1000-object monitoring fee; threaded through ComputedCostEntry.S3StandardToITSavingsUSD → s3ITDeltaMap → SetS3TierDeltaSavings (recommender service.go). The rule fires when the delta is positive and abstains when it is absent or non-positive (e.g. no cold STANDARD-dominant capacity to demote).

Summing the per-class tier deltas

concrete-or-abstain (cost-driven rightsizing). savings = Σ over cold classes of (rate[STANDARD] − rate[target]) × classGB × 730, the per-class Standard→IA/IT per-GB rate delta applied to cold-class capacity (Metadata[“storageClasses”] × aggregator per-class rates), injected via SetS3TierDeltaSavings (clamped to cost). The prior hardcoded 0.30 flat-fraction is removed (mirrors RC-1325 azure/storage_tier.go). The delta producer (calcS3) is wired end-to-end, so the rule fires concretely when the net delta is positive and abstains otherwise. Never a fraction-of-bill phantom, never a $0 cost rec.

Adding an Intelligent-Tiering transition

  1. Go to S3 Console → Select bucket
  2. Management → Create lifecycle rule
  3. Add transition to Intelligent-Tiering class
  4. S3 Intelligent-Tiering automatically moves objects between tiers

Daily request rate as the activity axis

S3AccessRatePerDay (aggregator producer metrics/aws/s3_access.go:38/53, summed hourly AllRequests; MultiMetricsAware)

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·