AWS Reservation Analysis Guide
Maximize your AWS Reserved Instance savings with intelligent analysis and optimization recommendations.
Overview
The Reservation Analysis feature compares your actual AWS resource usage (based on billing data) against your purchased Reserved Instances (RIs) to provide optimization recommendations. This analysis helps you identify underutilized reservations, missing coverage opportunities, and potential cost savings.
How It Works
1. Data Collection
The analysis pulls data from two key sources:
Reserved Instances
- EC2 Reserved Instances: Retrieved from
describe_reserved_instances()API - RDS Reserved Instances: Retrieved from
describe_reserved_db_instances()API - ElastiCache Reserved Instances: Retrieved from
describe_reserved_cache_nodes()API
Only active reservations are counted in the analysis.
Actual Usage (Billing Data)
Instead of using a snapshot of currently running instances, the analysis uses actual billing data from AWS Cost Explorer for the selected month:
Cost Explorer Query:
- Metric: UsageQuantity (instance hours)
- Granularity: Monthly
- GroupBy: INSTANCE_TYPE
- Filter: Service (EC2/RDS/ElastiCache) + Region
Example Calculation:
• Month: October 2025 (744 hours)
• Cost Explorer reports: 3,720 usage hours for t3.micro
• Average concurrent instances: 3,720 ÷ 744 = 5 instances
This represents your actual average usage throughout the month, not just a point-in-time snapshot.
EC2 Instance Normalization
Why Normalization?
AWS allows size flexibility for certain instance families. This means smaller reserved instances can cover larger instances within the same family.
T3 Instance Normalization Factors
| Instance Size | Normalization Factor | Example |
|---|---|---|
| t3.nano | 0.5 units | 2× t3.nano = 1 unit |
| t3.micro | 1.0 units | 1× t3.micro = 1 unit |
| t3.small | 2.0 units | 1× t3.small = 2 units |
| t3.medium | 4.0 units | 1× t3.medium = 4 units |
| t3.large | 8.0 units | 1× t3.large = 8 units |
| t3.xlarge | 16.0 units | 1× t3.xlarge = 16 units |
| t3.2xlarge | 32.0 units | 1× t3.2xlarge = 32 units |
Key Insight: The smaller t3.nano and t3.micro reservations can be automatically applied by AWS to cover larger t3.small and t3.medium instances. This provides flexibility in your reservation strategy.
Recommendation Logic
The system analyzes each instance family and provides one of four recommendations:
🟢 Optimal (70-100% Utilization)
Actual: 8.5 units
Utilization: 85%
Action: No changes needed - well balanced
🔴 Decrease (< 70% Utilization)
Actual: 5.0 units
Utilization: 50%
Action: Reduce reservations by 5.0 units to match usage
🟠 Increase (> 100% Utilization)
Actual: 10.0 units
Utilization: 200%
Action: Add 5.0 more units to cover excess on-demand usage
🆕 Increase (No Reservations)
Actual: 8.0 units
Action: Purchase 8.0 units to cover current usage
Best Practices
1. Regular Monthly Reviews
Run the analysis at the beginning of each month to review the previous month's usage. This helps you identify trends and make informed decisions about RI purchases or modifications.
2. Look for Patterns
- Consistent over-utilization (>100%) = opportunity to save with RIs
- Consistent under-utilization (<70%) = consider modifying or selling RIs
3. Use Size Flexibility
For T3 and burstable instances, buy smaller RIs (nano, micro) that can flex to cover larger instances as needed. This provides maximum flexibility while maintaining cost savings.
4. Consider Regional Scope
Regional RIs provide size flexibility. AZ-specific RIs provide capacity reservation but no size flexibility. Choose based on your needs.
5. Account for Growth
Don't reserve 100% of usage if you're growing rapidly. Leave room for on-demand flexibility. Aim for 70-90% utilization for optimal balance.
Frequently Asked Questions
Q: Why does my utilization show 0% when I have instances running?
A: The analysis uses billing data for the selected month. If that month hasn't completed or billing data isn't available yet, usage will show as zero.
Q: Can I mix instance sizes in my reservations?
A: Yes! For instance families that support size flexibility (T3, M5, C5, etc.), smaller RIs automatically apply to larger instances.
Q: What's the difference between this and AWS Cost Explorer RI recommendations?
A: This tool analyzes your actual historical usage and provides family-level normalization. AWS Cost Explorer provides forward-looking recommendations based on patterns.
Q: Should I always aim for 100% utilization?
A: No. 70-90% is often ideal, providing cost savings while maintaining flexibility for growth and changes.
Required IAM Permissions
For questions or issues with the Reservation Analysis feature, ensure you have the required IAM permissions:
{
"Effect": "Allow",
"Action": [
"ce:GetCostAndUsage",
"ec2:DescribeReservedInstances",
"rds:DescribeReservedDBInstances",
"elasticache:DescribeReservedCacheNodes"
],
"Resource": "*"
}