Skip to main content
rightsizing · gcp

GCS buckets carrying no lifecycle rules at all

resource types
1
rule IDs covered
1
severity
low

What does ZopNight detect here?

Buckets with zero lifecycle rules never transition aging objects to Nearline or Coldline, so old data bills at Standard rates forever. ZopNight detects the missing policy from the bucket record but currently abstains from a dollar figure: GCP exposes no object-age metric, so the eligible bytes cannot be measured.

Signal and threshold

How ZopNight evaluates GCS buckets carrying no lifecycle rules at all.
Field Value
Rule IDsRC-140
Categoryrightsizing
Severitylow
Metricnone — pure configuration read
Sourcebucket_lifecycle.go

What a missing policy costs

Lifecycle rules are the only mechanism that moves objects between storage classes or deletes them on age without anyone remembering to. A bucket with none configured accumulates logs, build artifacts, and abandoned exports at Standard rates indefinitely. The classic shape is a CI bucket that has been appending for 3 years. The detection reads the bucket’s own configuration, stamped by the discoverer as lifecycle_policy_present=false from the live bucket record via storage.buckets.get (carried in roles/storage.admin in ZopNight’s catalog), and fires only when that flag is positively false; an unknown state is skipped.

Why this page shows no savings number

An age-based lifecycle saving is (bytes old enough to transition) × (rate difference). The second factor is known; the first has no producer. Cloud Monitoring’s storage/total_bytes breaks capacity down by storage class but carries no age axis, and GCP publishes no “bytes older than N days” metric at all. The two data sources that do know object ages (Storage Insights inventory reports and a raw object listing) require per-bucket export pipelines or pagination over potentially billions of objects. Rather than pretend every Standard byte is transition-eligible, or borrow the 50% figure that belongs to the separate cold-access reclass rule and double-count it, the rule abstains: it emits nothing until a real age split exists.

Inspect a bucket’s lifecycle config

Terminal window
gcloud storage buckets describe gs://my-bucket \
--format="default(lifecycle_config)"

A null result is exactly the state this rule flags. Adding a first policy, say transition to Nearline at 30 days and delete at 365, takes one gcloud storage buckets update --lifecycle-file call and applies to existing objects on their next age evaluation.

Distinct from the Nearline reclass rule

RC-1233 answers a different question: should this bucket’s default class change because measured access is cold? That rule prices a real Standard-to-Nearline delta from the whole bucket’s bill. This rule is about aging subsets of a bucket that stays hot at the front. Applying both figures to one bucket would count the same bytes twice, which is precisely why this one holds its number back.

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·