← Workflows

阅读中文版本

Unused Resource Cleanup Workflow

Identify resources with no traffic or reference, verify dormancy with stakeholders, and delete with recovery windows rather than accumulating forever.

beginner~25 minenvironment-governancecosthygiene

Objective

Reclaim cost and attack surface by deleting provably unused resources, with dormancy evidence and a bounded recovery window.

Environment

  • Cloud inventory with usage metrics available
  • A tagging or ownership system for finding stakeholders
  • A deletion policy with recovery (snapshots, soft-delete)

Steps

1. Correlate usage across signals

For each candidate resource, correlate multiple dormancy signals: no traffic, no API references, no log activity, and no recent config changes.

Expected state: A dormancy score exists per resource built from multiple signals.

2. Find the owner or declare orphan

Locate the resource's owner through tags or history; if none responds within the window, mark it orphaned with the evidence attached.

Expected state: Every candidate has an owner response or an orphan declaration with evidence.

3. Verify dormancy with the owner

Ask the owner about seasonal or periodic use cases the metrics window might miss, extending observation where justified.

Expected state: Owners confirm dormancy or the resource exits the cleanup queue.

4. Delete with a recovery window

Snapshot or export state where feasible, then delete, keeping the recovery artifacts for a bounded window with a documented restore path.

Expected state: Deletions carry recovery artifacts with expiry dates.

5. Gate creation to slow re-accumulation

Require owner tags and expiry metadata at resource creation, so the next cleanup starts from a labeled estate rather than another archaeology project.

Expected state: New resources carry owners and expiries from day one.

Expected outcome

A shrinking unused-resource backlog with evidence-based deletion, recovery windows honored, and new resources born labeled to prevent re-accumulation.

Verification

Cost attribution shows the reclaimed spend; no deletion was urgently needed again within its recovery window; new resources carry owner and expiry tags.

Unused is a claim you verify, then delete

Every environment accumulates resources whose purpose died quietly: the test cluster for a cancelled project, the bucket from a two-year-old migration. Multi-signal dormancy, owner verification, and recovery-windowed deletion turn cleanup from risk into routine.

dormancy score (signals, 90d):
  traffic: 0 req   api refs: 0   logs: 0
  config changes: 0   cost: $211/mo

queue (scored):
  eks-test-cluster-3   dormant  owner: team-C
    -> confirmed cancelled project  DELETE
  s3-migration-2024    dormant  owner: NONE
    -> orphan declared (2wk notice)  DELETE
  rds-reporting-rep    low traffic (1 conn/d)
    owner: finance "month-end use"  KEEP

deletion w/ recovery:
  snapshot -> delete -> artifact kept 30d
  restore runbook attached to deletion ticket

creation gate: tag owner + expiry required
  (next cleanup: labeled estate, no archaeology)

One signal is never enough

Zero traffic can mean the resource is broken, not unused; zero API references can mean the caller uses a config-indirected name. Requiring several independent signals — traffic, references, logs, changes — makes the dormancy claim strong enough to act on.

The month-end database is why you ask

The resource with one connection a day looks dormant to a 90-day traffic chart but runs the financial close every month-end. Owner verification exists precisely for these patterns, and deleting one of them erases months of accumulated trust in the cleanup program.