Click an account to filter the whole report to it.
| Finding | Account | Resource | Env | Saving/mo | |
|---|---|---|---|---|---|
| 1 | Redshift Node Reduction | 222222222222 acme-data-platform |
analytics-wh ra3.xlplus x 8 · us-east-1 |
production | USD 3,171.12 |
| 2 | Right-Sizing Candidates | 333333333333 acme-ml-research |
ml-feature-store db.r6i.8xlarge · us-east-1 |
production | USD 1,762.95 |
| 3 | Aurora I/O-Optimized Evaluation | — | Aurora clusters (account level) all |
— | USD 1,362.59 |
| 4 | Reserved Instance Opportunities | 333333333333 acme-ml-research |
ml-feature-store r6i · us-east-1 |
— | USD 1,304.51* |
| 5 | Reserved Instance Opportunities | 222222222222 acme-data-platform |
dp-warehouse, dp-etl-primary, dp-metadata r5 · us-east-1 |
— | USD 1,078.21* |
| 6 | Redshift Pause Schedules | 666666666666 acme-dev-sandbox |
bi-dev-wh ra3.xlplus x 2 · us-east-1 |
dev | USD 1,019.29 |
| 7 | MemoryDB Right-Sizing | 111111111111 acme-prod-core |
session-store db.r6g.xlarge · us-east-1 |
production | USD 902.28 |
| 8 | Reserved Instance Opportunities | 111111111111 acme-prod-core |
core-orders-api, core-analytics, core-search +1 more r6g · us-east-1 |
— | USD 858.48* |
| 9 | Right-Sizing Candidates | 222222222222 acme-data-platform |
dp-warehouse db.r5.4xlarge · us-east-1 |
production | USD 832.20 |
| 10 | Right-Sizing Candidates | 111111111111 acme-prod-core |
core-analytics db.r6g.4xlarge · us-east-1 |
production | USD 773.80 |
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 333333333333 acme-ml-research |
ml-feature-store r6i · us-east-1 |
— | Buy size-flexible RIs covering 64.0 normalized units in family r6i (postgres, Single-AZ). Verify 90 days of steady usage before a 1-year commitment.
64.0 NU running · 0.0 covered · gap 64.0 NU |
USD 1,304.51* | high | low |
| 222222222222 acme-data-platform |
dp-warehouse, dp-etl-primary, dp-metadata r5 · us-east-1 |
— | Buy size-flexible RIs covering 56.0 normalized units in family r5 (postgres, Single-AZ). Verify 90 days of steady usage before a 1-year commitment.
56.0 NU running · 0.0 covered · gap 56.0 NU |
USD 1,078.21* | high | low |
| 111111111111 acme-prod-core |
core-orders-api, core-analytics, core-search +1 more r6g · us-east-1 |
— | Buy size-flexible RIs covering 48.0 normalized units in family r6g (postgres, Single-AZ). Verify 90 days of steady usage before a 1-year commitment.
64.0 NU running · 16.0 covered · gap 48.0 NU |
USD 858.48* | high | low |
| 888888888888 acme-legacy-lob |
lob-erp r5 · us-east-1 |
— | Buy size-flexible RIs covering 16.0 normalized units in family r5 (oracle-ee, Single-AZ). Verify 90 days of steady usage before a 1-year commitment.
16.0 NU running · 0.0 covered · gap 16.0 NU |
USD 648.24* | high | low |
| 111111111111 acme-prod-core |
core-payments r6g · us-east-1 |
— | Buy size-flexible RIs covering 16.0 normalized units in family r6g (postgres, Multi-AZ). Verify 90 days of steady usage before a 1-year commitment.
16.0 NU running · 0.0 covered · gap 16.0 NU |
USD 572.32* | high | low |
| 888888888888 acme-legacy-lob |
lob-crm, lob-finance m5 · us-east-1 |
— | Buy size-flexible RIs covering 20.0 normalized units in family m5 (mysql, Single-AZ). Verify 90 days of steady usage before a 1-year commitment.
20.0 NU running · 0.0 covered · gap 20.0 NU |
USD 230.68* | high | low |
| 444444444444 acme-staging |
stg-integration m6g · us-east-1 |
— | Buy size-flexible RIs covering 4.0 normalized units in family m6g (postgres, Multi-AZ). Verify 90 days of steady usage before a 1-year commitment.
4.0 NU running · 0.0 covered · gap 4.0 NU |
USD 83.95* | high | low |
| 333333333333 acme-ml-research |
ml-aurora-dev r6g · us-east-1 |
— | Buy size-flexible RIs covering 4.0 normalized units in family r6g (aurora-postgresql, Single-AZ). Verify 90 days of steady usage before a 1-year commitment.
4.0 NU running · 0.0 covered · gap 4.0 NU |
USD 76.65* | high | low |
| 777777777777 acme-marketing |
mkt-cdp, mkt-attribution r6g · us-east-1 |
— | Buy size-flexible RIs covering 4.0 normalized units in family r6g (mysql, Single-AZ). Verify 90 days of steady usage before a 1-year commitment.
12.0 NU running · 8.0 covered · gap 4.0 NU |
USD 71.54* | high | low |
| 777777777777 acme-marketing |
mkt-tracker t3 · us-east-1 |
— | Buy size-flexible RIs covering 4.0 normalized units in family t3 (postgres, Single-AZ). Verify 90 days of steady usage before a 1-year commitment.
4.0 NU running · 0.0 covered · gap 4.0 NU |
USD 36.50* | high | low |
* Reserved Instance purchases are a commitment decision that belongs to you: savings assume the workload keeps running for the full term, and only you have insight into future usage plans (migrations, re-platforming, decommissions). The scanner sees history, not roadmaps. Mechanics: groups running size-flexible instances by account, region, family, engine, and AZ config; subtracts active RI coverage in normalized units. Savings compare live public On-Demand rates against matching RI offering rates (upfront amortized) - the rate math is exact. Confidence reflects workload longevity: high when every instance in the group has run 6+ months, medium when younger. Instances too young to prove steady demand are excluded entirely.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 111111111111 acme-prod-core |
api-cache cache.r7g.large · us-east-1 |
production | Reserve 2x cache.r7g.large (redis). ElastiCache RIs match exact node types - re-check after any modernization moves land.
2 running · 0 covered · gap 2 x cache.r7g.large |
USD 96.36* | medium | low |
* Commitment decision belongs to the client (see Reserved Instance note). ElastiCache reserved nodes match exact node types with no size flexibility; clusters already flagged for deletion, right-sizing, or migration are excluded from sizing. Savings compare live On-Demand against the lowest matching offering, upfront amortized.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 222222222222 acme-data-platform |
reporting-wh ra3.xlplus x 4 · us-east-1 |
production | Reserve 2x ra3.xlplus nodes. Size the commitment after any pending resize or RA3 migration lands.
4 running · 2 covered · gap 2 x ra3.xlplus |
USD 534.36* | medium | low |
* Commitment decision belongs to the client (see Reserved Instance note). Exact node-type matching; clusters pending pause, resize, or RA3 migration are excluded. Savings compare live On-Demand against the lowest matching offering, upfront amortized.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 777777777777 acme-marketing |
api-search r6g.large.search x 2 · us-east-1 |
production | Reserve 2x r6g.large.search data nodes. Size after pending right-sizing or Graviton moves land.
2 running · 0 covered · gap 2 x r6g.large.search |
USD 90.52* | medium | low |
* Commitment decision belongs to the client (see Reserved Instance note). Exact instance-type matching; actioned domains excluded. Savings compare live On-Demand against the lowest matching offering.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| — | RDS Reserved Instances all |
— | RI utilization is 87.0% (640 purchased hours unused over the lookback). Re-match reservations to running instances or exchange/resell where the term allows.
87.0% utilization · 640 unused hours |
USD 188.50 | medium | low |
Purchased reservation hours going unused - usually family drift after migrations or scheduling of RI-covered instances. Re-match, exchange, or resell where the term allows.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 777777777777 | 2x db.r6g.large (mysql) db.r6g.large · us-east-1 |
— | Reservation expires in 44 days (2026-08-26). Decide now: renew, resize the commitment, or let it lapse deliberately.
ends 2026-08-26 (44d) |
TBD | high | medium |
Reservations ending inside the warning window. A lapsed RI silently reverts covered instances to On-Demand rates; renewal analysis should start now, not at expiry.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 333333333333 acme-ml-research |
ml-experiments db.r6i.2xlarge · us-east-1 |
dev | Stop 21:00-07:00 America/New_York plus weekends via AWS Instance Scheduler.
30/30 idle windows · 21:00-07:00 America/New_York |
USD 567.84 | high | low |
| 555555555555 acme-qa |
qa-perf db.r5.xlarge · us-east-1 |
qa | Stop 21:00-07:00 America/New_York plus weekends via AWS Instance Scheduler.
30/30 idle windows · 21:00-07:00 America/New_York |
USD 267.49 | high | low |
| 444444444444 acme-staging |
stg-batch db.m5.xlarge · us-east-1 |
staging | Stop 21:00-07:00 America/New_York plus weekends via AWS Instance Scheduler.
30/30 idle windows · 21:00-07:00 America/New_York |
USD 160.50 | high | low |
| 888888888888 acme-legacy-lob |
lob-reports db.m5.xlarge · us-east-1 |
production | Stop 21:00-07:00 America/New_York plus weekends via AWS Instance Scheduler. ⚠ No non-prod environment tag; confirm with owner before scheduling
30/30 idle windows · 21:00-07:00 America/New_York |
USD 160.50 | low | medium |
| 333333333333 acme-ml-research |
ml-notebooks db.m6g.xlarge · us-east-1 |
dev | Stop 21:00-07:00 America/New_York plus weekends via AWS Instance Scheduler.
30/30 idle windows · 21:00-07:00 America/New_York |
USD 145.48 | high | low |
| 444444444444 acme-staging |
stg-web db.m6g.xlarge · us-east-1 |
staging | Stop 21:00-07:00 America/New_York plus weekends via AWS Instance Scheduler.
30/30 idle windows · 21:00-07:00 America/New_York |
USD 145.48 | high | low |
| 666666666666 acme-dev-sandbox |
dev-shared db.t4g.xlarge · us-east-1 |
dev | Stop 21:00-07:00 America/New_York plus weekends via AWS Instance Scheduler.
30/30 idle windows · 21:00-07:00 America/New_York |
USD 142.66 | high | low |
| 555555555555 acme-qa |
qa-main db.m5.large · us-east-1 |
qa | Stop 21:00-07:00 America/New_York plus weekends via AWS Instance Scheduler.
30/30 idle windows · 21:00-07:00 America/New_York |
USD 80.25 | high | low |
| 666666666666 acme-dev-sandbox |
dev-legacy db.m5.large · us-east-1 |
— | Stop 21:00-07:00 America/New_York plus weekends via AWS Instance Scheduler. ⚠ No non-prod environment tag; confirm with owner before scheduling
30/30 idle windows · 21:00-07:00 America/New_York |
USD 80.25 | low | medium |
| 444444444444 acme-staging |
stg-orders db.m6g.large · us-east-1 |
staging | Stop 21:00-07:00 America/New_York plus weekends via AWS Instance Scheduler.
30/30 idle windows · 21:00-07:00 America/New_York |
USD 72.74 | high | low |
| 444444444444 acme-staging |
stg-payments db.m6g.large · us-east-1 |
staging | Stop 21:00-07:00 America/New_York plus weekends via AWS Instance Scheduler.
30/30 idle windows · 21:00-07:00 America/New_York |
USD 72.74 | high | low |
| 555555555555 acme-qa |
qa-automation db.t4g.large · us-east-1 |
qa | Stop 21:00-07:00 America/New_York plus weekends via AWS Instance Scheduler.
30/30 idle windows · 21:00-07:00 America/New_York |
USD 71.33 | high | low |
| 666666666666 acme-dev-sandbox |
dev-alpha db.t4g.medium · us-east-1 |
dev | Stop 21:00-07:00 America/New_York plus weekends via AWS Instance Scheduler.
30/30 idle windows · 21:00-07:00 America/New_York |
USD 35.67 | high | low |
| 666666666666 acme-dev-sandbox |
dev-beta db.t4g.medium · us-east-1 |
dev | Stop 21:00-07:00 America/New_York plus weekends via AWS Instance Scheduler.
30/30 idle windows · 21:00-07:00 America/New_York |
USD 35.67 | high | low |
An instance qualifies when it shows zero connections during the stop window on 95%+ of observed windows over the full lookback. Each row states its window in the region's business timezone (e.g. Asia/Kolkata for ap-south-1) - never assume UTC. Savings cover stopped compute hours only; storage and backups keep billing. RDS auto-starts instances stopped 7+ days; AWS Instance Scheduler handles that rotation.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 666666666666 acme-dev-sandbox |
docs-dev db.t3.medium · us-east-1 |
dev | All 2 cluster member(s) idle on 30/30 observed windows. Stop the cluster 21:00-07:00 America/New_York plus weekends.
30/30 idle windows · 21:00-07:00 America/New_York |
USD 73.40 | high | low |
DocumentDB clusters stop like RDS instances (auto-restart after 7 days; storage keeps billing). Window evaluated per member in the region's business timezone shown on each row.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 333333333333 acme-ml-research |
graph-dev db.r5.large · us-east-1 |
dev | All 1 cluster member(s) idle on 30/30 observed windows. Stop the cluster 21:00-07:00 America/New_York plus weekends.
30/30 idle windows · 21:00-07:00 America/New_York |
USD 163.31 | high | low |
Neptune clusters support stop/start with the same 7-day auto-restart. Window evaluated per member in the region's business timezone shown on each row.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 666666666666 acme-dev-sandbox |
bi-dev-wh ra3.xlplus x 2 · us-east-1 |
dev | Zero connections on 30/30 observed windows. Use Redshift's native pause schedule (pause 21:00, resume 07:00 America/New_York, paused weekends).
30/30 idle windows · 21:00-07:00 America/New_York · 2 nodes |
USD 1,019.29 | high | low |
Redshift's native pause/resume schedule stops per-hour compute billing during the stated stop window and weekends; managed storage continues. Each row states its window and timezone. Resume takes minutes - built for exactly these non-production warehouses.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 111111111111 acme-prod-core |
core-orders-replica db.r6g.xlarge · us-east-1 |
production | Read replica took zero connections across 720 observed hours. Delete it; recreate from the source in minutes if ever needed.
0 connections over 720 hours |
USD 386.90 | high | medium |
Read replicas with zero connections across the whole window serve no traffic. Deleting one saves its full compute and storage; recreating from the source later takes minutes.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 666666666666 acme-dev-sandbox |
dev-cache cache.r5.large · us-east-1 |
dev | Zero connections across 720 observed hours on 1 node(s). ElastiCache cannot be stopped - delete the cluster (snapshot first, Redis restores in minutes).
0 connections over 720 hours · 1 node(s) |
USD 157.68 | high | low |
Caches with zero connections across the whole window bill 24/7 and cannot be stopped. Redis/Valkey snapshot to S3 and restore in minutes; memcached holds no durable data. Delete after confirming ownership.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 666666666666 acme-dev-sandbox |
logs-dev r5.large.search x 2 · us-east-1 |
dev | Zero search and indexing traffic across the whole window. Take a manual snapshot to S3, then delete the domain.
0 search · 0 indexing all window |
USD 243.82 | high | low |
Domains with zero search and indexing traffic all window bill 24/7 and cannot be stopped. Snapshot to S3, delete, restore in under an hour if ever needed.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 666666666666 acme-dev-sandbox |
dev-tokens db.t4g.medium · us-east-1 |
dev | Zero connections across 720 observed hours on 2 node(s). Take a final snapshot and delete the cluster.
0 connections over 720 hours · 2 node(s) |
USD 112.57 | high | low |
MemoryDB is durable Redis: a final snapshot preserves the full dataset, and idle clusters bill every node 24/7. Delete after confirming ownership.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 888888888888 acme-legacy-lob |
legacy-migration dms.c5.xlarge · us-east-1 |
— | Replication instance has 1 task(s), none active. Export the task configurations and delete the instance; recreate in minutes if another migration comes.
1 task(s), none active |
USD 245.28 | high | low |
DMS replication instances bill 24/7 whether tasks run or not - the classic leftover from a finished one-time migration. Export task configurations, delete the instance, recreate in minutes when the next migration comes.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 666666666666 acme-dev-sandbox |
temp-migration PAY_PER_REQUEST · us-east-1 |
— | No reads or writes across the whole window. Export to S3 (or take an on-demand backup), then delete the table.
25.0 GB |
USD 6.25 | medium | medium |
No reads or writes across the whole window. Export to S3 or take an on-demand backup, then delete. Confirm no seasonal consumer first.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 222222222222 acme-data-platform |
user-profiles / email-index PROVISIONED · us-east-1 |
production | GSI 'email-index' served zero reads all window while replicating every table write. Confirm no consumer, then delete the index.
0 reads all window |
USD 113.88 | high | medium |
A GSI that serves no reads still replicates every table write and bills its own capacity and storage. Deleting is safe; recreating later is a background backfill.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 222222222222 acme-data-platform |
dp-old-migration db.m5.large · us-east-1 |
— | Stopped instance still bills 500 GB of storage every month. If nobody claims it, take a final snapshot and delete.
500 GB still billing |
USD 10.00 | low | medium |
Stopped instances keep billing storage, and RDS restarts them every 7 days. Long-stopped usually means forgotten: snapshot and delete after confirming ownership.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 333333333333 acme-ml-research |
ml-feature-store db.r6i.8xlarge · us-east-1 |
production | Downsize db.r6i.8xlarge to db.r6i.4xlarge in a maintenance window (same family keeps size-flexible RI coverage).
p95 CPU 12% · peak 25% · 60d data |
USD 1,762.95 | high | medium |
| 222222222222 acme-data-platform |
dp-warehouse db.r5.4xlarge · us-east-1 |
production | Downsize db.r5.4xlarge to db.r5.2xlarge in a maintenance window (same family keeps size-flexible RI coverage).
p95 CPU 13% · peak 24% · 60d data |
USD 832.20 | high | medium |
| 111111111111 acme-prod-core |
core-analytics db.r6g.4xlarge · us-east-1 |
production | Downsize db.r6g.4xlarge to db.r6g.2xlarge in a maintenance window (same family keeps size-flexible RI coverage).
p95 CPU 11% · peak 22% · 60d data |
USD 773.80 | high | medium |
Decision uses p95 of hourly CPU maxima over the lookback with a spike guard, plus verified memory headroom where instance RAM is known — never plain averages. Targets stay one size down in the same family, preserving size-flexible RI coverage. Execute in a maintenance window; expect a brief failover/restart.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 111111111111 acme-prod-core |
feature-cache cache.r6g.xlarge · us-east-1 |
production | Downsize cache.r6g.xlarge to cache.r6g.large across 1 node(s). Redis scales down online; memcached needs a replacement cluster.
p95 CPU 14% · memory 38% · target cache.r6g.large |
USD 153.30 | high | medium |
Decision uses p95 CPU (EngineCPUUtilization where the engine reports it) with a spike guard, plus memory usage where available. Redis scales down online; memcached needs a replacement cluster. Savings use live public node rates.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 222222222222 acme-data-platform |
analytics-wh ra3.xlplus x 8 · us-east-1 |
production | Elastic-resize from 8 to 4 nodes: p95 CPU 18% and disk 32% leave headroom even after halving. Resize completes online in minutes.
p95 CPU 18% · disk 32% · 8 to 4 nodes |
USD 3,171.12 | high | medium |
Elastic resize sheds nodes online in minutes. Recommended only when p95 CPU is low AND disk usage leaves room for each remaining node's share to double after halving.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 111111111111 acme-prod-core |
search-prod r6g.xlarge.search x 6 · us-east-1 |
production | Downsize r6g.xlarge.search to r6g.large.search across 6 data node(s). Blue/green deployment handles the change without downtime.
p95 CPU 14% · JVM 60% · target r6g.large.search |
USD 735.84 | high | medium |
p95 CPU with a spike guard plus verified JVM memory pressure headroom - heap-bound domains never shrink. Blue/green deployment applies the change without downtime.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 111111111111 acme-prod-core |
search-prod r6g.xlarge.search x 6 · us-east-1 |
production | 3x r6g.xlarge.search dedicated masters front only 6 data node(s). r6g.large.search masters are AWS's guidance at this scale.
3x r6g.xlarge.search · target r6g.large.search |
USD 367.92 | medium | low |
Dedicated masters coordinate cluster state; they serve no queries. AWS guidance sizes them by data-node count, and small domains need small masters.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 111111111111 acme-prod-core |
session-store db.r6g.xlarge · us-east-1 |
production | Downsize db.r6g.xlarge to db.r6g.large across 4 node(s); MemoryDB scales node type online per shard.
p95 CPU 15% · target db.r6g.large |
USD 902.28 | high | medium |
p95 engine CPU with a spike guard plus memory usage where reported. MemoryDB scales node type online per shard.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 111111111111 acme-prod-core |
orders-events PROVISIONED · us-east-1 |
production | Lower provisioned capacity to ~390 RCU / 260 WCU (p95 consumption + 130% headroom) and attach auto scaling.
17% utilized · 2000/1000 RCU/WCU → 390/260 |
USD 503.92 | high | low |
p95 of hourly consumed capacity against the provisioned floor. Targets are p95 plus headroom with auto scaling attached to absorb anything above.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 777777777777 acme-marketing |
clickstream PROVISIONED · us-east-1 |
production | Switch to on-demand: p95 consumption is 2% of provisioned capacity. On-demand bills actual requests only - right answer for this traffic shape.
to on-demand · 2% utilized |
USD 255.86 | high | low |
Provisioned tables running near-empty pay for capacity nobody uses; on-demand tables with steady heavy traffic pay a premium per request. Each row states the direction. One-click change, reversible once per 24h.
| Account | Resource | Env | Recommendation | Potential/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 222222222222 acme-data-platform |
dp-etl-primary db.r5.2xlarge · us-east-1 |
production | p95 CPU is only 14% but the window contains a 93% spike. Find and fix the spike source (batch job, missing index, backup overlap) before downsizing to db.r5.xlarge. Potential saving after the fix: ~USD 416.10/month.
p95 CPU 14% · peak 93% · 60d data |
USD 416.10 | high | medium |
These instances look oversized on p95 CPU, but at least one spike above the threshold occurred in the window. Downsizing now would amplify the spike on smaller hardware. Fix the cause first; each then becomes a normal right-sizing candidate at the stated potential saving.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 222222222222 acme-data-platform |
dp-metadata db.r5.xlarge · us-east-1 |
production | Move db.r5.xlarge to db.r7g.xlarge (Graviton). Same size, lower rate, typically better throughput; modify in a maintenance window.
target db.r7g.xlarge |
USD 67.16 | high | low |
| 777777777777 acme-marketing |
sess-cache-prod cache.r5.xlarge · us-east-1 |
production | Move cache.r5.xlarge to cache.r7g.xlarge across 2 node(s). Redis/Memcached run identically on Graviton; modify with a rolling replacement.
target cache.r7g.xlarge |
USD 52.56 | high | low |
| 888888888888 acme-legacy-lob |
lob-crm db.m5.2xlarge · us-east-1 |
production | Move db.m5.2xlarge to db.m7g.2xlarge (Graviton). Same size, lower rate, typically better throughput; modify in a maintenance window.
target db.m7g.2xlarge |
USD 32.85 | high | low |
| 888888888888 acme-legacy-lob |
legacy-mc cache.m4.large · us-east-1 |
production | Move cache.m4.large to cache.m6g.large across 3 node(s). Redis/Memcached run identically on Graviton; modify with a rolling replacement.
target cache.m6g.large |
USD 19.71 | high | low |
| 888888888888 acme-legacy-lob |
legacy-es m5.large.search x 3 · us-east-1 |
production | Move m5.large.search to m6g.large.search across 3 node(s). Blue/green deployment, no client changes.
target m6g.large.search |
USD 17.52 | high | low |
| 222222222222 acme-data-platform |
docs-prod-1 db.r5.large · us-east-1 |
production | Move db.r5.large to db.r6g.large (Graviton). In-place modify with a brief failover.
target db.r6g.large |
USD 13.14 | high | low |
| 222222222222 acme-data-platform |
docs-prod-2 db.r5.large · us-east-1 |
production | Move db.r5.large to db.r6g.large (Graviton). In-place modify with a brief failover.
target db.r6g.large |
USD 13.14 | high | low |
Same-size move from x86 to AWS Graviton, typically 10-20% cheaper with equal or better throughput. Managed engines need no application changes; execute as a normal class modification in a maintenance window. Instances already flagged for right-sizing are excluded here - do one class move, not two.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 888888888888 acme-legacy-lob |
lob-archive db.m4.xlarge · us-east-1 |
production | Upgrade previous-generation db.m4.xlarge to db.m6i.xlarge. Newer generation is cheaper per unit of performance and keeps current-gen availability.
target db.m6i.xlarge |
USD 42.34 | high | low |
Previous-generation instance classes cost more per unit of performance than current ones. Listed instances run engines without a Graviton path; the upgrade stays on x86.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 777777777777 acme-marketing |
mkt-tracker db.t3.large · us-east-1 |
production | postgres 11.22 is past standard support and bills the RDS Extended Support surcharge. Upgrade the engine major version to stop the charge.
engine version 11.22 |
USD 146.00 | high | medium |
| 888888888888 acme-legacy-lob |
lob-finance db.m5.large · us-east-1 |
production | mysql 5.7.44 is past standard support and bills the RDS Extended Support surcharge. Upgrade the engine major version to stop the charge.
engine version 5.7.44 |
USD 146.00 | high | medium |
| 888888888888 acme-legacy-lob |
legacy-es m5.large.search x 3 · us-east-1 |
production | elasticsearch 7.10 bills the OpenSearch extended-support uplift on every node-hour. Upgrade to a current OpenSearch version to stop the charge.
engine version 7.10 |
TBD | high | medium |
Engine versions past standard support bill the RDS Extended Support surcharge per vCPU-hour, and the rate doubles in year 3. Upgrading the engine removes the charge and restores full security patching. Estimates use the year-1/2 list rate.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 444444444444 acme-staging |
stg-integration db.m6g.large · us-east-1 |
staging | Convert Multi-AZ to Single-AZ: 'staging' environments rarely justify a hot standby. Halves the compute rate. | USD 113.15 | high | low |
Multi-AZ bills the standby at the full instance rate. Non-production environments that tolerate minutes of downtime rarely justify it; converting to Single-AZ halves compute cost.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 888888888888 acme-legacy-lob |
legacy-dw dc2.large x 4 · us-east-1 |
production | dc2.large is a previous-generation node. Evaluate RA3 with managed storage: compute and storage scale independently, which usually beats dc2.large economics and unblocks data sharing and cross-AZ features. | TBD | medium | medium |
Previous-generation node types couple compute to storage. RA3 with managed storage scales them independently and usually wins economically; sizing depends on the storage profile, so no automated saving is claimed.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 111111111111 acme-prod-core |
core-orders-api db.r6g.2xlarge · us-east-1 |
production | Convert 2,000 GB gp2 volume to gp3: lower per-GB rate and a free 3,000-IOPS baseline. Online change, no downtime. ⚠ gp2 baseline above 3,000 IOPS at 2,000 GB; verify IOPS needs before converting
2,000 GB gp2 |
USD 46.00 | high | low |
| 888888888888 acme-legacy-lob |
legacy-es m5.large.search x 3 · us-east-1 |
production | Convert 1,536 GB of gp2 EBS (across 3 data nodes) to gp3. Online change per node.
1,536 GB gp2 |
USD 41.47 | high | low |
| 222222222222 acme-data-platform |
dp-metadata db.r5.xlarge · us-east-1 |
production | Convert 1,500 GB gp2 volume to gp3: lower per-GB rate and a free 3,000-IOPS baseline. Online change, no downtime. ⚠ gp2 baseline above 3,000 IOPS at 1,500 GB; verify IOPS needs before converting
1,500 GB gp2 |
USD 34.50 | high | low |
| 555555555555 acme-qa |
qa-perf db.r5.xlarge · us-east-1 |
qa | Convert 500 GB gp2 volume to gp3: lower per-GB rate and a free 3,000-IOPS baseline. Online change, no downtime.
500 GB gp2 |
USD 11.50 | high | low |
gp3 costs ~20% less per GB than gp2 and includes a 3,000-IOPS baseline regardless of size. Conversion is online with no downtime. Savings use live per-GB rates for both volume types.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 111111111111 acme-prod-core |
core-ledger db.r6g.xlarge · us-east-1 |
production | Move io1 (8,000 provisioned IOPS, 800 GB) to gp3 with the same IOPS. Identical performance ceiling at this level, far cheaper IOPS.
8,000 provisioned IOPS · peak observed 2,900 |
USD 726.40 | high | low |
io1/io2 volumes provisioned at 16,000 IOPS or less fit inside gp3's range, where IOPS above the free baseline cost a fraction of provisioned-IOPS rates. Peak observed IOPS are shown as evidence that the ceiling is safe.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 888888888888 | 3 manual snapshots us-east-1 |
— | Review 3 manual snapshots older than 90 days or orphaned (source DB deleted). Keep what compliance requires, delete the rest.
2,600 GB old · 1,500 GB orphaned |
USD 247.00 | medium | medium |
| 222222222222 | 2 manual snapshots us-east-1 |
— | Review 2 manual snapshots older than 90 days or orphaned (source DB deleted). Keep what compliance requires, delete the rest.
1,300 GB old · 400 GB orphaned |
USD 123.50 | medium | medium |
Manual snapshots never expire on their own. Old and orphaned snapshots (source instance deleted) accumulate storage cost silently. Savings are approximate - snapshots bill on used, not allocated, bytes. Deletion is irreversible; check retention policy first.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 888888888888 acme-legacy-lob |
audit-archive PROVISIONED · us-east-1 |
production | Storage (800 GB) dominates this table's cost. Switch to the Standard-IA table class: ~60% cheaper storage.
800.0 GB |
USD 120.00 | medium | low |
Standard-IA cuts storage ~60% and raises request prices; recommended only where storage cost exceeds throughput cost.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 555555555555 acme-qa |
qa-fixtures PROVISIONED · us-east-1 |
qa | Point-in-time recovery is enabled on a 'qa' table. Non-prod data that can be regenerated rarely justifies continuous backup billing.
40.0 GB |
USD 8.00 | high | low |
Point-in-time recovery bills per GB-month continuously. Non-production data that can be regenerated rarely justifies it.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| — | Aurora clusters (account level) all |
— | Aurora I/O is 78% of Aurora spend (USD 1,800.00/mo). Evaluate switching clusters to I/O-Optimized: instances +30%, storage +125%, I/O free.
I/O is 78% of Aurora spend |
USD 1,362.59 | low | low |
Aurora I/O-Optimized trades +30% instance and +125% storage cost for free I/O. Worth it when I/O runs above ~25% of cluster spend. Account-level estimate; evaluate and switch per cluster.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 777777777777 acme-marketing |
mkt-tracker db.t3.large · us-east-1 |
production | Instance was charged 5,200 surplus CPU credits over the lookback: it runs beyond the T-family baseline permanently. Move to a fixed-performance class (m-family) or the surcharge continues indefinitely.
5,200 surplus credits charged |
TBD | medium | medium |
T-family instances charged surplus CPU credits run beyond baseline permanently - a hidden hourly surcharge. Fixed-performance classes usually cost less at sustained load.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 333333333333 acme-ml-research |
ml-aurora-dev db.r6g.large · us-east-1 |
dev | Non-prod Aurora instance with p95 CPU 12%: a candidate for Aurora Serverless v2, which scales to near zero between test runs instead of billing a fixed class.
p95 CPU 12% |
TBD | low | medium |
Spiky, mostly-idle non-production Aurora workloads fit Serverless v2, which scales capacity to near zero between runs. Model ACU consumption before converting.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| 888888888888 acme-legacy-lob |
lob-erp db.r5.2xlarge · us-east-1 |
production | oracle-ee on License Included: review whether Standard edition (SE2) covers the feature set, or whether existing enterprise agreements make BYOL cheaper.
oracle-ee · license-included |
TBD | low | medium |
Enterprise-edition license premiums often exceed infrastructure cost. Feature-usage review with the DBA team decides whether Standard edition or BYOL applies. Consultative - no automated saving claimed.
| Account | Resource | Env | Recommendation | Saving/mo | Confidence | Risk |
|---|---|---|---|---|---|---|
| — | Amazon Timestream all |
— | USD 840.00 over the lookback on a service the scanner does not deep-dive yet. Review memory-store retention (the expensive tier) versus magnetic-store retention per table; most estates keep far more in memory than queries touch.
840.00 in lookback |
TBD | low | low |
| — | Amazon Quantum Ledger Database all |
— | USD 310.00 on QLDB, which AWS has deprecated (end-of-support announced; no new features or new accounts). Plan the migration now - AWS's documented path is Aurora PostgreSQL with an audit table pattern. ⚠ Service deprecated by AWS - this is a migration deadline, not an optimization
310.00 in lookback |
TBD | high | high |
Services with real spend but no deep-dive analyzer yet: the figure marks the opportunity, the checklist starts the review. Deprecated services (QLDB) are migration deadlines, not optimizations.