
关于
自动清理未使用的 AWS 资源以降低成本,识别闲置实例、孤立存储卷、未使用的弹性 IP 等浪费资源。
name: aws-cost-cleanup description: "自动清理未使用的AWS资源以降低成本" risk: safe source: community date_added: "2026-02-27"
AWS成本清理
自动识别和移除未使用的AWS资源以消除浪费。
何时使用此技能
当你需要自动清理未使用的AWS资源以降低成本和消除浪费时使用此技能。
自动清理目标
存储
- 未附加的EBS卷
- 旧EBS快照(>90天)
- 不完整的S3分段上传
- 版本化存储桶中的旧S3版本
计算
- 已停止的EC2实例(>30天)
- 未使用的AMI及关联快照
- 未使用的弹性IP
网络
- 未使用的弹性负载均衡器
- 未使用的NAT网关
- 孤立的ENI
清理脚本
安全模式(仅报告)
#!/bin/bash
# 列出未附加的EBS卷
aws ec2 describe-volumes \
--filters Name=status,Values=available \
--query 'Volumes[].{ID:VolumeId,Size:Size,Created:CreateTime}' \
--output table
# 列出已停止超过30天的EC2实例
aws ec2 describe-instances \
--filters Name=instance-state-name,Values=stopped \
--query 'Reservations[].Instances[].{ID:InstanceId,Type:InstanceType,Stopped:StateTransitionReason}'
# 列出未使用的弹性IP
aws ec2 describe-addresses \
--query 'Addresses[?AssociationId==null].{IP:PublicIp,AllocationId:AllocationId}'
清理模式(需确认)
#!/bin/bash
# 删除未附加的EBS卷
VOLUMES=$(aws ec2 describe-volumes --filters Name=status,Values=available --query 'Volumes[].VolumeId' --output text)
for vol in $VOLUMES; do
echo "删除卷: $vol"
aws ec2 delete-volume --volume-id "$vol"
done
# 释放未使用的弹性IP
EIPS=$(aws ec2 describe-addresses --query 'Addresses[?AssociationId==null].AllocationId' --output text)
for eip in $EIPS; do
echo "释放EIP: $eip"
aws ec2 release-address --allocation-id "$eip"
done
成本估算
运行清理前,估算潜在节省:
- EBS卷:$0.08-0.125/GB/月
- 弹性IP(未使用):$3.65/月
- NAT网关:$32.40/月 + 数据处理费
- 停止的实例EBS:按卷大小计费
兼容工具
Claude CodeCursor
标签
运维部署

