
aws-cost-optimizer
by armanzeroeight
🚀 A collection of Claude subagents, skills, rules, guides, and blueprints for Developers, Engineers, and Creators. | Covering programming languages, DevOps, Cloud, and beyond.
SKILL.md
name: aws-cost-optimizer description: Analyze and optimize AWS costs with recommendations for Reserved Instances, right-sizing, and resource cleanup. Use when reducing AWS spending, analyzing costs, or optimizing cloud infrastructure expenses.
AWS Cost Optimizer
Analyze and optimize AWS costs with actionable recommendations.
Quick Start
Review Cost Explorer, identify top costs, right-size instances, use Reserved Instances, delete unused resources.
Instructions
Cost Analysis Process
- Identify cost drivers
- Analyze usage patterns
- Recommend optimizations
- Estimate savings
- Implement changes
Using AWS Cost Explorer
Access Cost Explorer:
- AWS Console → Billing → Cost Explorer
- View costs by service, region, tag
Key metrics to check:
- Monthly costs by service
- Cost trends over time
- Unused or underutilized resources
- Data transfer costs
EC2 Cost Optimization
Right-sizing instances:
Check utilization:
# Get CloudWatch metrics
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-1234567890abcdef0 \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-31T23:59:59Z \
--period 3600 \
--statistics Average
Recommendations:
- CPU < 20%: Downsize instance type
- CPU > 80%: Upsize or add instances
- Memory < 50%: Consider smaller instance
Reserved Instances:
- 1-year: ~30-40% savings
- 3-year: ~50-70% savings
- Best for predictable workloads
Savings Plans:
- More flexible than Reserved Instances
- Commit to $/hour usage
- Apply across instance families
Spot Instances:
- Up to 90% savings
- For fault-tolerant workloads
- Batch processing, CI/CD, testing
Stop unused instances:
# Find stopped instances
aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=stopped" \
--query 'Reservations[].Instances[].[InstanceId,Tags[?Key==`Name`].Value|[0]]'
# Terminate if not needed
aws ec2 terminate-instances --instance-ids i-1234567890abcdef0
S3 Cost Optimization
Lifecycle policies:
{
"Rules": [{
"Id": "Archive old data",
"Status": "Enabled",
"Transitions": [
{
"Days": 30,
"StorageClass": "STANDARD_IA"
},
{
"Days": 90,
"StorageClass": "GLACIER"
}
],
"Expiration": {
"Days": 365
}
}]
}
Storage classes:
- Standard: Frequent access
- Standard-IA: Infrequent access (30+ days)
- Glacier: Archive (90+ days)
- Glacier Deep Archive: Long-term archive
Delete incomplete multipart uploads:
aws s3api list-multipart-uploads --bucket my-bucket
# Set lifecycle rule to abort after 7 days
Analyze storage:
# Get bucket size
aws s3 ls s3://my-bucket --recursive --summarize
RDS Cost Optimization
Right-size databases:
- Check CPU, memory, IOPS utilization
- Downsize if consistently low
- Use Aurora Serverless for variable workloads
Reserved Instances:
- 1-year: ~30-40% savings
- 3-year: ~50-60% savings
Stop dev/test databases:
# Stop RDS instance
aws rds stop-db-instance --db-instance-identifier mydb
# Start when needed
aws rds start-db-instance --db-instance-identifier mydb
Delete old snapshots:
# List snapshots
aws rds describe-db-snapshots --query 'DBSnapshots[?SnapshotCreateTime<`2023-01-01`]'
# Delete old snapshots
aws rds delete-db-snapshot --db-snapshot-identifier snapshot-id
Data Transfer Costs
Reduce data transfer:
- Use CloudFront for content delivery
- Keep data in same region
- Use VPC endpoints for AWS services
- Compress data before transfer
VPC endpoints:
# Create S3 VPC endpoint (no data transfer charges)
aws ec2 create-vpc-endpoint \
--vpc-id vpc-12345678 \
--service-name com.amazonaws.us-east-1.s3 \
--route-table-ids rtb-12345678
EBS Cost Optimization
Delete unattached volumes:
# Find unattached volumes
aws ec2 describe-volumes \
--filters "Name=status,Values=available" \
--query 'Volumes[].[VolumeId,Size,VolumeType]'
# Delete if not needed
aws ec2 delete-volume --volume-id vol-1234567890abcdef0
Delete old snapshots:
# List old snapshots
aws ec2 describe-snapshots --owner-ids self \
--query 'Snapshots[?StartTime<`2023-01-01`]'
# Delete
aws ec2 delete-snapshot --snapshot-id snap-1234567890abcdef0
Use gp3 instead of gp2:
- gp3 is 20% cheaper
- Better performance
- Migrate existing volumes
Lambda Cost Optimization
Optimize memory allocation:
- More memory = faster execution = lower cost
- Test different memory settings
- Use AWS Lambda Power Tuning tool
Reduce cold starts:
- Use provisioned concurrency (if needed)
- Keep functions warm with scheduled events
- Minimize dependencies
Monitor invocations:
# Get Lambda metrics
aws cloudwatch get-metric-statistics \
--namespace AWS/Lambda \
--metric-name Invocations \
--dimensions Name=FunctionName,Value=my-function \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-31T23:59:59Z \
--period 86400 \
--statistics Sum
CloudWatch Costs
Reduce log retention:
# Set log retention to 7 days
aws logs put-retention-policy \
--log-group-name /aws/lambda/my-function \
--retention-in-days 7
Delete unused log groups:
# List log groups
aws logs describe-log-groups
# Delete
aws logs delete-log-group --log-group-name /aws/lambda/old-function
Unused Resources
Find unused resources:
Elastic IPs not attached:
aws ec2 describe-addresses \
--query 'Addresses[?AssociationId==null]'
Load balancers with no targets:
aws elbv2 describe-load-balancers
aws elbv2 describe-target-health --target-group-arn arn
NAT Gateways with low traffic:
# Check CloudWatch metrics for BytesOutToDestination
Cost Optimization Checklist
Compute:
- Right-size EC2 instances
- Use Reserved Instances for predictable workloads
- Use Spot Instances for fault-tolerant workloads
- Stop/terminate unused instances
- Implement auto-scaling
Storage:
- Implement S3 lifecycle policies
- Delete old EBS snapshots
- Delete unattached EBS volumes
- Use appropriate S3 storage classes
- Delete incomplete multipart uploads
Database:
- Right-size RDS instances
- Use Reserved Instances
- Stop dev/test databases when not in use
- Delete old RDS snapshots
- Consider Aurora Serverless
Networking:
- Use CloudFront to reduce data transfer
- Delete unused Elastic IPs
- Use VPC endpoints
- Review NAT Gateway usage
Monitoring:
- Reduce CloudWatch log retention
- Delete unused log groups
- Review custom metrics
General:
- Enable AWS Cost Anomaly Detection
- Set up billing alerts
- Use AWS Budgets
- Tag resources for cost allocation
- Review Cost Explorer regularly
Savings Estimation
Reserved Instances:
- 1-year, no upfront: ~30% savings
- 1-year, all upfront: ~40% savings
- 3-year, all upfront: ~60% savings
Spot Instances:
- 70-90% savings vs On-Demand
S3 Lifecycle:
- Standard-IA: ~50% cheaper than Standard
- Glacier: ~80% cheaper than Standard
Right-sizing:
- Typical savings: 20-40% on oversized instances
Tools and Commands
AWS Cost Explorer:
- View costs by service, region, tag
- Forecast future costs
- Identify cost anomalies
AWS Budgets:
# Create budget
aws budgets create-budget \
--account-id 123456789012 \
--budget file://budget.json
AWS Trusted Advisor:
- Cost optimization recommendations
- Underutilized resources
- Idle resources
Third-party tools:
- CloudHealth
- CloudCheckr
- Spot.io
Best Practices
Tagging strategy:
- Tag all resources
- Use tags for cost allocation
- Common tags: Environment, Project, Owner, CostCenter
Regular reviews:
- Weekly: Check for anomalies
- Monthly: Review Cost Explorer
- Quarterly: Optimize Reserved Instances
Automation:
- Auto-stop dev instances at night
- Auto-delete old snapshots
- Auto-scale based on demand
Monitoring:
- Set up billing alerts
- Use AWS Budgets
- Enable Cost Anomaly Detection
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
1ヶ月以内に更新
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon
