Buzeli
buzeliSoluções Digitais
成本

EC2→互联网 egress 每 GB 0.09 美元:对 AWS 源站,CloudFront 固定费率为何胜过 Cloudflare

发布于 2026年6月29日

Tráfego saindo de servidores para a internet sendo convertido de custo variável por GB em um bloco de custo fixo

问题:直接 egress 是 AWS 隐形的成本

直接向互联网交付内容(媒体、PDF、重型静态资源)的服务器,按每 GB 0.09 美元支付 AWS egress。在一个每月推送约 12.5 TB 的实例群上,这就是约 1,124 美元/月——这条费用常常藏在"EC2-Other"里,没人把它归因到来源。

架构上的关键:同区域内从 EC2 到 CloudFront 的流量是 0 美元。你只为 CloudFront 的出口付费——固定费率模型由此登场。

固定费率 vs 按 GB 的算术

CloudFront 的固定费率套餐对一大块传输额度收取固定费用,而非按每 GB 计费:

复制
EC2→互联网 直接 egress:           12.5 TB × 0.09 美元/GB ≈ 1,124 美元/月
CloudFront(同区域 EC2 源站):     EC2→CF = 0 美元  +  CF→互联网 固定费率

固定费率套餐(数量级):
  Free      ~0 美元    (小额度)
  Pro       ~15 美元   (~50 TB)
  Business  ~200 美元
  Premium   ~1000 美元

Cloudflare 承载 AWS 源站约 50 TB:  ~25 美元(套餐)+ ~4,500 美元 AWS egress
                                   (AWS 向外的 egress 仍是 0.09 美元/GB)
Cloudflare 置于 AWS 源站前的陷阱:你换了便宜套餐,却仍按 0.09 美元/GB 支付 AWS→Cloudflare 的 egress。而 CloudFront 是 AWS 自家的,把这一段清零。

按实例度量 egress(Cost Explorer 会误导)

Cost Explorer 聚合 egress 的方式使得按实例归因很难。可靠的度量是 CloudWatch 的 NetworkOut 指标,按实例统计。一个 boto3 脚本即可——但有 4 个耗时的真实陷阱:

复制
import boto3
# 陷阱 1:client 的区域必须是实例所在区域(指标是按区域的)
cw = boto3.client("cloudwatch", region_name="sa-east-1")

# 陷阱 2:Period 有上限——30 天 1 个数据点(2592000)可能返回为空;
#         请用更小的粒度再求和,或 Period=86400(按天)。
# 陷阱 3:分页——不用 paginator 会漏掉第一页之后的实例。
ec2 = boto3.client("ec2", region_name="sa-east-1")
paginator = ec2.get_paginator("describe_instances")

for page in paginator.paginate():
    for r in page["Reservations"]:
        for i in r["Instances"]:
            iid = i["InstanceId"]
            m = cw.get_metric_statistics(
                Namespace="AWS/EC2", MetricName="NetworkOut",
                Dimensions=[{"Name": "InstanceId", "Value": iid}],
                StartTime="2026-02-01T00:00:00Z", EndTime="2026-03-01T00:00:00Z",
                Period=86400, Statistics=["Sum"])
            total_gb = sum(d["Sum"] for d in m["Datapoints"]) / (1024**3)
            print(iid, round(total_gb, 1), "GB")
# 陷阱 4:在 PEP 668 环境,安装 boto3 需要 --break-system-packages

NetworkOut 以字节计,按月求和并换算为 GB,得到每个实例真实的 egress——这是决定谁先放到 CloudFront 后面的依据。

经验教训

1. 同区域 EC2→CloudFront 是 0 美元。这正是 CloudFront 固定费率对 AWS 源站取胜的原因:你不为源站→CDN 这一段付费。

2. 便宜的 Cloudflare 套餐不会清零 AWS egress。AWS 源站仍要向 Cloudflare 支付 0.09 美元/GB。算总账,别只看套餐价。

3. 用 NetworkOut 度量,而非 Cost Explorer。CloudWatch 指标按实例归因 egress;Cost Explorer 聚合并隐藏来源。

结论

Egress 是那种悄悄增长的成本,因为它稀释进了聚合的费用行里。通过按实例度量 NetworkOut,并把最大的流出者放到 CloudFront 固定费率套餐后面,约 1,124 美元/月的可变 egress 变成了固定、可预测的成本——不换供应商,用的是 AWS 自己偏好的算术。