账单涨了先别改任何东西。用 Cost Explorer 按服务、再按用量类型两级下钻定位真凶,再对照七类反直觉的持续计费:免费额度用尽、实例终止后残留的卷与快照、被禁用区域里的资源,以及关账号后仍在计费的承诺。
账单上个月 520,这个月预估 780。没有主动扩容,没有大版本发布,CPU 利用率正常,应用也健康——这种账单是最容易查错方向的。
最常见的反应是「先把实例降配」。但官方文档和实际案例都指向同一个结论:你最初怀疑的资源,往往不是真凶。 涨得最凶的常常是数据流转,以及那些你以为早就删掉了的资源。
这篇讲的是定位流程,不是省钱清单——省钱的做法见 AWS 账单看不懂?6 个可执行做法。
排查第一原则:先别改任何东西
成本排查的第一条规则很反直觉:在弄清楚钱花在哪之前,不要优化。
- 不要急着终止实例、降配、删快照、摘掉 NAT 网关、关掉日志——这些动作可能省钱,也可能把生产搞挂。
- 排查的目标是先定位,不是先省钱。顺序反了,你可能删掉一个还在用的资源,而真实原因继续涨。
- 账单本身不会骗人,它只是没告诉你为什么。这一篇就是把这个「为什么」拆出来。
⛔ 先定位、后动手,这不是谨慎,是因为很多意外扣费在「删掉某个东西」之后才真正开始——比如实例被终止了,但它挂的磁盘还在,账单里的那一项从此变成「没人认得出来的费用」。
第一步:把位置钉死(两级分组)
打开 Cost Explorer,而不是账单摘要页。区别很关键:摘要页告诉你「多少」,Cost Explorer 告诉你「为什么」。
按顺序做三件事:
- 按服务分组:立刻能看出涨幅来自 EC2、S3、数据传输,还是完全没想到的某个服务。
- 把日期范围收窄:缩到暴涨开始的那几天,能确定它是从哪天开始的,而不只是「涨了」。
- 再按用量类型分组:这一步才真正把「服务级」细化到「具体是什么在计费」,也是本篇第二步的内容。
一个典型的对比结果长这样(数字是示例,用于说明结构):
| 服务 | 上月 | 本月 | 变化 |
|---|---|---|---|
| EC2 | $125 | $132 | +$7 |
| RDS | $91 | $94 | +$3 |
| S3 | $18 | $21 | +$3 |
| 数据传输 | $61 | $168 | +$107 |
| NAT 网关 | $32 | $96 | +$64 |
| 其他 | $45 | $48 | +$3 |
这一步的结论经常是:你怀疑的那个服务几乎没动,涨的是流量。EC2 只涨了 7 块钱——那么「降配实例」这个方向,从一开始就是错的。
第二步:按用量类型细分,这一步才看得出真凶
服务级分组只能到「EC2 涨了」。把分组维度从「服务」换成「用量类型」,才会出现这类条目:
- DataTransfer-Out-Bytes —— 出网流量,按 GB 计费。
- DataTransfer-Regional-Bytes —— 跨可用区或跨区域的流量。
- NatGateway-Bytes —— NAT 网关处理的数据量。
- NatGateway-Hours —— NAT 网关存在的小时数。
看到这里,问题就从「账单问题」变成了「架构问题」:是什么在往这些通道里灌流量? 可能的答案包括:一个后台任务在定时拉大数据集、部署流程在反复拉容器镜像、某个服务把本该内网调用的流量绕到了 NAT 网关出公网。
到这里才是去看 CloudWatch 网络指标的时候,必要时再上 VPC Flow Logs 定位到具体资源。要提醒的是:NAT 网关按处理量计费,不只是按小时——它「在跑」这件事本身很便宜,它「处理了多少流量」才是账单来源。以官方定价页为准。这些计费边界的完整拆解(一共有六个,以及每一条怎么省)见 AWS 流量费为什么这么贵。
七类「反直觉的持续计费」
以下七类是官方文档专门列出、且实际最高频的意外费用来源。共同点是:它们都不像「在运行的东西」,但都在计费。
| 类别 | 为什么会一直扣钱 | 怎么确认 |
|---|---|---|
| 1. 免费套餐额度用尽 | 额度用完(或到期)后自动转为按需计费,账号不会因此关闭,也不会提醒你 | 官方免费套餐页可看当前与预估用量 |
| 2. 实例终止后残留的磁盘 | 存储卷不随实例消失——你终止了实例,卷还原封不动地留着并继续计费 | 去 EBS 控制台直接看有没有「未挂载」的卷 |
| 3. 快照 | 快照是独立资源,长期留存并逐个累积,很容易忘记 | 按创建时间排序看最老的快照 |
| 4. 被禁用区域里的资源 | 关掉区域不等于删掉资源:资源继续计费,但你已经访问不到它了 | 禁用区域前先把该区域资源全部终止 |
| 5. 服务间互相创建的资源 | 有些服务会替你在别的服务里创建资源(例如托管服务背后的实例、卷、日志组) | 按服务分组时留意你没主动开过的服务 |
| 6. 闲置的负载均衡器与 NAT 网关 | 它们按存在计费(小时费),即使没有流量;NAT 网关还叠加按处理量计费 | 检查没有后端或长期零流量的实例 |
| 7. 公共 IPv4 地址 | 官方文档把地址类资源单列为意外费用来源;这类计费规则近年有调整 | 以官方定价页为准,不要用旧文章的数字 |
一个 5 分钟的自检动作:把上面第 2、3、6 条对应的控制台各开一遍,按「最老/最久未使用」排序。这三处是「孤儿资源」最集中的地方,而且清掉它们不会影响任何在跑的东西——这是少数可以放心先动手的地方。
关账号不等于停止计费
这是七类之外单独值得讲的一类,因为它的触发动作很明确:你关了账号,账单却没停。
官方文档写得很清楚,账号关闭后仍可能收到账单,原因包括:
- 关闭当月已产生的用量,会在下个账期正常出账。
- 仍在生效的预留实例:会继续计费,直到预留期结束。
- 仍在生效的节省计划:会继续计费,直到计划期结束。
- Marketplace 订阅不会随账号关闭自动取消:需要先终止该订阅下的所有软件实例,再去订阅管理页取消。
另外,账号关闭后的一段时间内你仍然可以登录进去查看还活着的资源、历史账单并付款。
⛔ 所以「项目结束就关账号」这个动作,前提是账号里没有未到期的承诺。 关之前先确认:有没有还没到期的预留实例或节省计划。承诺类折扣各家规则不同(有的锁规格、有的承诺金额),横向对比见 五家云厂商折扣机制对比;节省计划的退货与到期规则见 AWS 节省计划怎么买。
为什么这些资源会一直在扣钱
上面七类看似互不相关,其实共享同一个心智模型——换掉它,很多「莫名」的账单立刻就有解释了:
AWS 是按「资源存在」收费,不是按「资源在干活」收费。 本地的文件放着不花钱,云上的一个卷、一个地址、一个负载均衡器——只要存在,就在计费。
所以正确的自检问句不是「它还在跑吗」,而是「它还在吗」。这个差别决定了你会不会去检查那些「早就没用了但我以为会自动消失」的东西。
顺着这个模型,账单增长通常只有三种成因:用量自然增长(请求量、流量、存储慢慢累积)、某个资源被自动创建或遗忘(就是上面七类)、以及单价跳变(额度用尽、承诺到期)——排查时先分清是哪一种,方向就定了。
提前被告知:三个能自动预警的设置
排查是被动的。下面三件事加起来十几分钟,但它把「月底才发现」变成「几天内就知道」——这也是账单管理真正的分界线:
| 设置 | 作用 | 为什么值得开 |
|---|---|---|
| AWS Budgets(预算) | 对成本或用量设阈值,按 50% / 80% / 100% 这类百分比分级告警 | 把「月底看一眼」变成「越线就收到通知」 |
| 成本异常检测 | 自动学习你的用量模式,检测到异常时告警,并提供根本原因分析(可按服务、账号、用量类型、区域等维度看) | 固定阈值抓不住「没有规律的突增」,机器学习的方式更擅长这个 |
| 账单告警(估算费用) | 对「预估费用」设告警,在明细还没算出来之前就预警 | 作为预算告警之外的一层早期预警 |
还有一件常被跳过但同样重要的事:给资源打标签(项目 / 环境 / 负责人)。没有标签的资源在账单里是隐形的——涨了你也无法归因到哪个团队、哪个环境。这件事的成本很低,收益是「以后每次排查都能直接定位」。
这三件事和成本优化本身是两回事:它们不省钱,它们让你早知道。 在这个基础上再谈节省计划、预留实例这类承诺类折扣,才有稳定的基线可以判断(见 AWS 节省计划怎么买)。另外要分清一层关系:官方折扣降低的是账单上的单价,通过渠道结算降低的是你实际支付的金额,两者作用在不同位置——见 AWS 折扣与代理定价。
常见问题
我什么都没做,账单为什么会涨?
先分清三种成因:用量自然增长(请求量、流量、存储累积,最容易被忽略)、资源被自动创建或遗忘(上面七类)、单价跳变(免费额度用尽、承诺到期、计费规则调整)。三者的排查路径完全不同——第一种要做架构优化,第二种要清资源,第三种要重新算价格。
一定要等出账才能看到费用吗?
不用。Cost Explorer 的数据是接近实时的(会有一定延迟),所以当月就能看到趋势,不用等到账单出来。这也正是「账单出了才发现」这个被动模式可以改掉的原因——配合异常检测,多数突增能在几天内被识别。
已经产生了意外费用,能申请减免吗?
官方文档明确说明可以对账单提出询问、并可联系支持处理。但要清醒地看待结果:申诉不等于减免,能否调整取决于具体情况与政策,以官方渠道的答复为准。与其事后申诉,不如把上面三个告警开起来。
实例我已经删了,为什么还在扣钱?
因为卷、快照、地址、负载均衡器这些是独立资源,不随实例一起消失。这是最常见的误解来源。去对应控制台按「未挂载 / 最久未使用」排序找一遍,通常几分钟就能定位。
怎么防止以后再发生?
三步:开预算与异常告警(早知道)、给资源打标签(能归因)、每月做一次孤儿资源巡检(卷、快照、地址、闲置负载均衡器各看一遍)。这三件事都不省钱,但它们把「每月被账单击中一次」变成「异常几天内被处理掉」。