aws-cost-optimizer
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseAWS Cost Optimizer
AWS成本优化器
Analyze AWS spending patterns, identify waste, and provide actionable cost reduction strategies.
分析AWS支出模式,识别资源浪费,并提供可落地的成本削减策略。
When to Use This Skill
何时使用该技能
Use this skill when you need to analyze AWS spending, identify cost optimization opportunities, or reduce cloud waste.
当你需要分析AWS支出、识别成本优化机会或减少云资源浪费时,可使用该技能。
Core Capabilities
核心功能
Cost Analysis
- Parse AWS Cost Explorer data for trends and anomalies
- Break down costs by service, region, and resource tags
- Identify month-over-month spending increases
Resource Optimization
- Detect idle EC2 instances (low CPU utilization)
- Find unattached EBS volumes and old snapshots
- Identify unused Elastic IPs
- Locate underutilized RDS instances
- Find old S3 objects eligible for lifecycle policies
Savings Recommendations
- Suggest Reserved Instance/Savings Plans opportunities
- Recommend instance rightsizing based on CloudWatch metrics
- Identify resources in expensive regions
- Calculate potential savings with specific actions
成本分析
- 解析AWS Cost Explorer数据以发现趋势与异常
- 按服务、区域和资源标签拆分成本
- 识别月度支出增长情况
资源优化
- 检测闲置EC2实例(CPU利用率低)
- 查找未挂载的EBS卷和旧快照
- 识别未使用的Elastic IP
- 定位未充分利用的RDS实例
- 查找符合生命周期策略的旧S3对象
节省建议
- 推荐预留实例(Reserved Instance)/节约计划(Savings Plans)的适用场景
- 基于CloudWatch指标推荐实例规格调整
- 识别位于高成本区域的资源
- 计算执行特定操作可带来的潜在节省
AWS CLI Commands
AWS CLI命令
Get Cost and Usage
获取成本与使用情况
bash
undefinedbash
undefinedLast 30 days cost by service
过去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
--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 -d '30 days ago' +%Y-%m-%d),End=$(date +%Y-%m-%d)
--granularity MONTHLY
--metrics BlendedCost
--group-by Type=DIMENSION,Key=SERVICE
--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
--time-period Start=$(date +%Y-%m-01),End=$(date +%Y-%m-%d)
--granularity DAILY
--metrics UnblendedCost
undefinedaws ce get-cost-and-usage
--time-period Start=$(date +%Y-%m-01),End=$(date +%Y-%m-%d)
--granularity DAILY
--metrics UnblendedCost
--time-period Start=$(date +%Y-%m-01),End=$(date +%Y-%m-%d)
--granularity DAILY
--metrics UnblendedCost
undefinedFind Unused Resources
查找未使用资源
bash
undefinedbash
undefinedUnattached EBS volumes
未挂载的EBS卷
aws ec2 describe-volumes
--filters Name=status,Values=available
--query 'Volumes[*].[VolumeId,Size,VolumeType,CreateTime]'
--output table
--filters Name=status,Values=available
--query 'Volumes[*].[VolumeId,Size,VolumeType,CreateTime]'
--output table
aws ec2 describe-volumes
--filters Name=status,Values=available
--query 'Volumes[*].[VolumeId,Size,VolumeType,CreateTime]'
--output table
--filters Name=status,Values=available
--query 'Volumes[*].[VolumeId,Size,VolumeType,CreateTime]'
--output table
Unused Elastic IPs
未使用的Elastic IP
aws ec2 describe-addresses
--query 'Addresses[?AssociationId==null].[PublicIp,AllocationId]'
--output table
--query 'Addresses[?AssociationId==null].[PublicIp,AllocationId]'
--output table
aws ec2 describe-addresses
--query 'Addresses[?AssociationId==null].[PublicIp,AllocationId]'
--output table
--query 'Addresses[?AssociationId==null].[PublicIp,AllocationId]'
--output table
Idle EC2 instances (requires CloudWatch)
闲置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
--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
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
--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)
90天以上的旧EBS快照
aws ec2 describe-snapshots
--owner-ids self
--query 'Snapshots[?StartTime<=].[SnapshotId,StartTime,VolumeSize]'
--output table
--owner-ids self
--query 'Snapshots[?StartTime<=
'$(date -d '90 days ago' --iso-8601)'--output table
undefinedaws ec2 describe-snapshots
--owner-ids self
--query 'Snapshots[?StartTime<=].[SnapshotId,StartTime,VolumeSize]'
--output table
--owner-ids self
--query 'Snapshots[?StartTime<=
'$(date -d '90 days ago' --iso-8601)'--output table
undefinedRightsizing Analysis
规格调整分析
bash
undefinedbash
undefinedList EC2 instances with their types
列出EC2实例及其类型
aws ec2 describe-instances
--query 'Reservations[].Instances[].[InstanceId,InstanceType,State.Name,Tags[?Key==].Value|[0]]'
--output table
--query 'Reservations[].Instances[].[InstanceId,InstanceType,State.Name,Tags[?Key==
Name--output table
aws ec2 describe-instances
--query 'Reservations[].Instances[].[InstanceId,InstanceType,State.Name,Tags[?Key==].Value|[0]]'
--output table
--query 'Reservations[].Instances[].[InstanceId,InstanceType,State.Name,Tags[?Key==
Name--output table
Get RDS instance utilization
获取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
--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
undefinedaws 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
--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
undefinedOptimization Workflow
优化工作流
-
Baseline Assessment
- Pull 3-6 months of cost data
- Identify top 5 spending services
- Calculate growth rate
-
Quick Wins
- Delete unattached EBS volumes
- Release unused Elastic IPs
- Stop/terminate idle EC2 instances
- Delete old snapshots
-
Strategic Optimization
- Analyze Reserved Instance coverage
- Review instance types vs. workload
- Implement S3 lifecycle policies
- Consider Spot instances for non-critical workloads
-
Ongoing Monitoring
- Set up AWS Budgets with alerts
- Enable Cost Anomaly Detection
- Tag resources for cost allocation
- Monthly cost review meetings
-
基准评估
- 获取3-6个月的成本数据
- 找出支出最高的5项服务
- 计算增长率
-
快速见效措施
- 删除未挂载的EBS卷
- 释放未使用的Elastic IP
- 停止/终止闲置EC2实例
- 删除旧快照
-
战略性优化
- 分析预留实例覆盖情况
- 评估实例类型与工作负载的匹配度
- 实施S3生命周期策略
- 为非关键工作负载考虑使用Spot实例
-
持续监控
- 配置带告警的AWS预算
- 启用成本异常检测
- 为资源添加标签以实现成本分摊
- 每月召开成本回顾会议
Cost Optimization Checklist
成本优化检查清单
- Enable AWS Cost Explorer
- Set up cost allocation tags
- Create AWS Budget with alerts
- Review and delete unused resources
- Analyze Reserved Instance opportunities
- Implement S3 Intelligent-Tiering
- Review data transfer costs
- Optimize Lambda memory allocation
- Use CloudWatch Logs retention policies
- Consider multi-region cost differences
- 启用AWS Cost Explorer
- 配置成本分摊标签
- 创建带告警的AWS预算
- 检查并删除未使用资源
- 分析预留实例适用机会
- 实施S3智能分层
- 检查数据传输成本
- 优化Lambda内存分配
- 配置CloudWatch日志保留策略
- 考虑多区域成本差异
Example Prompts
示例提示词
Analysis
- "Show me AWS costs for the last 3 months broken down by service"
- "What are my top 10 most expensive resources?"
- "Compare this month's spending to last month"
Optimization
- "Find all unattached EBS volumes and calculate savings"
- "Identify EC2 instances with <5% CPU utilization"
- "Suggest Reserved Instance purchases based on usage"
- "Calculate savings from deleting snapshots older than 90 days"
Implementation
- "Create a script to delete unattached volumes"
- "Set up a budget alert for $1000/month"
- "Generate a cost optimization report for leadership"
分析类
- "展示过去3个月按服务划分的AWS成本"
- "找出我成本最高的10项资源"
- "对比本月与上月的支出情况"
优化类
- "查找所有未挂载的EBS卷并计算可节省的成本"
- "识别CPU利用率低于5%的EC2实例"
- "基于使用情况推荐预留实例购买方案"
- "计算删除90天以上快照可节省的成本"
实施类
- "创建一个删除未挂载卷的脚本"
- "配置每月1000美元的预算告警"
- "为管理层生成一份成本优化报告"
Best Practices
最佳实践
- Always test in non-production first
- Verify resources are truly unused before deletion
- Document all cost optimization actions
- Calculate ROI for optimization efforts
- Automate recurring optimization tasks
- Use AWS Trusted Advisor recommendations
- Enable AWS Cost Anomaly Detection
- 始终先在非生产环境测试
- 删除前确认资源确实未被使用
- 记录所有成本优化操作
- 计算优化工作的投资回报率(ROI)
- 自动化重复的优化任务
- 参考AWS Trusted Advisor的建议
- 启用AWS成本异常检测
Integration with Kiro CLI
与Kiro CLI的集成
This skill works seamlessly with Kiro CLI's AWS integration:
bash
undefined该技能可与Kiro CLI的AWS集成无缝协作:
bash
undefinedUse Kiro to analyze costs
使用Kiro分析成本
kiro-cli chat "Use aws-cost-optimizer to analyze my spending"
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"
undefinedkiro-cli chat "Create a cost optimization plan using aws-cost-optimizer"
undefinedSafety Notes
安全注意事项
- Risk Level: Low - Read-only analysis is safe
- Deletion Actions: Medium Risk - Always verify before deleting resources
- Production Changes: High Risk - Test rightsizing in dev/staging first
- Maintain backups before any deletion
- Use flag when available
--dry-run
- 风险等级:低 - 只读分析是安全的
- 删除操作:中等风险 - 删除资源前务必确认
- 生产环境变更:高风险 - 先在开发/预发布环境测试规格调整
- 执行任何删除操作前先备份
- 尽可能使用参数
--dry-run