Skip to main content
rightsizing · aws

DynamoDB PITR Enabled on Non-Production Table

resource types
1
rule IDs covered
1
severity
low

What does ZopNight detect here?

DynamoDB tables with dev/test evidence (an environment tag or a name like dev, qa, or staging) running Point-in-Time Recovery pay a standalone PITR storage charge. ZopNight prices the reclaim as table-plus-LSI gigabytes times the regional PITR rate (about $0.20 in us-east-1) and abstains under the $5 floor.

Signal and threshold

How ZopNight evaluates DynamoDB PITR Enabled on Non-Production Table.
Field Value
Rule IDsRC-100
Categoryrightsizing
Severitylow
Metricnone — pure configuration read
Sourcedynamodb_pitr.go

Non-prod evidence and the PITR billable footprint

  • env tag (env/environment/stage/tier): a prod env tag is an authoritative veto; positive dev/test evidence, either a dev/test env tag OR a dev/test name (dev, test, qa, staging, sandbox), is required before recommending PITR disable (item T0064). The prior name-only classification (NAME_TAG_CLASSIFICATION) is now the no-env-tag fallback. Mirrors the eks_spot_nodepool/elasticache_multiaz classifier.
  • Metadata: pitr_enabled (bool, DynamoDB DescribeContinuousBackups, LIVE producer)
  • Metadata: pitrBillableSizeBytes (DescribeTable.TableSizeBytes + Σ LOCAL secondary-index IndexSizeBytes): the PITR-billable footprint, stamped by the discoverer only when LSIs add size; else tableSizeBytes (base table) / the populated SizeGB field. AWS bills PITR on table data + local secondary indexes (NOT global secondary indexes), and TableSizeBytes is base-table only, so LSI sizes are folded in, GSIs are deliberately excluded (no over-count).
  • SKU rate: dynamodb-pitr-storage (per-region GB-month PITR rate, injected via SetSKURates; declared via TargetSKUCandidates so service.go’s fetchSKURates pre-fetches it, since DynamoDB tables have no billable InstanceType)

Pricing PITR storage at the regional GB-month rate

real PITR backup-storage reclaim: savings = sizeGB × ingested per-region \dynamodb-pitr-storage\ GB-month rate, where sizeGB is the PITR-billable footprint (table + LSIs; GSIs excluded per AWS’s PITR billing basis) (~$0.20 us-east-1, region-specific in AWS’s own rate card; the standalone PITR line item, removed in full; CurrentCost = the PITR charge, OptimizedCost = 0). The reclaim is not a fraction of the table’s compute/storage bill. Abstains when the size basis is absent (size unknown), when the regional rate is not ingested (never a hardcoded constant), or when the reclaim is below the $5 floor, never a $0/advisory placeholder under the cost-driven category.

Disabling PITR and falling back to on-demand backups

  1. Verify this is a non-production table
  2. Go to DynamoDB Console → Select table → Backups
  3. Disable Point-in-Time Recovery for non-production
  4. Use on-demand backups instead if needed

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·