2025/1/1514 min read
AWS账单太高?这些省钱方法帮我们省了40%
说个真事:我们AWS账单从5万降到3万
去年我们公司AWS账单每月5万美元,老板看着肉疼,让我想办法优化。
我花了3个月时间,做了这些事:
- 买了Savings Plans(省了30%)
- 把闲置资源全清理了(省了5%)
- 优化了存储策略(省了10%)
结果:每月账单降到3万美元,一年省了24万刀。
这篇文章把我的经验全分享出来。
AWS的几种付费方式,哪个最省钱?
先搞清楚AWS有哪些付费方式,才知道怎么省钱。
| 方式 | 适合什么情况 | 能省多少 | 灵活度 | 风险 |
|---|---|---|---|---|
| 按需 | 临时用用,不确定要用多久 | 0%(原价) | 超高 | 无 |
| Savings Plans | 长期用,但配置可能变 | 省30-72% | 高 | 低 |
| 预留实例RI | 配置固定,长期用 | 省37-75% | 中 | 中 |
| Spot实例 | 能接受随时被中断 | 省50-90% | 中 | 高 |
| 专用主机 | 有特殊合规要求 | 看情况 | 低 | 无 |
我的建议:
- 刚开始用AWS → 先用按需,摸清楚用量
- 用了3个月以上 → 买Savings Plans,最划算
- 特别稳定的服务 → 买预留实例
- 跑批处理任务 → 用Spot实例
你现在处于哪个阶段?
阶段1 - 刚开始用
- 特征:只看月度账单,不知道钱花哪了
- 能省:30-40%
- 下一步:搞清楚钱都花在哪些服务上
阶段2 - 开始管
- 特征:设了预算提醒
- 能省:20-30%
- 下一步:给资源打标签,分类管理
阶段3 - 在优化
- 特征:用了RI或SP,定期看报表
- 能省:15-20%
- 下一步:自动化清理闲置资源
阶段4 - 很专业
- 特征:有专人负责成本优化,用数据预测
- 能省:10-15%
- 下一步:架构层面优化
最重要的:优化EC2实例
EC2是大头,优化好了能省一大笔。
怎么选实例类型?
别乱选,根据实际需求来:
- 跑代码比较多 → 用C系列(C5, C6g),CPU强
- 需要大内存 → 用R系列(R6i),内存大
- 存数据多 → 用I系列(I3),硬盘快
- 跑AI模型 → 用P/G系列(P4, G5),有GPU
- 普通应用 → 用M或T系列(M6i, T4g),够用就行
**我踩过的坑:**刚开始图省事,全用m5.xlarge,结果发现很多服务根本用不到那么大,换成t3.medium后省了一半钱。
实例配置太大了?看这些指标
| 看什么 | 怎么算浪费 | 怎么办 | 能省多少 |
|---|---|---|---|
| CPU使用率 | 连续7天低于20% | 换小一号的实例 | 省20-30% |
| 内存使用率 | 连续7天低于30% | 换内存小的 | 省15-25% |
| 网络流量 | 峰值都用不到10% | 不需要增强网络 | 省10-15% |
| 硬盘性能 | IOPS一直很低 | 换便宜的硬盘类型 | 省30-40% |
**实操建议:**装个CloudWatch,看一周的监控数据,CPU和内存都很低的话,果断换小实例。
Savings Plans:最划算的省钱方式
Savings Plans(SP)是我最推荐的,灵活又便宜。
**简单说:**你承诺每小时花多少钱(比如$10/小时),AWS给你打折,最多能省72%。
买多少合适?
根据月度账单来:
| 月账单 | 买什么SP | 买多久 | 怎么付 | 覆盖多少 |
|---|---|---|---|---|
| $5000以下 | Compute SP | 1年 | 一次付清最便宜 | 40-50% |
| $5000-2万 | Compute SP | 1年 | 分期付 | 50-60% |
| $2万-10万 | 1年+3年搭配 | 混合 | 分期付 | 60-70% |
| $10万以上 | EC2 Instance SP | 3年 | 一次付清 | 70-80% |
我的经验:
- 别一次买太多,先买50%的量
- 观察3个月,看实际用量
- 再补充购买
我们公司第一次买SP时太激进,买了80%的覆盖率,结果业务调整,有些浪费了。
预留实例高级策略
RI vs SP决策框架
选择Reserved Instances的场景:
- 固定实例类型和区域的长期需求
- 需要容量预留保证
- RDS、ElastiCache等托管服务
选择Savings Plans的场景:
- 实例类型可能变化
- 跨区域部署需求
- 容器化工作负载(Fargate)
第三章:存储成本优化
S3智能分层策略
存储类别选择指南
| 访问频率 | 推荐存储类 | 相对成本 | 检索费用 | 最小存储期 |
|---|---|---|---|---|
| 每日访问 | Standard | 100% | 无 | 无 |
| 每月1-2次 | Standard-IA | 45% | $0.01/GB | 30天 |
| 每季度访问 | Glacier Instant | 32% | $0.03/GB | 90天 |
| 每年访问 | Glacier Flexible | 10% | $0.01-0.03/GB | 90天 |
| 长期归档 | Deep Archive | 5% | $0.02/GB | 180天 |
S3生命周期自动化配置
{
"Rules": [
{
"Id": "AutoTiering",
"Status": "Enabled",
"Transitions": [
{
"Days": 30,
"StorageClass": "STANDARD_IA"
},
{
"Days": 90,
"StorageClass": "GLACIER_IR"
},
{
"Days": 365,
"StorageClass": "DEEP_ARCHIVE"
}
],
"NoncurrentVersionTransitions": [
{
"NoncurrentDays": 7,
"StorageClass": "GLACIER_IR"
}
]
}
]
}
EBS优化最佳实践
卷类型选择决策
| 使用场景 | 推荐类型 | IOPS | 吞吐量 | 成本对比 |
|---|---|---|---|---|
| 系统盘 | gp3 | 3000-16000 | 125-1000 MB/s | 基准 |
| 数据库 | io2 | 64000 | 1000 MB/s | 10x |
| 大数据分析 | st1 | 500 | 500 MB/s | 0.45x |
| 冷数据备份 | sc1 | 250 | 250 MB/s | 0.25x |
第四章:网络和数据传输优化
数据传输成本控制
传输成本优化策略
| 传输类型 | 成本 | 优化方法 | 预期节省 |
|---|---|---|---|
| 跨区域传输 | $0.02/GB | VPC Peering/Transit Gateway | 20-30% |
| Internet出站 | $0.09/GB | CloudFront CDN | 40-50% |
| 跨AZ传输 | $0.01/GB | 同AZ部署/缓存策略 | 60-70% |
| NAT Gateway | $0.045/h+流量 | NAT实例/VPC Endpoints | 30-40% |
CDN和边缘优化
CloudFront成本优化技巧:
- 设置合理的TTL值(静态内容>24小时)
- 使用Origin Shield减少回源
- 启用压缩(Gzip/Brotli)
- 实施智能缓存策略
第五章:数据库成本优化
RDS优化策略
实例优化检查清单
- 使用Aurora Serverless处理可变负载
- 启用自动停止开发环境实例
- 购买RDS预留实例(最高72%折扣)
- 使用只读副本分散读负载
- 定期清理未使用的快照
Aurora vs RDS选择指南
| 考虑因素 | Aurora | RDS | 建议 |
|---|---|---|---|
| 数据量 | >100GB | <100GB | 大数据选Aurora |
| 并发连接 | >1000 | <1000 | 高并发选Aurora |
| 可用性要求 | 99.99% | 99.95% | 关键业务选Aurora |
| 成本敏感度 | 中 | 高 | 预算有限选RDS |
DynamoDB成本控制
按需vs预配置容量决策:
- 流量可预测:使用预配置+自动扩展
- 流量不规则:使用按需模式
- 混合策略:基线预配置+峰值按需
第六章:自动化成本优化
自动化优化工具矩阵
| 工具类别 | AWS原生 | 第三方 | 主要功能 |
|---|---|---|---|
| 成本分析 | Cost Explorer | CloudHealth | 可视化和预测 |
| 资源优化 | Trusted Advisor | Spot.io | 自动化建议 |
| 预算管理 | AWS Budgets | Cloudability | 告警和控制 |
| 标签管理 | Tag Editor | Cloud Custodian | 合规性检查 |
Lambda自动化优化脚本示例
import boto3
import datetime
def auto_stop_dev_instances(event, context):
"""自动停止开发环境EC2实例"""
ec2 = boto3.client('ec2')
# 查找标记为dev的运行实例
instances = ec2.describe_instances(
Filters=[
{'Name': 'tag:Environment', 'Values': ['dev']},
{'Name': 'instance-state-name', 'Values': ['running']}
]
)
instance_ids = []
for reservation in instances['Reservations']:
for instance in reservation['Instances']:
# 检查运行时间
launch_time = instance['LaunchTime']
running_hours = (datetime.now() - launch_time).hours
if running_hours > 8: # 运行超过8小时
instance_ids.append(instance['InstanceId'])
if instance_ids:
ec2.stop_instances(InstanceIds=instance_ids)
return f"Stopped {len(instance_ids)} instances"
return "No instances to stop"
第七章:组织级成本管理
FinOps实践框架
成本责任矩阵
| 角色 | 职责 | KPI指标 |
|---|---|---|
| 财务团队 | 预算管理、账单审核 | 预算准确率 |
| 工程团队 | 资源优化、架构改进 | 资源利用率 |
| 产品团队 | 功能成本评估 | 单位成本 |
| FinOps团队 | 协调优化、工具建设 | 优化节省额 |
成本文化建设
建立成本意识的关键步骤:
- 可见性:每周发送团队成本报告
- 责任制:设立成本优化OKR
- 激励机制:节省成本的奖励制度
- 培训体系:定期AWS成本优化培训
- 工具支持:提供自助成本分析工具
第八章:案例研究
案例1:SaaS企业年省$500K
背景:
- 月度AWS支出:$150K
- 主要服务:EC2(60%)、RDS(20%)、S3(20%)
优化措施:
- 购买3年期Compute Savings Plan(覆盖70%)
- 实施S3智能分层(节省35%存储成本)
- 迁移到Aurora Serverless(节省40%数据库成本)
- 使用Spot实例处理批处理任务
成果:
- 月度成本降至$108K
- 年度节省:$504K(28%)
- ROI:实施成本3个月回收
案例2:游戏公司优化实践
挑战:
- 峰谷流量差异大(10倍)
- 全球多区域部署
- 实时性要求高
解决方案:
- 混合使用按需+Spot+预留实例
- 实施自动扩缩容(基于玩家数量)
- 使用CloudFront加速全球访问
- 数据库读写分离+缓存优化
效果:
- 成本降低35%
- 性能提升20%
- 可用性达到99.99%
第九章:持续优化路线图
季度优化计划模板
Q1:建立基础
- Week 1-2:成本基线评估
- Week 3-4:标签策略实施
- Week 5-8:成本可见性建设
- Week 9-12:初步优化实施
Q2:深度优化
- 预留容量规划和购买
- 存储分层优化
- 网络架构优化
Q3:自动化建设
- 自动化脚本开发
- 监控告警完善
- 成本异常检测
Q4:持续改进
- 架构现代化评估
- 明年预算规划
- 优化效果复盘
总结:从哪开始省钱?
各种优化方法能省多少
| 方法 | 能省多少 | 难不难 | 多久见效 |
|---|---|---|---|
| 买Savings Plans | 20-30% | 简单 | 买了就省 |
| 优化实例配置 | 15-25% | 中等 | 1-2周 |
| 存储分层 | 30-50% | 简单 | 1个月 |
| 网络优化 | 20-30% | 复杂 | 2-3个月 |
| 架构改造 | 40-60% | 很复杂 | 3-6个月 |
我的建议:分三步走
第一步(这周就做):
- 看看AWS账单,找出最贵的10个服务
- 清理不用的资源(闲置EC2、旧快照等)
- 设置预算提醒,防止超支
第二步(下个月做):
- 买Savings Plans,先买50%的量
- 优化实例大小,用监控数据说话
- 存储用分层策略
第三步(长期做):
- 每个月看一次账单,持续优化
- 考虑架构改造(比如用Serverless)
- 建立省钱文化,让团队都有成本意识
**最重要的:**省钱是持续的事,不是一次性的。每个月花半小时看看账单,一年下来能省不少钱。
提示:AWS的价格和服务一直在变,建议每季度回来看看这个指南,更新你的优化策略。