Last updated: May 15, 2025
Reading time: 12 minutes
Level: Intermediate to Advanced


Introduction

I’ve audited over 50 AWS environments in the past three years, and I see the same pattern: companies overpaying by 40-70% for their cloud infrastructure. Not because AWS is expensive, but because of easily fixable configuration mistakes.

The worst part? Most teams don’t realize they’re overspending until they get a shocking monthly bill. By then, they’ve already wasted thousands of dollars.

In this guide, I’ll share 10 proven techniques that have saved my clients hundreds of thousands of dollars. These aren’t theoretical tips—these are battle-tested strategies I use in production environments every day.


Technique #1: Right-Sizing EC2 Instances

The Problem: Teams launch EC2 instances “to be safe,” using t3.xlarge when t3.medium would work perfectly. I’ve seen production servers running at 5-10% CPU utilization on instances costing $120/month.

How to Right-Size

  1. Use AWS Compute Optimizer (free tool)
aws compute-optimizer get-ec2-instance-recommendations \
  --region us-east-1
  1. Check CloudWatch metrics: Look at CPU, Memory, Network over 30 days
  2. Test in staging first: Never resize production without testing

Real Example:
Client had 20 t3.xlarge instances ($120/month each = $2,400/month).
Average utilization: 15% CPU, 30% memory.
Solution: Downsized to t3.large ($60/month each = $1,200/month).
Annual savings: $14,400


Technique #2: Reserved Instances and Savings Plans

If you’re running instances 24/7, On-Demand pricing is leaving money on the table. Reserved Instances (RIs) and Savings Plans offer 30-70% discounts for commitment.

When to Use What

  • Reserved Instances: Specific instance type/region (highest discount, least flexible)
  • Compute Savings Plans: Any EC2 instance type/region (good flexibility)
  • EC2 Instance Savings Plans: Specific instance family, any size (balanced)

Strategy

  1. Identify instances running >80% of the time
  2. Start with 1-year, no upfront (test the waters)
  3. Use Cost Explorer’s RI recommendations
  4. Cover 60-70% of baseline usage (leave room for growth)

Real Example:
E-commerce client: $8,000/month on On-Demand EC2
Solution: Purchased 1-year Compute Savings Plan covering $5,000/month
Discount: 40% = $2,000/month savings
Annual savings: $24,000


Technique #3: S3 Storage Classes and Lifecycle Policies

S3 Standard costs $0.023/GB. S3 Glacier Deep Archive costs $0.00099/GB. That’s a 95% discount for data you rarely access.

Storage Class Decision Tree

  • S3 Standard: Frequently accessed (multiple times/month)
  • S3 Standard-IA: Accessed 1-2 times/month (50% cheaper)
  • S3 Glacier Instant Retrieval: Accessed quarterly (68% cheaper)
  • S3 Glacier Flexible Retrieval: Accessed once/year (77% cheaper)
  • S3 Glacier Deep Archive: Archival/compliance (95% cheaper)

Implement Lifecycle Policies

{
  "Rules": [{
    "Id": "Archive old logs",
    "Status": "Enabled",
    "Transitions": [
      {
        "Days": 30,
        "StorageClass": "STANDARD_IA"
      },
      {
        "Days": 90,
        "StorageClass": "GLACIER_IR"
      },
      {
        "Days": 365,
        "StorageClass": "DEEP_ARCHIVE"
      }
    ]
  }]
}

Real Example:
SaaS company: 50TB of logs in S3 Standard ($1,150/month)
Solution: Lifecycle policy moving logs >30 days to Glacier
Average: 40TB in Glacier ($40/month), 10TB in Standard ($230/month)
New cost: $270/month | Savings: $880/month = $10,560/year


Technique #4: Lambda vs Long-Running EC2

Running EC2 instances 24/7 for infrequent tasks is expensive. Lambda is perfect for sporadic workloads.

Cost Comparison Example

Scenario: Nightly data processing job (runs 30 minutes/day)

Option 1: t3.medium EC2 (24/7)
Cost: $30/month
Utilization: 2% (30 min / 1440 min per day)

Option 2: Lambda
Runtime: 30 min/day × 30 days = 15 hours/month
Cost: ~$3/month
Savings: $27/month = $324/year

When to Use Lambda:

  • Workload runs <6 hours/day
  • Can complete in <15 minutes
  • Memory requirements <10GB
  • Doesn’t need persistent connections

Technique #5: RDS Reserved Instances

RDS On-Demand is even more expensive than EC2. RDS Reserved Instances offer up to 69% discount.

Example:
db.r5.xlarge On-Demand: $520/month
db.r5.xlarge 1-year RI (partial upfront): $310/month
Savings: $210/month = $2,520/year

Pro Tip: For production databases running 24/7, always use RIs. Start with 1-year to test, then move to 3-year for maximum savings.


Technique #6: Remove Unused Resources

This is the easiest savings—deleting resources you’re not using. I call these “zombie resources.”

Common Zombie Resources

  • Unattached EBS volumes: $0.10/GB-month adds up fast
  • Old EBS snapshots: $0.05/GB-month for data you’ll never restore
  • Elastic IPs not attached: $3.65/month per IP (they’re free when attached!)
  • Old AMIs and snapshots: Forgotten test images
  • Unused load balancers: $16-22/month each

Cleanup Script

# Find unattached EBS volumes
aws ec2 describe-volumes \
  --filters Name=status,Values=available \
  --query 'Volumes[*].[VolumeId,Size,CreateTime]' \
  --output table

# Find old snapshots (older than 90 days)
aws ec2 describe-snapshots --owner-ids self \
  --query 'Snapshots[?StartTime<=`2025-02-01`].[SnapshotId,VolumeSize,StartTime]' \
  --output table

# Find unallocated Elastic IPs
aws ec2 describe-addresses \
  --query 'Addresses[?AssociationId==null].[PublicIp,AllocationId]' \
  --output table

Real Example:
Fintech startup audit revealed:
- 150GB of unattached EBS volumes: $15/month
- 2TB of old snapshots: $100/month
- 12 unallocated Elastic IPs: $44/month
- 3 unused ALBs: $48/month
Total savings: $207/month = $2,484/year


Technique #7: CloudFront for Data Transfer Costs

Data transfer out of AWS is expensive ($0.09/GB). CloudFront is much cheaper ($0.085/GB for first 10TB, and decreases with volume).

Example:
Website serving 10TB/month from S3 directly: $900/month
Same content via CloudFront: $850/month + caching benefits
Savings: $50/month = $600/year

Bonus benefits:

  • Faster load times (CDN caching)
  • Reduced load on origin servers
  • DDoS protection

Technique #8: Spot Instances for Fault-Tolerant Workloads

Spot Instances offer 50-90% discount compared to On-Demand. Perfect for:

  • Batch processing jobs
  • CI/CD workers
  • Data analytics
  • Machine learning training
  • Stateless web servers (with auto-scaling)

Example:
Nightly ETL job using 10 × r5.2xlarge On-Demand: $10/hour × 4 hours = $40/night
Same job using Spot: $2-4/hour × 4 hours = $8-16/night
Savings: ~$750/month = $9,000/year

Pro Tip: Use Spot Fleet with multiple instance types to maximize availability.


Technique #9: AWS Cost Explorer and Budgets

You can't optimize what you don't measure. Set up cost visibility:

  1. Enable Cost Explorer (free)
  2. Create Cost Allocation Tags: Environment, Project, Team
  3. Set up AWS Budgets with alerts (first 2 budgets are free)
  4. Create dashboard showing cost by service and tag

Budget Alert Example:

aws budgets create-budget \
  --account-id 123456789 \
  --budget file://budget.json \
  --notifications-with-subscribers file://notifications.json

Set alerts at:

  • 80% of budget (warning)
  • 100% of budget (urgent)
  • 110% of budget (critical)

Technique #10: Third-Party Cost Management Tools

For complex environments, third-party tools provide better visibility and automation:

  • CloudHealth (VMware): Enterprise-grade, great for multi-cloud
  • CloudCheckr: Strong security + cost optimization features
  • Spot.io: Automated Spot instance management
  • Kubecost: Kubernetes-specific cost tracking

Worth it when:

  • AWS spend > $50K/month
  • Multiple AWS accounts
  • Multi-cloud environment
  • Need automated optimization recommendations

Putting It All Together: A Cost Optimization Framework

Month 1: Quick Wins

  • Delete zombie resources (Technique #6)
  • Enable Cost Explorer and set budgets (Technique #9)
  • Implement S3 lifecycle policies (Technique #3)

Month 2: Medium Effort

  • Right-size EC2 instances (Technique #1)
  • Purchase Reserved Instances for baseline (Technique #2)
  • Migrate eligible workloads to Lambda (Technique #4)

Month 3: Advanced Optimization

  • Implement Spot instances (Technique #8)
  • Add CloudFront for high-traffic content (Technique #7)
  • Purchase RDS Reserved Instances (Technique #5)

Real Client Case Study

Company: Series B SaaS startup
Initial AWS spend: $45,000/month
Timeline: 3-month optimization project

Optimizations applied:

  • Right-sized 40 EC2 instances: -$3,200/month
  • Purchased Compute Savings Plans: -$7,500/month
  • S3 lifecycle policies on 120TB: -$2,800/month
  • Migrated 15 microservices to Lambda: -$1,100/month
  • RDS Reserved Instances: -$2,400/month
  • Deleted unused resources: -$800/month
  • Implemented Spot for batch jobs: -$2,500/month

Total monthly savings: $20,300 (45% reduction)
New AWS spend: $24,700/month
Annual savings: $243,600


Conclusion

AWS cost optimization isn't a one-time project—it's an ongoing practice. Start with the quick wins (zombie resource cleanup, S3 lifecycle policies), then tackle the bigger opportunities (Reserved Instances, right-sizing, Spot instances).

Key takeaways:

  1. Most companies overspend by 40-70% on AWS
  2. Low-hanging fruit (zombie resources) can save 10-15% immediately
  3. Reserved Instances/Savings Plans are essential for predictable workloads
  4. Right-sizing and storage optimization save the most long-term
  5. Set up cost tracking BEFORE optimizing

Action items for this week:

  1. Run the zombie resource cleanup scripts
  2. Enable Cost Explorer and review your top 10 expenses
  3. Identify candidates for Reserved Instances
  4. Set up billing alerts at 80%, 100%, and 110% of expected spend

Need Help with AWS Cost Optimization?

At INNOVABASE, we've helped companies save $50K-$500K+ annually on AWS costs through comprehensive audits and optimization strategies. Our process:

  1. Free initial audit - We analyze your current AWS spend
  2. Cost optimization roadmap - Prioritized recommendations with ROI estimates
  3. Implementation - We execute the optimizations
  4. Ongoing monitoring - Continuous cost tracking and alerts

Tags: #AWS #CloudCost #CostOptimization #DevOps #CloudComputing #FinOps


Leave a Reply

Your email address will not be published. Required fields are marked *

  • es
  • en