Savings Report

Sample report — lift-and-shift enterprise

Generated August 5, 2026

Estimated monthly savings

$2,821.37

All figures are estimates based on on-demand us-east-1 pricing.

Where the savings are

No AI/ML waste detectedFinOps baseline $2,821.37 · 100%

By service

Monthly savings identified per AWS service.

EC2$2,524.44
RDS$175.20
S3$82.80
CloudWatch Logs$22.50
Load balancing$16.43

By work required

How much of the total is a setting change versus a project.

Config change$1,937.35
Migration$564.02
Rearchitecture$320.00

AI & MLSubtotal: $0.00/mo

The differentiator: savings specific to AI/ML infrastructure (inference endpoints, model hosting, GPU allocation).

No AI/ML waste detected in this run.

All findings

Every finding from this run, ranked by estimated monthly savings.

Est. $/moFindingCategoryEffortRecommendation
$1,131.96Uncovered EC2 on-demand spend (555566667777)commitmentsConfig changePurchase 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.00NAT gateway data-processing spend (555566667777)networkMigrationAdd 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.00Inter-AZ data transfer spend (555566667777)networkRearchitectureIdentify 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.20Idle RDS instance rds-staging-idle (db.r5.large, 0 connections)databaseConfig changeStop 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.00Idle EC2 instance i-reporting-idle (m4.xlarge, avg CPU 0.8%)computeConfig changeStop 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.16Idle EC2 instance i-batch-idle (m5.xlarge, avg CPU 1.0%)computeConfig changeStop 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.00Stale snapshot snap-dr-old (2000 GB, 500 days old)storageConfig changeDelete 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.80S3 bucket backup-archive-fileshares has no lifecycle policy (12,000 GB Standard)storageConfig changeAdd 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.34Previous-generation EC2 instance i-erp-app01 (c4.2xlarge -> c5.2xlarge)computeMigrationMigrate 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.00Stale snapshot snap-migr-temp (800 GB, 300 days old)storageConfig changeDelete 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.00Unattached gp2 volume vol-orphan (400 GB)storageConfig changeSnapshot for safety, then delete. If it must be retained, a snapshot costs a fraction of a provisioned volume.
$22.50Log group /ent/windows-events never expires (1,500 GB stored)observabilityConfig changeSet 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.00gp2 volume vol-erp1 (1000 GB) -> gp3storageConfig changeMigrate 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.43Idle Application Load Balancer alb-intranet-old (0 requests)networkConfig changeDelete 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.00gp2 volume vol-erp2 (750 GB) -> gp3storageConfig changeMigrate 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.68Previous-generation EC2 instance i-erp-app02 (m4.2xlarge -> m5.2xlarge)computeMigrationMigrate 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.65Unassociated Elastic IP 198.51.100.10 (eipalloc-legacy1)networkConfig changeRelease 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.65Unassociated Elastic IP 198.51.100.11 (eipalloc-legacy2)networkConfig changeRelease 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.