Dev and test RDS databases paying for point-in-time recovery backup storage above the free allowance
What does ZopNight detect here?
ZopNight looks for dev and test RDS instances with a `BackupRetentionPeriod` above 0, which keeps point-in-time recovery on. The saving is the automated backup storage above the free allowance equal to allocated storage, and ZopNight needs a measured backup size for each database, so it stays silent until that measure exists or the saving tops $5.
Signal and threshold
| Field | Value |
|---|---|
| Rule IDs | RC-168 |
| Category | rightsizing |
| Severity | low |
| Metric | automated backup storage used |
| Threshold | retention > 0, billable backup GB > 0, saving >= $5 |
| Evaluation window | 30d |
| Source | ZopNight |
| Permissions used | rds:DescribeDBInstances · rds:DescribeDBInstanceAutomatedBackups |
Where it applies
Point-in-time recovery rides on automated backups
RDS lets you restore a DB instance to any point within the backup retention period, using automated backups plus transaction logs that it uploads to S3 every five minutes. That capability is on whenever retention is greater than 0. The storage it uses is free up to 100% of the Region’s total database storage, according to RDS pricing, and billed per GB beyond that.
For a busy test database that is rewritten daily, the changed data can push backup usage past the free allowance even when retention is short.
Seeing retention and restore windows
aws rds describe-db-instances \ --query 'DBInstances[?BackupRetentionPeriod > `0`].[DBInstanceIdentifier,BackupRetentionPeriod,AllocatedStorage,LatestRestorableTime]' \ --output table
aws rds describe-db-instance-automated-backups \ --query 'DBInstanceAutomatedBackups[].[DBInstanceIdentifier,BackupRetentionPeriod,AllocatedStorage]'The bill’s backup-usage line for the Region tells you whether you are above the allowance.
Requirements for a finding
- Point-in-time recovery is active: the retention period is greater than 0.
- The database is classified as dev or test, preferring its environment tag and falling back to its name. A production tag always blocks the finding.
- ZopNight knows the allocated storage, which is the free allowance for the database.
- A measured amount of automated backup storage is available and exceeds the allocated storage.
- The resulting monthly saving is at least $5.
Why most databases show nothing yet
CloudWatch has no per-database metric for total automated backup storage, and ZopNight does not yet collect that figure from another source. Without it there is nothing honest to price, so the rule raises no finding on any database until that measurement is available. It will not fall back to a percentage of the database bill, and it never shows a $0 recommendation.
Billable excess only
billable GB = max(0, automated backup GB - allocated storage GB)saving = billable GB x backup storage rate per GB-monthA database whose backups fit inside its allocated storage has no billable excess and no finding.
Reducing or removing point-in-time recovery
- Confirm nobody relies on restoring this database to an arbitrary recent time.
- Shorten retention to 1 day, which keeps a minimal recovery window:
aws rds modify-db-instance --db-instance-identifier qa-api-db --backup-retention-period 1 --apply-immediately - Take manual snapshots before risky test runs if you need a fixed restore point.