Skip to main content
rightsizing · gcp

Standard-class buckets whose objects are almost never read

resource types
1
rule IDs covered
1
severity
low

What does ZopNight detect here?

Standard storage costs about $0.020 per GB-month while Nearline costs $0.010 in the same regions, a 50% delta. ZopNight recommends the move only when the measured access rate stays under 0.05 operations per day for 30 days. An uninstrumented bucket is never reclassed blind.

Signal and threshold

How ZopNight evaluates Standard-class buckets whose objects are almost never read.
Field Value
Rule IDsRC-1233
Categoryrightsizing
Severitylow
Metricnone — pure configuration read
Sourcebucket_nearline.go

One access every 20 days is the bar

The rule watches each Standard-class bucket’s average daily API-operation rate over 30 days and calls it cold below 0.05 operations per day, roughly one access every 20 days. That bar is deliberately severe, because Nearline punishes misclassification: it adds a per-GB retrieval fee and per-operation charges that erase the storage saving on any bucket that is actually read. A bucket at or above the bar is left on Standard without comment.

Half the storage rate, same bucket

Standard storage runs about $0.020 per GB-month against Nearline’s $0.010 (us-central1 reference pricing), so the recommendation applies a 50% delta to the bucket’s known monthly cost, a real cost because bucket capacity is backfilled from the measured total-bytes series rather than assumed. Three gates must all pass: the default class is recorded as STANDARD, the access-rate series exists and reads cold, and a positive cost is known. Miss any one and nothing is emitted; in particular, a bucket whose monitoring was never instrumented has an unknown access pattern and is never reclassed on that unknown.

Measure the access rate

Terminal window
curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://monitoring.googleapis.com/v3/projects/PROJECT_ID/timeSeries?filter=metric.type%3D%22storage.googleapis.com%2Fapi%2Frequest_count%22%20AND%20resource.labels.bucket_name%3D%22my-bucket%22&interval.startTime=$(date -u -v-30d +%Y-%m-%dT%H:%M:%SZ)&interval.endTime=$(date -u +%Y-%m-%dT%H:%M:%SZ)"

The series behind the rule is read with monitoring.timeSeries.list (roles/monitoring.viewer); the bucket’s own configuration comes from storage.buckets.get.

Default class changes affect new objects first

gcloud storage buckets update gs://my-bucket --default-storage-class=NEARLINE changes what class new objects land in. Existing objects keep their class until rewritten or moved by a lifecycle rule, so pair the default-class change with a transition rule if the bulk of the data is already there. Mind Nearline’s 30-day minimum storage duration: objects deleted or reclassed sooner still bill the full 30 days.

Quiet cases

Buckets already on Nearline, Coldline, or Archive; buckets whose storage class was never recorded; access at or above 0.05 ops/day; a missing access-rate series; or an unknown cost. Each abstains; the rule never converts an unmeasured bucket.

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·