用 Python 做多云厂商年度预算对比
年中的采购复盘或者新项目立项时,"各家云厂商一年到底要花多少"是绕不开的问题。逐家去官网查价格再手动汇总,容易漏项也容易算错。本文提供一个可扩展的 Python 脚本,把多家厂商的规格单价写进字典,一键算出月度与年度成本,并自动排序。脚本本身不追求精确,目的是把对比口径统一起来:同样的 CPU、内存、年限,放在同一张表里看,谁贵谁便宜一目了然。
脚本实现
plans = {
"aliyun": {"cpu": 18, "ram": 7, "base": 10},
"tencent": {"cpu": 17, "ram": 6.5, "base": 9},
"vultr": {"cpu": 10, "ram": 4.5, "base": 4},
"aws": {"cpu": 15, "ram": 6, "base": 8},
"hetzner": {"cpu": 6, "ram": 3, "base": 3},
}
def monthly_cost(cpu_core: int, ram_gb: int) -> dict:
result = {}
for name, p in plans.items():
result[name] = round(p["base"] + p["cpu"] * cpu_core + p["ram"] * ram_gb, 2)
return dict(sorted(result.items(), key=lambda x: x[1]))
def yearly_cost(cpu_core: int, ram_gb: int) -> dict:
monthly = monthly_cost(cpu_core, ram_gb)
return {name: round(cost * 12, 2) for name, cost in monthly.items()}
print(monthly_cost(2, 4))
print(yearly_cost(2, 4))
参考:各厂商官方价格页(下单前务必以官网实时报价为准)
想加厂商怎么扩展
在 plans 字典里加一行就行:给每个厂商填上每核单价、每 GB 内存单价和基础费。例如要加入 DigitalOcean,就写 "do": {"cpu": 10, "ram": 5, "base": 4}。如果某厂商有阶梯定价(比如首年折扣、量越大单价越低),可以把 base 换成函数,或继续在 monthly_cost 里加判断。需要加入更多厂商时,同样在字典里追加即可,排序和汇总逻辑完全不用改。
输出示例
以 2 核 4G 为例,脚本输出:
月度: {'hetzner': 27.0, 'vultr': 42.0, 'aws': 62.0, 'tencent': 69.0, 'aliyun': 74.0}
年度: {'hetzner': 324.0, 'vultr': 504.0, 'aws': 744.0, 'tencent': 828.0, 'aliyun': 888.0}
价格参数表
| 厂商 | 每核单价 | 每 GB 内存单价 | 基础费 |
|---|---|---|---|
| aliyun | 18 | 7.0 | 10 |
| tencent | 17 | 6.5 | 9 |
| vultr | 10 | 4.5 | 4 |
| aws | 15 | 6.0 | 8 |
| hetzner | 6 | 3.0 | 3 |
一个真实场景
团队要给一个 2 核 4G、月流量 1TB 的内容站做三年预算。脚本算出的年度成本从 hetzner 的 324 到 aliyun 的 888,三年总价差超过 1600。这个差距足以影响服务器选型决策——尤其当业务对"性价比优先"有明确要求时。这个场景也说明:如果预算主要花在流量上,把厂商的流量计费规则一起算进去,比单纯看规格价更贴近实际。
把脚本接入月度报表
预算对比不只是一次性动作。把脚本的 yearly_cost 输出接入到你的月度报表里,每月跑一遍,就能看到各厂商成本随配置变化的趋势。做法很简单:让脚本输出 CSV,用 Python 的 csv 模块写文件,再交给报表工具或简单的表格模板渲染。这样当某家厂商调价时,报表能第一时间反映出来,而不是等到续费账单才后知后觉。报表里建议同时展示三个月趋势和年度预估两栏,方便管理层快速判断成本走向。
年度预算与预留实例
年度预算是按 12 个月全价累加的。如果业务用量稳定,厂商的预留实例或包年通常能再省 30% 以上;把折扣系数写进脚本,例如在 yearly_cost 里乘 0.7,就能得到更贴近实际签约价的数字。采购决策时,把"月度灵活性"和"年度折扣"放在一起权衡。
如何维护价格数据
- 以官网实时报价为准。脚本里的数字只是近似值,下单前把厂商优惠和实际配置代入。
- 把"隐藏费用"算进去。出网流量、快照备份、负载均衡都是额外成本,参考服务器成本计算器的拆解思路。
- 定期复核。云厂商价格变动频繁,可以按季度更新参数表,避免用过期数据做长期决策。
- 关注地区差异。同一厂商不同地区的价格可能差 20%-40%,选型时把目标地区也写进对比。
常见问题
脚本算出的价格能直接下单吗? 不能。它假设单价线性,实际有阶梯价、促销价、不同地区差价;下单前务必以官网实时报价为准。为什么阿里云和腾讯云比海外厂商贵? 这里展示的是简化参数,不代表真实报价;国内厂商常有新用户优惠和包年折扣,实际成本要结合促销计算。年度成本和一次性年付一样吗? 不一样,这里按 12 个月全价累加;年付通常有折扣,把折扣系数乘进去即可。脚本输出能直接在网页上展示吗? 可以,把结果转成 JSON,前端用表格组件渲染即可;也可以配合 cron 定时生成静态 HTML。脚本里的美元价格能直接换成人民币吗? 可以,在输出前乘上汇率系数,或把 plans 里的价格改成人民币报价,保持口径一致即可。
注意事项
- 脚本假设"每核/每 GB 单价是线性的",实际套餐往往有阶梯定价,大规格机器建议直接查套餐价。
- 年度成本按 12 个月全价计算,未考虑预留实例折扣。用量稳定的业务用预留实例通常能再省 30% 以上。
- 这是一个对比工具,不是下单工具。最终以厂商合同和服务器选型指南为准。
更多横向对比内容,欢迎浏览服务器选型分类。