你排查过账单之后,会发现费用飙升的元凶往往藏在“EC2-Other”这个分类里。这玩意儿代表EC2实例之外的配套成本:EBS卷、快照、弹性IP、NAT网关——还有最容易被忽略的数据传输费。实例本身规格没变,但流量悄悄把账单吃胖了。

NAT网关:流量费里的隐形冠军

NAT网关本身按小时收费,看着不贵。但它真正吃钱的地方是数据处理费(每GB几分钱),任何从私有子网经过NAT网关的流量都要过一遍这道收费。一个典型场景:私有子网里的应用从S3下载文件,路由表把0.0.0.0/0指向了NAT网关——于是你为每GB数据既付了S3出站流量费,又付了NAT网关的数据处理费。

有团队在EKS里每小时给Redis做一次备份到S3,NAT网关数据传输费一路狂飙。检查发现备份流量没走S3 VPC端点,全从公网绕了一圈。在路由表里加一条指向S3网关端点的规则,这笔费用就归零了。EKS拉镜像(ECR)、系统更新、日志上报给第三方SaaS,这些后台“背景噪音”都会通过NAT网关产生流量费用。

CloudFront:流量出去的方向比大小更关键

从EC2直接往公网吐数据,标准出站流量费每GB在9到12美分之间。AWS的免费额度只有100GB出站流量,超过之后每一分钱都明码标价。

把S3或者其他源站的出站流量套上CloudFront,流量费能大幅降低,最多能省下83%。CloudFront的阶梯定价和打包套餐(比如每月固定200美元包含50TB流量)把浮动费用变成了固定支出,对于那些流量有波峰波谷的业务来说相当划算。

流量排查三步法

第一步:看账单定位凶手。进Cost Explorer按“使用类型(Usage Type)”分组,找出是DataTransfer-InterZone-Bytes(跨可用区)、DataTransfer-PublicOut-Bytes(公网出站)还是NAT网关的数据处理费在狂飙。免费流量和付费流量在账单里是分开列的,直接对比就能筛出异常项。

第二步:开VPC Flow Logs抓现行。VPC Flow Logs会记录每个ENI(弹性网卡)的出入站流量,包含源IP、目标IP、端口、字节数和操作结果(ACCEPT/REJECT)。开启之后用CloudWatch Logs Insights跑个查询,按字节数排个序,立刻知道哪个实例在疯狂往外吐数据。S3的访问日志或者CloudTrail数据事件也能帮你查清楚是谁在频繁下载对象。

第三步:对症下药。找到流量来源后,排查手段相对明确——检查路由表确保S3/DynamoDB走的是网关端点而非NAT网关;跨可用区频繁交互的服务尽量部署到同一个AZ内;用CloudFront作前端缓存挡住重复请求;设置CloudWatch告警在流量异常时发出提醒。

下回收到翻倍的账单,别急着怀疑“谁在半夜开了大实例”。去成本探索器里搜“DataTransfer”,往往是那些安静的、后台跑着的流量,悄悄吞掉你当月预算的大头。