Savings Report
Generated August 5, 2026
Estimated monthly savings
$2,821.37
All figures are estimates based on on-demand us-east-1 pricing.
Monthly savings identified per AWS service.
How much of the total is a setting change versus a project.
The differentiator: savings specific to AI/ML infrastructure (inference endpoints, model hosting, GPU allocation).
No AI/ML waste detected in this run.
Every finding from this run, ranked by estimated monthly savings.
| Est. $/mo | Finding | Category | Effort | Recommendation |
|---|---|---|---|---|
| $1,131.96 | Uncovered EC2 on-demand spend (555566667777) | commitments | Config change | Purchase a 1-year no-upfront Compute Savings Plan sized to the steady baseline (start at ~70% of the uncovered spend after actioning the idle/rightsizing findings above, then ratchet up). Compute SPs follow the workload across instance families, sizes, and regions, so they stay safe through migrations. |
| $510.00 | NAT gateway data-processing spend (555566667777) | network | Migration | Add gateway VPC endpoints for S3 and DynamoDB (free) and interface endpoints for other high-volume AWS services so that traffic stops paying the NAT per-GB toll. Check VPC Flow Logs for the top talkers before choosing endpoints. |
| $320.00 | Inter-AZ data transfer spend (555566667777) | network | Rearchitecture | Identify the chattiest cross-AZ flows (VPC Flow Logs / Cost Explorer usage-type drilldown), then co-locate tight client-server pairs in one AZ and enable topology/AZ-aware routing where the stack supports it. Keep multi-AZ for real failover paths -- this targets accidental cross-AZ chatter. |
| $175.20 | Idle RDS instance rds-staging-idle (db.r5.large, 0 connections) | database | Config change | Stop the instance (RDS restarts stopped instances after 7 days -- schedule the stop weekly, or snapshot and delete if the database is retired). Savings shown are instance hours only; storage keeps billing while stopped. |
| $146.00 | Idle EC2 instance i-reporting-idle (m4.xlarge, avg CPU 0.8%) | compute | Config change | Stop the instance (or terminate it if the workload is retired). If it is needed on a schedule, use an instance scheduler so it only bills during working hours. |
| $140.16 | Idle EC2 instance i-batch-idle (m5.xlarge, avg CPU 1.0%) | compute | Config change | Stop the instance (or terminate it if the workload is retired). If it is needed on a schedule, use an instance scheduler so it only bills during working hours. |
| $100.00 | Stale snapshot snap-dr-old (2000 GB, 500 days old) | storage | Config change | Delete after confirming no AMI or restore dependency references this snapshot. Consider a snapshot lifecycle policy (Amazon Data Lifecycle Manager) so old snapshots are pruned automatically going forward. |
| $82.80 | S3 bucket backup-archive-fileshares has no lifecycle policy (12,000 GB Standard) | storage | Config change | Add a lifecycle rule transitioning objects to S3 Intelligent-Tiering (safe default -- no retrieval fees, per-object monitoring only) or to Standard-IA after 30 days for known-cold data. Expire incomplete multipart uploads while you're in there. |
| $42.34 | Previous-generation EC2 instance i-erp-app01 (c4.2xlarge -> c5.2xlarge) | compute | Migration | Migrate to c5.2xlarge (same architecture, drop-in for most workloads). If the stack can run on ARM, the equivalent Graviton family is cheaper still -- worth testing after the x86 move. |
| $40.00 | Stale snapshot snap-migr-temp (800 GB, 300 days old) | storage | Config change | Delete after confirming no AMI or restore dependency references this snapshot. Consider a snapshot lifecycle policy (Amazon Data Lifecycle Manager) so old snapshots are pruned automatically going forward. |
| $40.00 | Unattached gp2 volume vol-orphan (400 GB) | storage | Config change | Snapshot for safety, then delete. If it must be retained, a snapshot costs a fraction of a provisioned volume. |
| $22.50 | Log group /ent/windows-events never expires (1,500 GB stored) | observability | Config change | Set a retention policy (30-90 days for application logs; export to S3 with a lifecycle rule first if compliance needs longer). Existing bytes past the new retention age out automatically. |
| $20.00 | gp2 volume vol-erp1 (1000 GB) -> gp3 | storage | Config change | Migrate to gp3 via ModifyVolume (online, no downtime). gp3 baseline is 3000 IOPS / 125 MBps; provision extra only if the workload exceeded gp2 burst performance. |
| $16.43 | Idle Application Load Balancer alb-intranet-old (0 requests) | network | Config change | Delete the load balancer after confirming no DNS records point at it. If it fronts an autoscaling group kept for failover, document that as an intentional exception rather than leaving it running unexplained. |
| $15.00 | gp2 volume vol-erp2 (750 GB) -> gp3 | storage | Config change | Migrate to gp3 via ModifyVolume (online, no downtime). gp3 baseline is 3000 IOPS / 125 MBps; provision extra only if the workload exceeded gp2 burst performance. |
| $11.68 | Previous-generation EC2 instance i-erp-app02 (m4.2xlarge -> m5.2xlarge) | compute | Migration | Migrate to m5.2xlarge (same architecture, drop-in for most workloads). If the stack can run on ARM, the equivalent Graviton family is cheaper still -- worth testing after the x86 move. |
| $3.65 | Unassociated Elastic IP 198.51.100.10 (eipalloc-legacy1) | network | Config change | Release the address if it is no longer needed, or associate it with an instance/ENI if it is being held deliberately. Check for DNS references to this IP first -- a released Elastic IP cannot be recovered. |
| $3.65 | Unassociated Elastic IP 198.51.100.11 (eipalloc-legacy2) | network | Config change | Release the address if it is no longer needed, or associate it with an instance/ENI if it is being held deliberately. Check for DNS references to this IP first -- a released Elastic IP cannot be recovered. |