收到账单那一刻血压升高,这事儿我太有画面感了。上个月还稳稳的几百块,这个月直接翻了好几倍,老板走过来敲桌子问你怎么回事,你总不能说"我啥也没干啊"。

别慌,AWS账单虽然条目细碎,但突然飙高的元凶往往就那么几类。咱们像验尸一样,一项一项剖开看,总能找到那个吃钱的怪物。

第一步:打开成本探索器,别盯着总数看

很多人打开账单,看到总金额就慌了,盯着那个数字发呆半天。正确做法是直接点进 Cost Explorer(成本探索器),把时间维度拉到"每日"或者"每小时",维度按"服务(Service)"分组。

这一步能立刻告诉你:到底是EC2涨了,还是S3涨了,还是冒出个你根本不认识的服务在扣钱。找到那个涨得最离谱的服务,再往下钻。

举个例子,如果你看到"EC2 - Other"这个分类突然蹿到第一,八成是开了什么预留实例之外的按需补货,或者开了Savings Plans之外的"超量"计费。

第二站:NAT网关和流量费——隐藏的吸血鬼

这玩意儿是EC2费用里最容易让人懵圈的。NAT网关本身按小时收费(大约每小时4分钱美金),看着不贵,但它处理的数据流量每GB要另收几分钱

如果你的业务需要从私有子网往外传大量数据(比如爬虫往外抓数据、视频文件上传到第三方),这笔流量费会悄悄垒到让你惊讶。去EC2控制台里找到"NAT Gateways",看一眼"Bytes Through"这个指标,如果流量异常高,检查一下是不是哪个服务在疯狂往外吐数据。

省钱小动作:如果只偶尔需要外网访问,考虑用NAT Instance(自己搭的NAT实例)或者VPC Endpoint(不走公网,省流量费),虽然配置稍微麻烦点,但长期能省不少。

第三站:快照和旧EBS卷——遗留在角落的定时炸弹

这是另一个新手常踩的坑。你删了一台EC2,但创建时勾选的"自动快照"还在按计划拍照,或者你手动做的快照一直躺在那里没清理。一个EBS快照按存储容量收费,100GB的快照一个月大概收6-7美元,几十个快照累加下来,几百块钱就没了。

快速排查:去EC2控制台左边菜单找"Snapshots",看一眼"Owned by me"下面的快照列表。那些创建时间超过3个月、而且关联的实例早就挂了的,该删就删,别心疼。

同样道理,你以为删了EC2就完事了?挂载的EBS卷默认不随实例删除。你去"Volumes"列表里翻一下,那些状态是"available"(可用)但没挂到任何实例上的卷,就是没人认领的孤儿,每个月照常收费。全部清理掉,能省一笔可观的费用。

第四站:S3存储——别让旧版本拖死你

S3的账单突然变高,一般两种情况:

  1. 启用了版本控制:一个文件被覆盖或删除了,旧版本还在后台存着,你要不主动清理,它们会一直堆着。去S3控制台打开生命周期规则(Lifecycle),设置"非当前版本"在30天或60天后自动过期删除。

  2. 存储类型选错了:数据访问频率很低(比如归档日志),结果你选的是标准存储(STANDARD),单价高。应该换成S3 Glacier Instant Retrieval或者Glacier Deep Archive,价格能差好几倍。切换之前确认一下业务确实不需要秒级访问。

另外,S3还有一笔"请求费"(PUT/GET请求),如果某个应用在疯狂循环读写小文件,这笔费用也可能飙升。去CloudWatch看S3的请求指标,谁叫得最凶就能揪出来。

第五站:闲置的负载均衡器和弹性IP

负载均衡器(ALB/NLB)和弹性公网IP(EIP)都是按小时收费的,哪怕你一个请求都没处理,它照样扣钱。

去EC2控制台看一眼"Load Balancers"列表,那些创建了但没挂后端实例的、或者测试完就忘在那儿的,直接删掉。弹性IP也一样——如果你的EIP没有绑定到正在运行的实例,每小时也要收几分钱,几个闲置IP一天下来差不多就是一杯奶茶钱。

第六站:检查是不是开了"自动扩缩容"没设上限

如果你的Auto Scaling Group(自动扩缩容组)设置里,最大实例数(Max)配得太大了,遇上流量尖峰,它可能一口气给你开出几十台机器。

去EC2控制台找到Auto Scaling Groups,看一眼"Current"和"Desired"的数量。如果远超你预期,赶紧调低最大实例数或者修改扩缩容策略。同时把CloudWatch告警配好,当实例数超过某个阈值时给你发通知,别等月底再发现。

最后一招:用Cost Anomaly Detection设置预警

别老等账单出来才后悔。AWS有个叫 Cost Anomaly Detection(成本异常检测) 的工具,你给它设个阈值,它每天扫描你的花费模式,发现异常飙升就给你发邮件或Slack通知。这功能比月底收到账单再追查要有用得多,相当于给你上了个全天候的"费用哨兵"。

排查账单飙升,不用焦虑。按"服务分组→找最大增长项→进入具体资源列表→清理僵尸资源"这条线走一遍,通常半小时内就能找到病根。省下来的钱,拿去换几杯好喝的咖啡不香吗。