mcpField
A
aws-cost-optimize

aws-cost-optimize

github.com/github云与 DevOps40.5k69 次安装今天更新
代码仓库

关于 aws-cost-optimize

面向检查云资源与基础设施即代码(IaC)的 AWS 成本优化工作流。它结合资源、使用情况和成本数据提出建议,并在获批后创建独立 GitHub Issue 和统筹 EPIC。

主要功能

  1. 01跨区域发现 AWS 资源
  2. 02检查 IaC 配置文件
  3. 03收集 CloudWatch 使用量和成本数据
  4. 04为节省机会评分并排序
  5. 05获批后创建 GitHub Issue

适用场景

  1. 01检查 AWS 基础设施以寻找节省空间
  2. 02根据实际使用情况评估资源配置
  3. 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 文档 流程:

  1. 加载最佳实践:
    • 获取 https://docs.aws.amazon.com/cost-management/latest/userguide/cost-optimization-best-practices.html
    • 获取 AWS Well-Architected 成本优化支柱摘要
    • 使用这些实践来指导后续分析和建议
步骤 2:发现 AWS 基础设施

操作:动态发现并分析 AWS 资源和配置 工具:AWS CLI + 本地文件系统访问 流程:

  1. 账户与区域发现:

    • 执行 aws sts get-caller-identity 以确认账户
    • 执行 aws configure get region 以确定默认区域
  2. 资源发现(按区域):

    • 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
  3. IaC 检测:

    • 扫描 IaC 文件:**/*.tf、**/*.yaml(CloudFormation/SAM)、**/*.json(CloudFormation)、**/cdk.json、lib/**/*.ts(CDK)
    • 解析资源定义以了解预期配置
    • 不要使用应用程序代码文件——仅以 IaC 文件作为可信来源
    • 如果未找到 IaC 文件:停止并向用户报告
步骤 3:收集使用指标并验证当前成本

操作:收集利用率数据并验证实际资源成本 工具:AWS CLI(CloudWatch、Cost Explorer) 流程:

  1. 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
    
  2. 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
    
  3. 计算基线指标:CPU/内存平均值、Lambda 调用率、数据传输模式,以及真实的当前月度总计。

第 4 步:生成成本优化建议

操作:分析资源以识别优化机会 流程:

  1. 应用优化模式:

    计算:

    • 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 费用
  2. 计算优先级分数:

    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 之前已获得用户确认

评论

支持 Markdown