用 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,就能得到更贴近实际签约价的数字。采购决策时,把"月度灵活性"和"年度折扣"放在一起权衡。

如何维护价格数据

  1. 以官网实时报价为准。脚本里的数字只是近似值,下单前把厂商优惠和实际配置代入。
  2. 把"隐藏费用"算进去。出网流量、快照备份、负载均衡都是额外成本,参考服务器成本计算器的拆解思路。
  3. 定期复核。云厂商价格变动频繁,可以按季度更新参数表,避免用过期数据做长期决策。
  4. 关注地区差异。同一厂商不同地区的价格可能差 20%-40%,选型时把目标地区也写进对比。

常见问题

脚本算出的价格能直接下单吗? 不能。它假设单价线性,实际有阶梯价、促销价、不同地区差价;下单前务必以官网实时报价为准。为什么阿里云和腾讯云比海外厂商贵? 这里展示的是简化参数,不代表真实报价;国内厂商常有新用户优惠和包年折扣,实际成本要结合促销计算。年度成本和一次性年付一样吗? 不一样,这里按 12 个月全价累加;年付通常有折扣,把折扣系数乘进去即可。脚本输出能直接在网页上展示吗? 可以,把结果转成 JSON,前端用表格组件渲染即可;也可以配合 cron 定时生成静态 HTML。脚本里的美元价格能直接换成人民币吗? 可以,在输出前乘上汇率系数,或把 plans 里的价格改成人民币报价,保持口径一致即可。

注意事项

  • 脚本假设"每核/每 GB 单价是线性的",实际套餐往往有阶梯定价,大规格机器建议直接查套餐价。
  • 年度成本按 12 个月全价计算,未考虑预留实例折扣。用量稳定的业务用预留实例通常能再省 30% 以上。
  • 这是一个对比工具,不是下单工具。最终以厂商合同和服务器选型指南为准。

更多横向对比内容,欢迎浏览服务器选型分类。