SuperAPI AI 工具集

aws-cost-optimizer

部署与运维

查看项目

更新于 10-15 12:08

技能介绍

用途

AWS Cost Optimizer 用于分析 AWS 支出模式、识别浪费,并提供可执行的降本策略。当你需要分析 AWS 花费、寻找成本优化机会或减少云资源浪费时,可以使用该技能。

主要能力

成本分析

  • 解析 AWS Cost Explorer 数据,发现趋势与异常
  • 按服务、区域和资源标签拆分成本
  • 识别逐月支出增长

资源优化

  • 检测闲置 EC2 实例(低 CPU 利用率)
  • 查找未挂载的 EBS 卷和旧快照
  • 识别未使用的弹性 IP
  • 定位利用率不足的 RDS 实例
  • 查找可应用生命周期策略的旧 S3 对象

节省建议

  • 建议预留实例/节省计划机会
  • 基于 CloudWatch 指标推荐实例规格调整
  • 识别位于高成本区域的资源
  • 计算具体优化动作的潜在节省

使用方式

该技能通过 AWS CLI 命令执行分析,主要命令包括:

获取成本与用量:

# 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

查找未使用资源:

# 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

规格调整分析:

# 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

优化工作流

  1. 基线评估:拉取 3-6 个月成本数据,识别前 5 大支出服务,计算增长率。
  2. 快速见效:删除未挂载的 EBS 卷、释放未使用的弹性 IP、停止/终止闲置 EC2 实例、删除旧快照。
  3. 战略优化:分析预留实例覆盖率、审查实例类型与工作负载匹配度、实施 S3 生命周期策略、为非关键工作负载考虑 Spot 实例。
  4. 持续监控:设置带告警的 AWS Budgets、启用成本异常检测、为资源打标签以进行成本分摊、每月进行成本审查会议。

成本优化检查清单

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

示例提示词

分析类:

  • “显示我过去 3 个月按服务拆分的 AWS 成本”
  • “我最贵的 10 个资源是什么?”
  • “比较本月与上月的支出”

优化类:

  • “找出所有未挂载的 EBS 卷并计算节省”
  • “识别 CPU 利用率低于 5% 的 EC2 实例”
  • “根据使用情况建议预留实例购买”
  • “计算删除超过 90 天快照的节省”

实施类:

  • “创建一个删除未挂载卷的脚本”
  • “设置每月 1000 美元的预算告警”
  • “为领导层生成成本优化报告”

最佳实践

  • 始终先在生产环境之外测试
  • 删除前验证资源确实未被使用
  • 记录所有成本优化操作
  • 计算优化工作的 ROI
  • 自动化重复性优化任务
  • 使用 AWS Trusted Advisor 建议
  • 启用 AWS Cost Anomaly Detection

与 Kiro CLI 集成

该技能可与 Kiro CLI 的 AWS 集成配合使用:

# 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"

安全说明

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

限制

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