AWS 流量费为什么这么贵:六个计费边界,以及每一条怎么省

AWS 的流量费不是一项,而是按「走了哪条路」分成好几种:出网、同区域跨可用区、跨区域,再加上路径上的 NAT 网关。同一对机器在同一个可用区里用私有 IP 免费,换成公有 IP 就要按 GB 双向收费。

2026-10-11

AWS 的流量费不是一项,而是按「走了哪条路」分成好几种:出网、同区域跨可用区、跨区域,再加上路径上的 NAT 网关。同一对机器在同一个可用区里用私有 IP 免费,换成公有 IP 就要按 GB 双向收费。

AWS 的流量费是最容易失控的一项——它不像实例那样有明确的单价和数量,它是按「这批字节走了哪条路」分别计费的。

所以你会看到很反直觉的现象:两台机器在同一个可用区里,走私有地址互传数据不花钱,走公有地址就要按 GB 付费——而这两种走法的物理路径可能完全一样。

这篇把「到底有几种流量在收费」拆开,再给每条边界的省法。定位方法(怎么在账单里找到是谁在传)在 AWS 账单突然变高怎么排查 里已详细写过,这里不重复。

心智模型:按「路径」收费,不按「距离」

一句话:AWS 收的是路径费,不是距离费。同一批字节,走私有 IP 穿过可用区内部是免费的,绕出去经过 NAT 网关就变成三层收费叠加。改成哪条路,比改传输量更有效。

理解这一点之后,很多「为什么同一区域内传数据还收费」的疑问就有答案了——不是因为在传,是因为你把它放到了收费的那条路上。

六个计费边界一览

官方把跨网络位置的传输分成三类(出网 DTO、同区域跨可用区 DTAZ、跨区域 DTIR),再加上路径上那几个「中转服务」自己的数据处理费,合起来是六个边界:

边界什么情况下触发计费方式
1 出网到互联网(DTO)区域内的资源往公网发数据按 GB,有月度免费额度
2 同区域跨可用区(DTAZ)同一区域内,两个可用区之间传数据每个方向都计费
3 跨区域(DTIR)从一个区域传到另一个区域按 GB,只按源区域收费
4 NAT 网关私有子网的流量经由 NAT 网关出去数据处理费,双向,叠加在上面几项之上
5 Transit Gateway多个 VPC 之间经由中转网关互连数据处理费,即使是同区域流量
6 公有 IPv4 地址用公有 / 弹性 IP 通信(包括同一个 VPC 内部)每个方向都计费

注意第 4、5、6 条的共同点:它们不是「流量费」,而是「因为你走了这条路而产生的附加费」——这正是它们容易被漏掉的原因,因为账单上它们往往散落在不同服务名下,看起来不像同一件事。

边界一:出网到互联网

这是最贵、也最广为人知的一项:区域内的资源把数据发到公网,按 GB 计费,而且是分档递减的——用量越大单价越低。

官方定价页上有一项很有用、但很少被提到的信息:

  • 每月有一定额度的免费出网流量,而且是跨所有 AWS 服务与区域聚合计算的(中国区域与 GovCloud 除外)——不是每个服务、每个区域各送一份。
  • 计费只看源区域:数据从哪个区域流出去,就按那个区域的费率算,接收方所在区域不重复收一次。
  • 出网用量特别大的企业可以向 AWS 单独沟通费率——以官方渠道为准。

对做面向公网的服务的人来说,这一项的大头通常是静态资源与下载。所以下面第五节的省法里,把这一项交给 CloudFront 是最直接的。

边界二:同一区域内跨可用区(最反直觉的一条)

这条是本文最值得记住的一段,因为它违反大多数人的直觉:同一个区域内部,两个可用区之间传数据是要收费的,而且每个方向都收。

关键在于,官方文档对「什么时候免费」的定义非常具体:

同一区域内的情形是否收费
同一可用区内,用私有 IP 通信免费
同一可用区内,用公有 / 弹性 IP 通信收费(每个方向都计费)
跨可用区(无论私有还是公有 IP)收费(每个方向都计费)
同区域内,EC2 与 S3 / DynamoDB / SQS / ECR 等直接传输免费
但路径中经过 NAT 网关 / Transit Gateway / PrivateLink 端点会产生这些服务自己的数据处理费

⛔ 第 1 行和第 2 行的对比是整篇最反直觉的地方:两行描述的是同一对资源、同一个可用区,唯一区别是「用私有地址还是公有地址去连它」——走公有地址就要按 GB 双向付费。这不是距离收费,是路径收费。很多团队习惯用公有端点连自己 VPC 内的数据库或缓存,凭空产生了这笔费用,而且没有任何功能上的好处。

还有一条容易踩的:多可用区部署本身是官方推荐的高可用做法,但跨可用区的持续流量是要付费的。高可用的架构设计和流量成本之间,需要一个明确的取舍(见下面的省法二)。

顺带一个例外,值得记住:应用型与传统型负载均衡器没有跨可用区费用,但网络型负载均衡器对跨可用区到目标的流量是收费的——所以如果你的架构里用了 NLB 并且开了跨区负载均衡,值得单独确认一下这项。以官方定价页为准。

边界三:跨区域

跨区域传输比同区域跨可用区更贵,而且费率随区域对的不同而变化。它最容易出问题的地方不在「偶尔传一次」,而在持续复制:

  • 跨区域数据库复制:只要副本存在,复制流量就一直产生,而且是持续计费的。
  • 跨区域对象存储复制:同理,数据越多、更新越频繁,费用越持续。
  • 多区域主动架构:每两个同步的区域之间都有一份流量。

这里的判断标准不是「要不要容灾」,而是「这个业务真的需要跨区域切换吗」。只想解决机房级故障的话,同区域多可用区通常就够了,成本差一个量级。

另外,跨区域的流量同样只按源区域计费(接收方不重复收),这个规则在估算时很有用:你只需要知道数据从哪儿出去。

边界四到六:NAT 网关、Transit Gateway、公有 IPv4

这三个不是「流量单价」,而是路径上的附加费,也是账单里最容易被忽略的部分——因为它们散落在不同的服务名下,看起来不像同一件事。

  • NAT 网关:按处理的数据量收费,而且是双向的——进去和出来都算。它最典型的浪费场景是:私有子网的机器去访问 S3 或 DynamoDB,流量绕出 VPC 再绕回 AWS 网络,于是你同时付了 NAT 的处理费和出网费。而这件事有一个免费的解法(见省法一)。
  • Transit Gateway:多个 VPC 互连时用它,但它有数据处理费,即使是同一个区域内的流量也要付。如果只是几个 VPC 互连,直接的对等连接更便宜;中转网关的价值在连接数量多到对等连接管不过来的时候。
  • 公有 IPv4 地址:官方已明确所有公有 IPv4 地址都开始收费(2024 年 2 月起生效)。这一条对「顺手给每台机器挂个公网 IP」的习惯影响很大——很多机器根本不需要公网地址,它只需要能被负载均衡器访问,或者在私有子网里待着。

一个自查问句:这台机器真的需要公网地址吗?如果它只在私有子网里接收内网流量,一个公有 IPv4 对它是纯粹的额外成本。把「默认给公网 IP」改成「按需才给」,往往是这类费用最干脆的减法。

五条能立刻落地的省法

按「改动成本 ÷ 省下来的钱」排序,前两条通常不需要动架构:

  1. 给 S3 与 DynamoDB 建网关型 VPC 端点。 这是性价比最高的一条:它免费,却能把「私有子网访问 S3 走 NAT 网关」这个最典型的浪费直接消掉。做完之后,原本那批流量不再经过 NAT,也就不再产生 NAT 的处理费与出网费。
  2. 检查应用是不是在用公有端点连同一个 VPC 内的资源。 数据库、缓存、内部服务——如果连接串里写的是公有地址或弹性 IP,把它换成私有 DNS 名称。零成本、零风险,而且立刻生效(对应边界二的第 2 行)。
  3. 静态内容与 API 响应走 CloudFront。 三个好处叠加:从 S3 到 CloudFront 的传输是免费的、CloudFront 自己的出网费率低于直接出网、而且 CloudFront 每月有独立的免费出网额度。但要注意前提:如果缓存命中率低(缓存规则配得不对、频繁刷新),源站回源流量照样按原价产生——收益来自缓存命中,不是来自接上 CloudFront 这个动作本身。
  4. 打开压缩。 文本类响应(JSON、HTML、JS)压缩后通常能小 60%–80%,而所有按 GB 计的费率都会同比下降。这是配置改动,不是架构改动。
  5. 把频繁互调的服务收进同一个可用区。 对每毫秒都在互相调用的服务(而不是偶尔调一次),让它们尽量落在同一个可用区内,跨可用区只用于故障转移而不是日常通信。代价是可用性设计需要重新权衡——所以这条排在最后,因为它不是纯赚。

还有一个前提性动作:先把标签打全。没有标签的话,你会在账单里看到一笔流量费,却不知道是哪个环境、哪个团队产生的——省法再好也落不到具体对象上。上面五条都只针对流量;实例、磁盘、数据库层面的做法见 AWS 账单看不懂?6 个可执行做法。

常见问题

数据传进 AWS 收费吗?

不收费。入站(data ingress)是免费的,公网上的资源把数据传进 AWS 不产生费用。所有收费项都在「出去」和「绕路」这两件事上——记住这一点,很多猜测可以立刻排除。

同一个区域内的机器互相传数据,为什么会收费?

两种情况:一是跨了可用区(每个方向都计费,这是官方明确的规则);二是在同一个可用区里但用了公有 / 弹性 IP 通信——同一对资源换成私有 IP 就是免费的。这是最值得去代码里查一遍的一条。

我已经有免费额度了,为什么还在收钱?

因为免费额度只覆盖出网到互联网这一项,而且它是跨所有服务与区域聚合计算的(不是每个服务各送一份),中国区域与 GovCloud 还不适用。跨可用区、跨区域、NAT 网关处理费这些不占用这个额度。

流量费占账单多少算正常?

行业观察给出的区间大致是普通 Web 或 API 型负载 6%–12%,数据密集、多区域或流媒体类负载超过 20% 也不罕见(这类比例来自第三方调研,不是官方口径,仅作量级参考)。如果你的占比明显高于同类负载,问题通常不在流量本身,而在路径选错了——回去看边界二和边界四。

怎么查到底是哪个资源在传?

两步:先在 Cost Explorer 里按用量类型分组(出网、跨可用区、NAT 处理量在账单上是不同的条目),再用 VPC 流日志定位到具体的资源与可用区组合。完整流程写在 AWS 账单突然变高怎么排查 里。

其他云厂商也这样收费吗?

流量费是五家的共同成本项,但机制与减免方式各不相同——有的把出网额度打包进产品(比如轻量型产品通常自带流量包),有的在渠道侧能让利。横向对比见 五家云厂商折扣机制对比;如果你只是想降低「实际支付的金额」而不改架构,那是另一个层面的事,见 AWS 折扣与代理定价。

按自己的用量算一遍?

告诉我们区域和配置,工程师给出配置建议与报价;支持 USDT TRC-20 付款。

立即充值