折扣攻略只告诉你 RI 能省三到七成,却不说买多少、买几年、买错怎么补救。按决策顺序讲清这三件事,含三条补救路径。
搜「AWS 折扣」,你会看到很多篇文章列出同一串数字:预留实例(RI)相对按需价能低三到七成,节省计划差不多,Spot 最高可到九成。这些数字大体没错,但对一个正准备付钱的人来说,几乎没用。
因为真正的决策不是「要不要买」,而是三件更具体的事:买多少、买几年、以及万一判断错了怎么办。 本文按这个顺序讲,每一件都给判断方法和可执行动作。
先说明适用范围:本文讲的是预留实例(Reserved Instances)。它和节省计划(Savings Plans)是两套东西,后者更灵活但没有转售退出通道——两者的取舍写在 节省计划与预留实例怎么选。再抬一层看:五家的承诺类折扣「锁不锁规格」差别很大(预留实例锁、节省计划不锁),横向对比见 五家云厂商折扣机制对比。
你买的不是「折扣」,是一份现金流承诺
把预留实例理解成「打折券」是大多数误判的起点。它实质上是:你向 AWS 承诺未来 1 年或 3 年、每小时会有这么多用量,AWS 因此给你一个更低的单价。折扣是对这份承诺的对价,不是促销。
这个区别决定了三件事:
- 承诺期内用量不足,钱照付。 买了每小时 10 台实例的承诺,实际只跑 6 台,剩下 4 台的费用照样出现在账单上。它不会因为你没用而退钱。
- 承诺期内用量超出,超出部分按原价。 承诺只覆盖承诺的那部分,多出来的按按需价计费。
- 折扣深浅由「确定性」定价。 年限越长、预付越多、范围越窄(锁定实例族与区域),你能换到的单价越低。你让出的灵活性越多,价格越好。
一句话记住它:预留实例不是省钱的「优惠券」,是用灵活性换单价的合同。所以第一步永远不是「买多少能省最多」,而是「我能确定地放弃多少灵活性」。
也正因为它是合同,才需要认真讨论「买错了怎么办」——这是折扣攻略集体沉默的部分,见后面第五节。
买多少:答案是「稳态基线」,不是当前用量
几乎所有人都栽在这一步:按当前在跑的实例数量去买承诺。 当前用量里包含了大量其实可以弹性化的部分——夜间跑的批处理、促销期才扩容的节点、还没清理干净的测试环境。把这些一起锁进一年承诺,等于给波动付固定价。
正确的做法是算稳态基线:把过去足够长一段时间(建议至少 3 个月,且覆盖一个完整业务周期)的用量按小时排开,找出几乎每个小时都在跑的那部分。只有这部分适合承诺。
| 用量类型 | 特征 | 该不该承诺 |
|---|---|---|
| 稳态基线 | 每小时都在跑,波动很小(如常驻 Web/API 节点) | 适合承诺 —— 这是预留实例的目标 |
| 周期性峰值 | 每天/每周固定时段升高(如日终批处理) | 部分适合 —— 看它是否每天必然发生 |
| 偶发扩容 | 只在促销、发版、压测时出现 | 不要承诺 —— 留在按需或 Spot |
| 尚未清理的闲置 | 忘了关的测试实例、未挂载的磁盘 | 先删掉,不是承诺问题 |
一个实用的自检:如果你把承诺量画成一条水平线,压在过去 3 个月的用量曲线上,理想状态是这条线贴着曲线的下沿(少数时刻略微超出可以接受),而不是穿过曲线的中间。穿过中间意味着约一半时间在为空闲容量付钱。
还有一条容易漏的:先做免费的清理再谈承诺。闲置实例、未挂载的 EBS、没人读的快照、中断的分片上传,这些清掉之后你的基线会明显下降,需要承诺的量也跟着变小。这一步不需要任何承诺,随时可做——先做完再买,顺序反了会多锁一年错误数字。
具体的清理动作与账单结构拆解见 AWS 账单优化 6 个做法。
买几年:1 年与 3 年的取舍不在折扣率
直觉是「3 年折扣更深,所以买 3 年」。这个推理只在你确定 3 年内形态不变时成立。判断点其实有三个,折扣率只是其中一个。
- 实例代际会不会换? x86 换 Graviton(ARM)通常能再省一截,且性能未必下降。如果你 3 年内有这个可能,1 年更合适——因为传统 RI 绑定实例族,换成 Graviton 后原承诺不覆盖新实例。
- 区域会不会变? 承诺绑定区域。业务要迁区域(比如为了靠近用户或满足数据要求),原承诺不跟着走。
- 业务本身能看多远? 早期项目、客户结构还没稳定的业务,1 年。已经跑了两年、架构稳定的存量系统,可以考虑 3 年。
一个折中做法:不要一次性买满 3 年。先用 1 年覆盖稳态基线,观察真实的折扣覆盖率(AWS 控制台会给出承诺利用率与覆盖率),第二年再看要不要把其中一部分转成更长期限。用第一年的真实数据换第二年的确定性,比一开始就赌 3 年稳妥。
别忽略「折扣覆盖率」这个指标:买了承诺之后,控制台会告诉你承诺实际覆盖了多少用量。如果覆盖率长期偏低,说明买多了;如果长期接近 100% 且仍有大量按需用量,说明可以再补一点。这个数字每个月看一次,比买的时候纠结半天有用得多。
如果目标是「换架构也不浪费」,那更合适的工具其实是计算类节省计划(不锁实例族与区域),代价是折扣通常略低于同等条件的预留实例。两者的对比在 节省计划与预留实例怎么选。
三种付款方式:全预付 / 部分预付 / 不预付
预留实例通常提供三档付款方式:全预付(All Upfront)> 部分预付(Partial Upfront)> 不预付(No Upfront),折扣依次变浅,但前期现金压力也依次降低。
- 全预付:一次性付清整个期限,单价最低。适合现金流充裕、且确定这笔资源长期要用。
- 部分预付:付一部分,剩余按月付。折扣介于两者之间,是最常见的选择。
- 不预付:不提前付,按月结。折扣最浅,但几乎不增加财务风险——这也是很多企业采购流程唯一能批准的方式。
选哪档的判断依据不是「哪个折扣最高」,而是你的资金成本与流程约束:
- 如果一次性付款需要走预算审批、耗时数月,那么为多几个百分点等一个季度,通常不划算。
- 如果这笔钱的用途明确、未来两年不会挪作他用,全预付的额外折扣是白拿的。
- 如果公司处在可能调整架构或缩减规模的阶段,不预付的折扣差价比它的退出灵活性便宜得多。
⚠️ 全预付有个容易忽略的后果:钱一旦付出去,「用量不足」就完全变成了沉没成本。部分预付和不预付至少还能在用量下降时减少后续的月付部分。不确定时,选付款方式上的灵活性,而不是年限上的灵活性——前者代价更小。
买错了怎么办:三条补救路径
这是折扣攻略集体不写的部分,但恰恰是最多人需要的。承诺买错了(买多了、规格锁错了、区域要迁了),通常有三条路,代价依次变大。
| 路径 | 适用情况 | 代价 |
|---|---|---|
| 转售(Reserved Instance Marketplace) | 标准 RI 买多了、确实用不完 | 按市场价卖出剩余期限,通常有折价;需要账号在支持的区域且已完成一定期限 |
| 修改(Modify) | 要换实例规格/区域/可用区(同一代际内) | 部分属性可改,改动后折扣重新计算;不是所有属性都能改 |
| 吸收(认赔) | 改动超出允许范围、或转售无人接手 | 继续为不用的容量付费,直到期限结束 |
第一条:转售。 AWS 有官方的 RI 转售市场,你可以把用不完的标准 RI 挂上去卖。但有两条硬限制:一是通常要求该 RI 已经持有并生效一段时间;二是节省计划(Savings Plans)不能转售——这也是「买 RI 还是买 SP」里最实际的一条区别:RI 有退出通道,SP 没有。
第二条:修改。 部分预留实例支持修改属性(在允许范围内调整实例大小、可用区范围等)。如果你的问题是「买大了」,先查能不能改成小规格,比转售更省事。
最省钱的办法其实发生在买之前:把大承诺拆成几份小额承诺分批买。比如确定基线是 10 台,先买 6 台,观察一个月再补 2 台。分批买的代价几乎为零(同条件单价相同),但保留了逐步修正的机会。 一次性买满,等于放弃所有修正机会去换一个不存在的「批量折扣」。
第三条:认赔。 当改动超出允许范围、且转售没能成交时,剩下的就是为闲置承诺付费到期限结束。此时能做的补救是尽量把工作负载迁到这份承诺覆盖的资源上——比如把原本跑在按需实例的任务迁过来,至少让承诺被真实用上。
到期那天会发生什么
一个高频事故:预留实例到期后,账单突然变贵,而没人提前知道。 因为到期不会自动续,也不会有明显提醒——它只是静静地从「折扣价」变回「按需价」。
- 到期不等于停止服务。 资源照常运行,只是单价回到按需。所以事故的表现不是「服务挂了」,而是「这个月账单涨了一截」。
- 提前建立到期清单。 把所有承诺的到期日记在一个地方,按到期前 60 天 / 30 天设提醒。承诺量大时,这份清单比任何优化技巧都重要。
- 到期前重算基线,不要直接续。 到期正好是一次免费的修正机会——重新算稳态基线,按新数字买。很多团队习惯性「照原样续」,于是把三年前的错误又续了一轮。
还有一层不少人不清楚的:上面讲的都是官方折扣,作用在 AWS 给你的账单单价上。除此之外,通过代理商开通与结算,降低的是你实际支付的金额——两者在不同层面,可以同时享受,不是二选一。这层逻辑写在 AWS 折扣与代理定价。
常见问题
预留实例和节省计划,到底买哪个?
看你要放弃哪种灵活性。预留实例锁定「实例族 + 区域」,折扣通常更深,且可以转售(有退出通道);节省计划锁定的是金额而非具体实例,使用更灵活,但不能转售、不能取消。如果未来可能换实例族或迁区域,选节省计划;如果形态确定、又希望留一条退出通道,选预留实例。详细对比见 节省计划与预留实例怎么选。
该按峰值买还是按平均买?
都不要。按稳态基线买——即几乎每小时都在跑的那部分。平均值里仍然包含了大量只在部分时段出现的用量;峰值则更极端。把用量按小时画出来,贴着下沿画一条线,那条线才是承诺量。
买多了能退吗?
预留实例不能退款,但可以拿到官方转售市场出售剩余期限(有折价,且通常有持有期限要求)。节省计划既不能退款也不能转售,一旦买定就持有到期。所以「买多了」的代价在节省计划上更硬——这也是保守起步的另一个理由。
3 年期的折扣高那么多,为什么不直接买 3 年?
因为 3 年期锁死的不只是价格,还有实例族与区域。如果你 3 年内可能迁移到 Graviton(ARM)、换区域、或者业务规模有大幅变化,那么 3 年期省下的折扣很可能抵不过一次架构调整带来的浪费。判断标准是「你能看多远」,不是「折扣差多少」。
一次性买满是不是有额外折扣?
没有。同条件的预留实例单价与购买数量、购买批次无关,分 5 次买和一次买 5 份,单价一样。所以分批买没有任何价格代价,却能保留逐步修正的机会。这是本文里性价比最高的一条建议。
买了预留实例,还能再叠加代理渠道的折扣吗?
可以,两者作用在不同层面:预留实例降低的是AWS 账单上的单价,代理折扣降低的是你实际结算支付的金额。它们不冲突,可以同时生效。机制说明见 AWS 折扣与代理定价;如果你在比较「官方直付」和「代理渠道」哪个划算,见 AWS 官方直付与代理渠道怎么选。