Buzeli
buzeliSoluções Digitais
成本

账单在部分月份上撒谎:当 RI 作为 1 号的单笔费用入账时,如何预测 AWS 成本

发布于 2026年7月10日

Um calendário de mês parcial com um bloco de custo fixo no dia 1 e barras menores pró-rata nos demais dias

背景:在月底之前验证节省

一个交易型应用经历了成本优化:RDS rightsizing 和预留实例采购。管理层在月中的问题是:"节省真的到位了吗?"。轨迹:一月 1,670 美元(基线)→ 三月 1,220 美元(-27%,部分月份)→ 四月预测约 724 美元(-57%)。难点是推算部分月份的四月而不撒谎。

陷阱:幼稚的按比例分摊会高估

本能是拿截至今天的花费乘以本月的比例。这会因两个原因失效:

变更的部分收益。rightsizing 在 15 号生效(本月 16 天收益);RI 在 22 号(9 天)。之前的日子仍然昂贵——按整月均值推算会混淆费率。

No-Upfront RI 不分摊。它作为一笔费用出现,通常在 1 号,相当于整月——而非按日成本。把累计值乘以本月比例会把 RI 算两次。

No-Upfront 预留实例是一次性落地的固定费用,不是被稀释的按小时成本。在按比例分摊时把它当作可变项,是projection部分月份时最常见的错误。

正确的公式

把固定与可变分开,只对可变项按比例分摊:

复制
本月预测 = (RI 固定,整月金额)
             + (截至今天的可变成本 ÷ 已过天数 × 本月天数)
             + (对总额的税)

把 RI 当作单笔费用的校验:
  r6g.xlarge No-Upfront: 0.248 美元/小时 × 24 × 30 ≈ 178.56 美元/月
  账单实际:              178.76 美元   ✓  (作为 1 行入账,而非每小时 720 笔)

把 RI 移出按比例分摊、并正确推算可变项后,预测命中约 724 美元(-57%)——管理层看到的是正确的数字,而非被错误方法抬高的数字。

如何拉取数字

复制
aws ce get-cost-and-usage \
  --time-period Start=2026-04-01,End=2026-04-30 \
  --granularity MONTHLY --metrics UnblendedCost \
  --group-by Type=DIMENSION,Key=USAGE_TYPE \
  --query 'ResultsByTime[].Groups[].{T:Keys[0],V:Metrics.UnblendedCost.Amount}' --output table
# HeavyUsage = RI(固定);BoxUsage = 按需(按比例分摊的可变项)

经验教训

1. No-Upfront RI 是单笔费用,不是按小时成本。把整月金额加一次;永远不要对它按比例分摊。

2. 按比例分摊只适用于可变项(BoxUsage)。预测前把 HeavyUsage 与 BoxUsage 分开。

3. 月中的变更只有部分收益。在 15/22 号生效的 rightsizing/RI 只在随后的日子里节省;不要按整月均值推算。

结论

优化成本是一半工作;不撒谎地证明优化是另一半。部分月份的 AWS 账单把 1 号落地的固定费用与按日的可变成本混在一起——幼稚的按比例分摊会把 RI 算两次。把固定与可变分开后,-57% 的预测在最终发票上站住了脚。