EC2→互联网 egress 每 GB 0.09 美元:对 AWS 源站,CloudFront 固定费率为何胜过 Cloudflare
发布于 2026年6月29日

问题:直接 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-packagesNetworkOut 以字节计,按月求和并换算为 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 自己偏好的算术。