关于 aws-cost-optimize
面向检查云资源与基础设施即代码(IaC)的 AWS 成本优化工作流。它结合资源、使用情况和成本数据提出建议,并在获批后创建独立 GitHub Issue 和统筹 EPIC。
主要功能
- 01跨区域发现 AWS 资源
- 02检查 IaC 配置文件
- 03收集 CloudWatch 使用量和成本数据
- 04为节省机会评分并排序
- 05获批后创建 GitHub Issue
适用场景
- 01检查 AWS 基础设施以寻找节省空间
- 02根据实际使用情况评估资源配置
- 03在 GitHub 跟踪已批准的优化项
MCP 相关
该工作流要求配置并验证 GitHub MCP 服务。用户批准后,它通过该服务创建单项优化 Issue 和统筹 EPIC。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ github/ awesome-copilot --skill aws-cost-optimize安装后在 Claude Code 中输入/aws-cost-optimize确认已加载。
详细介绍
AWS 成本优化
此工作流分析基础设施即代码 (IaC) 文件和 AWS 资源,以生成成本优化建议。它为每个优化机会创建单独的 GitHub issue,并创建一个 EPIC issue 来协调实施,从而实现成本节约举措的高效跟踪与执行。
先决条件
- 已配置并认证 AWS CLI(
aws sts get-caller-identity成功执行) - 已配置并认证 GitHub MCP 服务
- 已确定目标 GitHub 仓库
- 已部署 AWS 资源(IaC 文件可选但有帮助)
工作流步骤
步骤 1:获取 AWS 成本优化最佳实践
操作:在分析前获取成本优化最佳实践
工具:通过 fetch 获取 AWS 文档
流程:
- 加载最佳实践:
- 获取
https://docs.aws.amazon.com/cost-management/latest/userguide/cost-optimization-best-practices.html - 获取 AWS Well-Architected 成本优化支柱摘要
- 使用这些实践来指导后续分析和建议
- 获取
步骤 2:发现 AWS 基础设施
操作:动态发现并分析 AWS 资源和配置 工具:AWS CLI + 本地文件系统访问 流程:
-
账户与区域发现:
- 执行
aws sts get-caller-identity以确认账户 - 执行
aws configure get region以确定默认区域
- 执行
-
资源发现(按区域):
- EC2 实例:
aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId,InstanceType,State.Name,Tags]' - RDS 实例:
aws rds describe-db-instances --query 'DBInstances[].[DBInstanceIdentifier,DBInstanceClass,Engine,MultiAZ]' - Lambda 函数:
aws lambda list-functions --query 'Functions[].[FunctionName,Runtime,MemorySize,Architectures]' - ECS 集群/服务:先执行
aws ecs list-clusters,再执行aws ecs describe-services - S3 存储桶:
aws s3api list-buckets --query 'Buckets[].Name' - ElastiCache 集群:
aws elasticache describe-cache-clusters - NAT 网关:
aws ec2 describe-nat-gateways - 负载均衡器:
aws elbv2 describe-load-balancers
- EC2 实例:
-
IaC 检测:
- 扫描 IaC 文件:
**/*.tf、**/*.yaml(CloudFormation/SAM)、**/*.json(CloudFormation)、**/cdk.json、lib/**/*.ts(CDK) - 解析资源定义以了解预期配置
- 不要使用应用程序代码文件——仅以 IaC 文件作为可信来源
- 如果未找到 IaC 文件:停止并向用户报告
- 扫描 IaC 文件:
步骤 3:收集使用指标并验证当前成本
操作:收集利用率数据并验证实际资源成本 工具:AWS CLI(CloudWatch、Cost Explorer) 流程:
-
CloudWatch 指标(最近 7 天):
# 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 Cost Explorer:
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 -
计算基线指标:CPU/内存平均值、Lambda 调用率、数据传输模式,以及真实的当前月度总计。
第 4 步:生成成本优化建议
操作:分析资源以识别优化机会 流程:
-
应用优化模式:
计算:
- EC2:根据 CPU/内存进行合理调整规模(平均 <20% → 降配),将 On-Demand 转换为 Savings Plans,迁移到 Graviton/ARM(最多便宜 40%)
- Lambda:为空闲函数降低内存,切换到
arm64(便宜 20%) - ECS/EKS:为开发/批处理工作负载使用 Fargate Spot
数据库:
- RDS:合理调整实例类规模,为开发环境转换为单可用区,对可变负载使用 Aurora Serverless v2
- DynamoDB:对不可预测流量将预置模式切换为 On-Demand
- ElastiCache:根据内存利用率合理调整节点类型规模
存储:
- S3:生命周期策略(Standard → 30 天后 Standard-IA → 90 天后 Glacier),启用 Intelligent-Tiering
- EBS:删除未挂载的卷,将 gp2 转换为 gp3(性能相同,便宜 20%)
网络:
- 合并非生产环境的 NAT Gateway
- 对 S3/DynamoDB 使用 VPC endpoint 以避免 NAT Gateway 费用
-
计算优先级分数:
Priority Score = (Value Score × Monthly Savings) / (Risk Score × Implementation Days) High: Score > 20 | Medium: Score 5-20 | Low: Score < 5
第 5 步:用户确认
操作:在创建 GitHub issue 之前展示摘要并获取批准
🎯 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)
在继续之前等待用户确认。
第 6 步:创建单独的优化 issue
操作:为每项优化创建单独的 GitHub issue。标记为 "cost-optimization"(绿色)和 "aws"(橙色)。
标题:[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
```
### 📊 Evidence
- Current Configuration: [details]
- Usage Pattern: [evidence from CloudWatch]
- Cost Impact: $X/month → $Y/month
### ✅ Validation Steps
- [ ] Test in non-production environment
- [ ] Verify no performance degradation via CloudWatch
- [ ] Confirm cost reduction in AWS Cost Explorer
### ⚠️ Risks & Considerations
- [Risk and mitigation]
**Priority Score**: X | **Value**: X/10 | **Risk**: X/10
第 7 步:创建 EPIC 协调 issue
操作:创建主跟踪 issue。标记为 "cost-optimization"(绿色)、"aws"(橙色)、"epic"(紫色)。
标题:[EPIC] AWS Cost Optimization Initiative - $X/month potential savings
正文:包含账户/区域详细信息的执行摘要、当前资源的 Mermaid 架构图、链接所有单独 issue 的优先级检查清单(高 → 中 → 低)、进度跟踪,以及成功标准(实现 >80% 的预计节省,无性能下降)。
错误处理
- AWS 身份验证失败:引导完成
aws configure - 未找到资源:创建关于 AWS 资源部署的信息性 issue
- 权限不足:列出所需的 IAM 只读权限
- GitHub 创建失败:将格式化后的建议输出到控制台
- 未启用 Cost Explorer:引导用户在 AWS 控制台中启用
成功标准
- ✅ 所有成本估算均已根据实际配置和 AWS 定价进行验证
- ✅ 为每项优化创建了单独的 GitHub issue
- ✅ EPIC issue 提供全面的协调与跟踪
- ✅ 所有建议均包含具体的 AWS CLI 或 IaC 命令
- ✅ 在创建 issue 之前已获得用户确认