AWS Cost Optimization Audit

Client: Acme SaaS Inc. (Sample)  |  Date: February 23, 2026  |  Analyst: Vectis AWS Specialist

Executive Summary

$47,200 Annual Savings Identified
38% Potential Cost Reduction
12 High-Priority Optimizations

This audit analyzed AWS infrastructure spending $10,400/month across 3 production environments. We identified 27 optimization opportunities across EC2, RDS, S3, and Lambda services. Implementing the 12 high-priority recommendations alone would reduce monthly costs by $3,200 (31%), with no performance degradation.

Key Findings

1. EC2 Instance Right-Sizing

🔴 Over-provisioned Production Instances
$1,840/mo

Analysis of CloudWatch metrics (CPU, memory, network) over 30 days shows 8 EC2 instances running at <15% average utilization. These instances are 2-3 sizes larger than needed.

Current: 8× m5.2xlarge ($0.384/hr) = $2,217/mo
Recommended: 8× m5.large ($0.096/hr) = $554/mo
Savings: $1,663/mo + Reserved Instance discount ($177/mo) = $1,840/mo

# Step 1: Create AMI from current instance
aws ec2 create-image --instance-id i-0abc123 --name "prod-api-rightsized"

# Step 2: Launch m5.large from AMI
aws ec2 run-instances --image-id ami-xyz789 --instance-type m5.large --count 1

# Step 3: Test & swap traffic, terminate old instance
🟡 Idle Development Instances
$620/mo

5 development EC2 instances run 24/7 but are only used during business hours (9am-6pm EST, Mon-Fri). Implementing auto-start/stop schedules would save 76% of runtime costs.

Current runtime: 730 hrs/mo
Recommended runtime: 180 hrs/mo (business hours only)
Savings: $620/mo

# Use AWS Instance Scheduler or Lambda + EventBridge
# Start: Mon-Fri 8:50am EST | Stop: Mon-Fri 6:10pm EST

2. RDS Database Optimization

🔴 Unused Multi-AZ Deployment
$890/mo

Production RDS instance (db.r5.xlarge Multi-AZ) has 99.7% uptime requirement but is paying for Multi-AZ high availability (99.95% SLA). Analysis shows no failover events in 18 months. Single-AZ with automated backups meets availability target.

Current: db.r5.xlarge Multi-AZ = $1,094/mo
Recommended: db.r5.xlarge Single-AZ = $547/mo + $50/mo backups = $597/mo
Savings: $497/mo + Reserved Instance upgrade ($393/mo savings) = $890/mo

# Create final snapshot, restore to single-AZ, update DNS
aws rds create-db-snapshot --db-instance-identifier prod-db --db-snapshot-identifier final-multi-az
aws rds restore-db-instance-from-db-snapshot --db-instance-identifier prod-db-single ...

3. S3 Storage Lifecycle Management

🟡 Stale Data in Standard Tier
$340/mo

4.2 TB of S3 data (83% of total storage) hasn't been accessed in 90+ days but remains in Standard tier ($0.023/GB). Implementing lifecycle policies to transition to Glacier Flexible Retrieval after 90 days reduces storage costs by 87%.

Data breakdown:
• 0-30 days: 580 GB → keep in Standard
• 31-90 days: 340 GB → move to Intelligent-Tiering
• 90+ days: 4,200 GB → move to Glacier Flexible Retrieval
Savings: $340/mo

4. Additional Quick Wins

Optimization Impact Effort Savings
Delete unused EBS snapshots (120 orphaned) Medium Low (1 hour) $180/mo
Enable S3 Intelligent-Tiering for logs bucket Medium Low (30 min) $120/mo
Consolidate NAT Gateways (3→1 per AZ) Low Medium (4 hours) $90/mo
Switch CloudWatch Logs retention (indefinite→90 days) Low Low (1 hour) $65/mo
Enable Lambda tiered compilation for Java functions Low Low (2 hours) $35/mo

Implementation Roadmap

1

Week 1: Quick Wins (Low-Risk)

Delete orphaned snapshots, enable S3 lifecycle policies, adjust CloudWatch retention. Savings: $545/mo

2

Week 2: EC2 Right-Sizing (Staged)

Test m5.large in dev, then stage, then production. Implement dev instance schedules. Savings: $2,460/mo

3

Week 3: RDS Optimization

Migrate Multi-AZ to Single-AZ during maintenance window. Purchase 1-year Reserved Instances. Savings: $890/mo

4

Week 4: Review & Lock In

Validate savings, purchase EC2 Reserved Instances, set up cost alerts. Total realized: $3,895/mo (37% reduction)

Cost Monitoring & Alerts

To prevent cost drift, we recommend implementing:

Appendix: Analysis Methodology

Data Sources:

Tools Used: