Analyze AWS resources used in the app (IaC files and/or resources in a target account/region) and optimize costs - creating GitHub issues for identified optimizations.
aws sts get-caller-identity succeeds)fetch to retrieve AWS documentation
Process:aws sts get-caller-identity to confirm accountaws configure get region to determine default regionaws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId,InstanceType,State.Name,Tags]'aws rds describe-db-instances --query 'DBInstances[].[DBInstanceIdentifier,DBInstanceClass,Engine,MultiAZ]'aws lambda list-functions --query 'Functions[].[FunctionName,Runtime,MemorySize,Architectures]'aws ecs list-clusters then aws ecs describe-servicesaws s3api list-buckets --query 'Buckets[].Name'aws elasticache describe-cache-clustersaws ec2 describe-nat-gatewaysaws elbv2 describe-load-balancers**/*.tf, **/*.yaml (CloudFormation/SAM), **/*.json (CloudFormation), **/cdk.json, lib/**/*.ts (CDK)# EC2 CPU utilization
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 --metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=<id> \
--start-time $(date -u -d '7 days ago' +%Y-%m-%dT%H:%M:%SZ) \
--end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) \
--period 3600 --statistics Average
# Lambda duration
aws cloudwatch get-metric-statistics \
--namespace AWS/Lambda --metric-name Duration \
--dimensions Name=FunctionName,Value=<name> \
--start-time $(date -u -d '7 days ago' +%Y-%m-%dT%H:%M:%SZ) \
--end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) \
--period 86400 --statistics Average,Maximum
aws ce get-cost-and-usage \
--time-period Start=$(date -u -d '30 days ago' +%Y-%m-%d),End=$(date -u +%Y-%m-%d) \
--granularity MONTHLY --metrics BlendedCost \
--group-by Type=DIMENSION,Key=SERVICE
arm64 (20% cheaper)Priority Score = (Value Score × Monthly Savings) / (Risk Score × Implementation Days)
High: Score > 20 | Medium: Score 5-20 | Low: Score < 5
🎯 AWS Cost Optimization Summary
📊 Analysis Results:
• Total Resources Analyzed: X
• Current Monthly Cost: $X
• Potential Monthly Savings: $Y
• Optimization Opportunities: Z
• High Priority Items: N
🏆 Recommendations:
1. [Resource]: [Current] → [Target] = $X/month savings - [Risk] | [Effort]
...
💡 This will create Y individual GitHub issues + 1 EPIC issue.
❓ Proceed with creating GitHub issues? (y/n)
[COST-OPT] [Resource Type] - [Brief Description] - $X/month savings## 💰 Cost Optimization: [Brief Title]
**Monthly Savings**: $X | **Risk Level**: [Low/Medium/High] | **Effort**: X days
### 📋 Description
[Clear explanation of the optimization and why it's needed]
### 🔧 Implementation
**IaC Files Detected**: [Yes/No]
```bash
# IaC modification (preferred) or AWS CLI fallback
### Step 7: Create EPIC Coordinating Issue
**Action**: Create master tracking issue. Label with "cost-optimization" (green), "aws" (orange), "epic" (purple).
**Title**: `[EPIC] AWS Cost Optimization Initiative - $X/month potential savings`
**Body**: Executive summary with account/region details, Mermaid architecture diagram of current resources, prioritized checklist linking all individual issues (High → Medium → Low), progress tracking, and success criteria (>80% of estimated savings realized, no performance degradation).
## Error Handling
- **AWS Authentication Failure**: Guide through `aws configure`
- **No Resources Found**: Create informational issue about AWS resource deployment
- **Insufficient Permissions**: List required IAM read-only permissions
- **GitHub Creation Failure**: Output formatted recommendations to console
- **Cost Explorer Not Enabled**: Guide user to enable in AWS Console
## Success Criteria
- ✅ All cost estimates verified against actual configurations and AWS pricing
- ✅ Individual GitHub issues created for each optimization
- ✅ EPIC issue provides comprehensive coordination and tracking
- ✅ All recommendations include specific AWS CLI or IaC commands
- ✅ User confirmation obtained before creating issues