While most AWS cost optimization guides focus on Reserved Instances and Spot Instances, there are several underutilized services that can provide significant savings. Here’s a detailed look at services that often get overlooked, with actual pricing comparisons.
DynamoDB Provisioned vs On-Demand: 85% Cost Reduction
DynamoDB on-demand is convenient but costs 6-7x more than provisioned capacity for predictable workloads. This difference can mean thousands of dollars per month for active applications.
The Shocking Price Difference (us-east-1)
On-Demand:
- $0.25 per million write request units
- $0.25 per million read request units
Provisioned with Auto-scaling:
- $0.00065 per WCU per hour ($0.468 per month)
- $0.00013 per RCU per hour ($0.094 per month)
Real-World Example: A Typical API Backend
For an API handling 1000 writes/second and 5000 reads/second:
On-Demand Monthly Cost:
- Writes: 1000/sec × 2.628M sec/month = 2,628M writes × $0.25/1M = $657
- Reads: 5000/sec × 2.628M sec/month = 13,140M reads × $0.25/1M = $3,285
- Total: $3,942/month
Provisioned with Auto-scaling Monthly Cost:
- 1000 WCU: 1000 × $0.468 = $468
- 5000 RCU: 5000 × $0.094 = $470
- Total: $938/month (76% savings)
Setting Up Auto-scaling for Even Better Savings
|
|
With auto-scaling (assuming 70% average utilization):
- Average 700 WCU: $328/month
- Average 3500 RCU: $329/month
- Total: $657/month (83% savings vs on-demand)
S3 Intelligent-Tiering with Archive Configuration
S3 Intelligent-Tiering automatically moves objects between access tiers, but the real savings come from configuring the optional Archive Access tiers.
Standard Storage Approach
|
|
Intelligent-Tiering with Archive Configuration
|
|
Cost breakdown for 10TB after 180 days:
- Deep Archive Access tier: 10,240 GB × $0.00099 = $10.14/month
- Monitoring fee: 10M objects × $0.0025/1000 = $25/month
- Total: $35.14/month (85% savings)
S3 Intelligent-Tiering Pricing Details
Compute Savings Plans for Lambda and Fargate
While EC2 Reserved Instances are well-known, Compute Savings Plans apply to Lambda, Fargate, and EC2, offering up to 17% discount on Lambda and 52% on Fargate.
Analyzing Your Compute Spend
|
|
Example savings on $1,000/month Lambda spend:
- On-Demand: $1,000/month
- 1-year Compute Savings Plan: $830/month (17% discount)
- 3-year Compute Savings Plan: $730/month (27% discount)
Step Functions Express Workflows vs Standard Workflows
For high-volume, short-duration orchestrations, Express Workflows offer dramatic cost savings.
Pricing Comparison
Standard Workflows:
- $25 per million state transitions
Express Workflows:
- $1.00 per million requests
- $0.00001667 per GB-second of memory
For a simple 3-step workflow executing 10 million times per month:
|
|
Monthly costs:
- Standard: 30M state transitions × $25/1M = $750
- Express: 10M requests × $1/1M = $10
CloudFront Functions vs Lambda@Edge
For simple request/response manipulation at the edge, CloudFront Functions are significantly cheaper than Lambda@Edge.
Pricing Per Million Requests
Lambda@Edge:
- $0.60 per million requests
- $0.00001667 per GB-second
CloudFront Functions:
- $0.10 per million invocations
Use Case: Adding Security Headers
|
|
For 100 million requests/month:
- Lambda@Edge: $60 + compute costs
- CloudFront Functions: $10 (83% savings)
EventBridge Scheduler vs Lambda for Scheduled Tasks
While the individual cost difference seems small, EventBridge Scheduler becomes valuable at scale and eliminates Lambda cold starts, complexity, and maintenance overhead.
When This Matters: Multiple Scheduled Tasks
Consider a SaaS application with these scheduled jobs:
- 50 customer data exports (hourly)
- 100 metric calculations (every 5 minutes)
- 200 status checks (every minute)
- 30 cleanup tasks (daily)
Traditional Approach: Lambda Functions
|
|
Monthly Lambda Costs:
- 50 hourly: 36,000 invocations
- 100 per 5 min: 864,000 invocations
- 200 per minute: 8,640,000 invocations
- 30 daily: 900 invocations
- Total: ~9.5M invocations
At minimum 128MB, 100ms per execution:
- Compute: 9.5M × $0.0000000167 × 100ms/1000 = $15.87/month
- Requests: 9.5M × $0.20/1M = $1.90/month
- Plus: Cold start latency, Lambda management overhead
Optimized: Direct EventBridge Scheduler
|
|
Monthly EventBridge Costs:
- 9.5M invocations × $1.00/1M = $9.50/month
- Benefit: No cold starts, no Lambda management, 50% cost reduction
The real value: simplified architecture, better debugging, and no Lambda concurrency limits.
Cost Allocation Tags for Visibility
While not a service that directly saves money, Cost Allocation Tags reveal hidden costs. Enable them in the Billing Console and tag all resources consistently.
|
|
Quick Wins for Immediate Savings
1. CloudWatch Logs Retention
Default retention is “Never Expire”. Set appropriate retention periods:
|
|
Cost savings: 90% reduction after retention period
2. NAT Instance vs NAT Gateway (Dev Environments)
- NAT Gateway: $0.045/hour = $32.40/month minimum
- NAT Instance (t3.nano): $0.0052/hour = $3.74/month
3. GP3 vs GP2 EBS Volumes
GP3 is 20% cheaper and allows independent IOPS/throughput configuration:
|
|
- GP2 (1TB): $100/month
- GP3 (1TB): $80/month
Implementation Priority
Based on potential savings and implementation effort:
High Impact, Low Effort:
- Enable S3 Intelligent-Tiering with archive tiers
- Set CloudWatch Logs retention policies
- Switch to GP3 volumes
High Impact, Medium Effort:
- Implement Compute Savings Plans for consistent Lambda/Fargate usage
- Move from Lambda@Edge to CloudFront Functions where applicable
- Switch from DynamoDB on-demand to provisioned for predictable workloads
Medium Impact, Low Effort:
- Replace Lambda + CloudWatch Events with EventBridge Scheduler
- Use NAT Instances in development environments
- Implement Cost Allocation Tags
The actual savings depend on your specific usage patterns. Use AWS Cost Explorer to identify your largest cost centers and focus optimization efforts there first.
What underutilized AWS services have you found that reduce costs? Share your discoveries in the comments.