--- name: aws-cost-optimizer description: Comprehensive AWS cost analysis and optimization recommendations using AWS CLI and Cost Explorer risk: safe source: community --- # AWS Cost Optimizer Analyze AWS spending patterns, identify waste, and provide actionable cost reduction strategies. ## When to Use This Skill Use this skill when you need to analyze AWS spending, identify cost optimization opportunities, or reduce cloud waste. ## Core Capabilities **Cost Analysis** - Parse AWS Cost Explorer data for trends and anomalies - Break down costs by service, region, and resource tags - Identify month-over-month spending increases **Resource Optimization** - Detect idle EC2 instances (low CPU utilization) - Find unattached EBS volumes and old snapshots - Identify unused Elastic IPs - Locate underutilized RDS instances - Find old S3 objects eligible for lifecycle policies **Savings Recommendations** - Suggest Reserved Instance/Savings Plans opportunities - Recommend instance rightsizing based on CloudWatch metrics - Identify resources in expensive regions - Calculate potential savings with specific actions ## AWS CLI Commands ### Get Cost and Usage ```bash # Last 30 days cost by service aws ce get-cost-and-usage \ --time-period Start=$(date -d '30 days ago' +%Y-%m-%d),End=$(date +%Y-%m-%d) \ --granularity MONTHLY \ --metrics BlendedCost \ --group-by Type=DIMENSION,Key=SERVICE # Daily costs for current month aws ce get-cost-and-usage \ --time-period Start=$(date +%Y-%m-01),End=$(date +%Y-%m-%d) \ --granularity DAILY \ --metrics UnblendedCost ``` ### Find Unused Resources ```bash # Unattached EBS volumes aws ec2 describe-volumes \ --filters Name=status,Values=available \ --query 'Volumes[*].[VolumeId,Size,VolumeType,CreateTime]' \ --output table # Unused Elastic IPs aws ec2 describe-addresses \ --query 'Addresses[?AssociationId==null].[PublicIp,AllocationId]' \ --output table # Idle EC2 instances (requires CloudWatch) aws cloudwatch get-metric-statistics \ --namespace AWS/EC2 \ --metric-name CPUUtilization \ --dimensions Name=InstanceId,Value=i-xxxxx \ --start-time $(date -u -d '7 days ago' +%Y-%m-%dT%H:%M:%S) \ --end-time $(date -u +%Y-%m-%dT%H:%M:%S) \ --period 86400 \ --statistics Average # Old EBS snapshots (>90 days) aws ec2 describe-snapshots \ --owner-ids self \ --query 'Snapshots[?StartTime<=`'$(date -d '90 days ago' --iso-8601)'`].[SnapshotId,StartTime,VolumeSize]' \ --output table ``` ### Rightsizing Analysis ```bash # List EC2 instances with their types aws ec2 describe-instances \ --query 'Reservations[*].Instances[*].[InstanceId,InstanceType,State.Name,Tags[?Key==`Name`].Value|[0]]' \ --output table # Get RDS instance utilization aws cloudwatch get-metric-statistics \ --namespace AWS/RDS \ --metric-name CPUUtilization \ --dimensions Name=DBInstanceIdentifier,Value=mydb \ --start-time $(date -u -d '30 days ago' +%Y-%m-%dT%H:%M:%S) \ --end-time $(date -u +%Y-%m-%dT%H:%M:%S) \ --period 86400 \ --statistics Average,Maximum ``` ## Optimization Workflow 1. **Baseline Assessment** - Pull 3-6 months of cost data - Identify top 5 spending services - Calculate growth rate 2. **Quick Wins** - Delete unattached EBS volumes - Release unused Elastic IPs - Stop/terminate idle EC2 instances - Delete old snapshots 3. **Strategic Optimization** - Analyze Reserved Instance coverage - Review instance types vs. workload - Implement S3 lifecycle policies - Consider Spot instances for non-critical workloads 4. **Ongoing Monitoring** - Set up AWS Budgets with alerts - Enable Cost Anomaly Detection - Tag resources for cost allocation - Monthly cost review meetings ## Cost Optimization Checklist - [ ] Enable AWS Cost Explorer - [ ] Set up cost allocation tags - [ ] Create AWS Budget with alerts - [ ] Review and delete unused resources - [ ] Analyze Reserved Instance opportunities - [ ] Implement S3 Intelligent-Tiering - [ ] Review data transfer costs - [ ] Optimize Lambda memory allocation - [ ] Use CloudWatch Logs retention policies - [ ] Consider multi-region cost differences ## Example Prompts **Analysis** - "Show me AWS costs for the last 3 months broken down by service" - "What are my top 10 most expensive resources?" - "Compare this month's spending to last month" **Optimization** - "Find all unattached EBS volumes and calculate savings" - "Identify EC2 instances with <5% CPU utilization" - "Suggest Reserved Instance purchases based on usage" - "Calculate savings from deleting snapshots older than 90 days" **Implementation** - "Create a script to delete unattached volumes" - "Set up a budget alert for $1000/month" - "Generate a cost optimization report for leadership" ## Best Practices - Always test in non-production first - Verify resources are truly unused before deletion - Document all cost optimization actions - Calculate ROI for optimization efforts - Automate recurring optimization tasks - Use AWS Trusted Advisor recommendations - Enable AWS Cost Anomaly Detection ## Integration with Kiro CLI This skill works seamlessly with Kiro CLI's AWS integration: ```bash # Use Kiro to analyze costs kiro-cli chat "Use aws-cost-optimizer to analyze my spending" # Generate optimization report kiro-cli chat "Create a cost optimization plan using aws-cost-optimizer" ``` ## Safety Notes - **Risk Level: Low** - Read-only analysis is safe - **Deletion Actions: Medium Risk** - Always verify before deleting resources - **Production Changes: High Risk** - Test rightsizing in dev/staging first - Maintain backups before any deletion - Use `--dry-run` flag when available ## Additional Resources - [AWS Cost Optimization Best Practices](https://aws.amazon.com/pricing/cost-optimization/) - [AWS Well-Architected Framework - Cost Optimization](https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/welcome.html) - [AWS Cost Explorer API](https://docs.aws.amazon.com/cost-management/latest/APIReference/Welcome.html)