AWS 成本优化器

aws-cost-optimizer
分类编程
作者Agentic Awesome Skills 社区
许可MIT
评分4.70/5
使用5.4K

AWS Cost Optimizer

分析 AWS 支出模式,识别浪费,并提供可操作的成本降低策略。

何时使用此技能

当你需要分析 AWS 支出、寻找成本优化机会或减少云资源浪费时,请使用此技能。

核心能力

成本分析

  • 解析 AWS Cost Explorer 数据以分析趋势和异常

  • 按服务、区域和资源标签细分成本

  • 识别环比支出增长

资源优化

  • 检测闲置的 EC2 实例(低 CPU 利用率)

  • 查找未挂载的 EBS 卷和旧快照

  • 识别未使用的弹性 IP (Elastic IPs)

  • 定位利用率低的 RDS 实例

  • 查找符合生命周期策略的旧 S3 对象

节省建议

  • 提供预留实例 (Reserved Instance) / 节省计划 (Savings Plans) 的机会建议

  • 根据 CloudWatch 指标推荐实例规格调整 (Rightsizing)

  • 识别位于高成本区域的资源

  • 计算采取特定操作后可节省的潜在金额

AWS CLI 命令

获取成本与使用情况

bash
# 最近 30 天按服务划分的成本
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

本月每日成本

aws ce get-cost-and-usage \ --time-period Start=$(date +%Y-%m-01),End=$(date +%Y-%m-%d) \ --granularity DAILY \ --metrics UnblendedCost

查找未使用资源

bash
# 未挂载的 EBS 卷
aws ec2 describe-volumes \
  --filters Name=status,Values=available \
  --query 'Volumes[*].[VolumeId,Size,VolumeType,CreateTime]' \
  --output table

未使用的弹性 IP

aws ec2 describe-addresses \ --query 'Addresses[?AssociationId==null].[PublicIp,AllocationId]' \ --output table

闲置的 EC2 实例(需要 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

旧的 EBS 快照(>90 天)

aws ec2 describe-snapshots \ --owner-ids self \ --query 'Snapshots[?StartTime<='$(date -d '90 days ago' --iso-8601)'].[SnapshotId,StartTime,VolumeSize]' \ --output table

规格调整分析

bash
# 列出 EC2 实例及其类型
aws ec2 describe-instances \
  --query 'Reservations[*].Instances[*].[InstanceId,InstanceType,State.Name,Tags[?Key==Name].Value|[0]]' \
  --output table

获取 RDS 实例利用率

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

优化工作流

1. 基准评估
- 提取 3-6 个月的成本数据
- 识别支出最高的前 5 个服务
- 计算增长率

2. 快速见效 (Quick Wins)
- 删除未挂载的 EBS 卷
- 释放未使用的弹性 IP
- 停止/终止闲置的 EC2 实例
- 删除旧快照

3. 战略优化
- 分析预留实例的覆盖率
- 审查实例类型与工作负载的匹配度

  • 实现 S3 生命周期策略

  • 对非关键工作负载考虑使用 Spot 实例

4. 持续监控
- 设置带有警报的 AWS Budgets
- 启用成本异常检测 (Cost Anomaly Detection)
- 为资源打标签以进行成本分摊
- 每月举行成本审查会议

成本优化清单

  • [ ] 启用 AWS Cost Explorer
  • [ ] 设置成本分摊标签
  • [ ] 创建带有警报的 AWS Budget
  • [ ] 审查并删除未使用的资源
  • [ ] 分析预留实例 (Reserved Instance) 的机会
  • [ ] 实现 S3 Intelligent-Tiering
  • [ ] 审查数据传输成本
  • [ ] 优化 Lambda 内存分配
  • [ ] 使用 CloudWatch Logs 保留策略
  • [ ] 考虑多区域成本差异

示例提示词

分析

  • “显示过去 3 个月按服务分类的 AWS 成本”

  • “我最昂贵的 10 个资源是什么?”

  • “将本月支出与上月进行对比”

优化

  • “查找所有未挂载的 EBS 卷并计算可节省的费用”

  • “识别 CPU 利用率低于 5% 的 EC2 实例”

  • “根据使用情况建议购买预留实例”

  • [ ] “计算删除 90 天前快照可节省的费用”

实施

  • “创建一个删除未挂载卷的脚本”

  • “设置每月 1000 美元的预算警报”

  • “为管理层生成一份成本优化报告”

最佳实践

  • 始终先在非生产环境进行测试
  • 在删除前确认资源确实未被使用
  • 记录所有成本优化操作
  • 计算优化工作的投资回报率 (ROI)
  • 将重复性的优化任务自动化
  • 使用 AWS Trusted Advisor 的建议
  • 启用 AWS 成本异常检测

与 Kiro CLI 集成

本技能可与 Kiro CLI 的 AWS 集成无缝协作:

bash
# 使用 Kiro 分析成本
kiro-cli chat "Use aws-cost-optimizer to analyze my spending"

生成优化报告

kiro-cli chat "Create a cost optimization plan using aws-cost-optimizer"

安全注意事项

  • 风险等级:低 —— 只读分析是安全的
  • 删除操作:中风险 —— 删除资源前务必核实
  • 生产环境变更:高风险 —— 先在开发/测试环境测试规格调整 (rightsizing)
  • 在任何删除操作前保留备份
  • 在可用时使用 --dry-run 标志

附加资源

局限性

  • 仅在任务明确符合上述范围时使用此技能。
  • 不要将输出结果视为针对特定环境的验证、测试或专家评审的替代方案。
  • 如果缺少必要的输入、权限、安全边界或成功标准,请停止并请求澄清。