Buzeli
buzeliSoluções Digitais
Custos

Egress EC2→Internet a US$0,09/GB: por que o CloudFront flat-rate ganha do Cloudflare para origem na AWS

Publicado em 29 de junho de 2026

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

O problema: egress direto é o custo invisível da AWS

Servidores que entregam conteúdo (mídia, PDFs, assets pesados) direto para a internet pagam egress AWS a US$0,09/GB. Numa frota medindo ~12,5 TB/mês, isso é ~US$1.124/mês — uma linha que muitas vezes se esconde dentro de "EC2-Other" e ninguém atribui à causa.

O ponto-chave da arquitetura: tráfego de EC2 para o CloudFront na MESMA região é US$0. Você só paga a saída do CloudFront — e aí entra o modelo flat-rate.

A matemática do flat-rate vs por-GB

Os planos flat-rate do CloudFront cobram um valor fixo por uma franquia grande de transferência, em vez de centavos por GB:

Copiar
Saída direta EC2→Internet:        12,5 TB × US$0,09/GB ≈ US$1.124/mês
CloudFront (origem EC2 intra-região): EC2→CF = US$0  +  CF→Internet flat-rate

Planos flat-rate (ordem de grandeza):
  Free      ~US$0    (franquia pequena)
  Pro       ~US$15   (~50 TB)
  Business  ~US$200
  Premium   ~US$1000

Cloudflare p/ ~50 TB de origem AWS:  ~US$25 (plano) + ~US$4.500 de egress AWS→CF
                                     (o egress AWS para FORA continua a US$0,09/GB)
A pegadinha do Cloudflare na frente de origem AWS: você troca o plano por barato, mas continua pagando o egress AWS→Cloudflare a US$0,09/GB. O CloudFront, sendo da própria AWS, zera esse trecho.

Medir o egress por instância (o Cost Explorer engana)

O Cost Explorer agrega egress de forma que dificulta atribuir por instância. A medição confiável é a métrica NetworkOut do CloudWatch, por instância. Um script boto3 resolve — e há 4 armadilhas reais que custam tempo:

Copiar
import boto3
# Armadilha 1: a região do client tem que ser a da instância (métrica é regional)
cw = boto3.client("cloudwatch", region_name="sa-east-1")

# Armadilha 2: Period tem limite — 30 dias em 1 datapoint (2592000) pode vir VAZIO;
#              use granularidade menor e some, ou Period=86400 (diário).
# Armadilha 3: paginação — sem paginator você perde instâncias além da 1a página.
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")
# Armadilha 4: em ambientes PEP 668, instalar boto3 exige --break-system-packages

NetworkOut em bytes, somado no mês e convertido para GB, dá o egress real por instância — a base para decidir quem vai para trás do CloudFront primeiro.

Lições

1. EC2→CloudFront intra-região é US$0. Esse é o motivo de o flat-rate do CloudFront vencer para origem na AWS: você não paga o trecho origem→CDN.

2. Cloudflare barato não zera o egress AWS. Origem na AWS continua pagando US$0,09/GB até o Cloudflare. Faça a conta completa, não só o preço do plano.

3. Meça por NetworkOut, não por Cost Explorer. A métrica do CloudWatch atribui egress por instância; o Cost Explorer agrega e esconde a origem.

Conclusão

Egress é o custo que cresce sem você perceber porque se dilui em linhas agregadas. Medindo NetworkOut por instância e colocando os maiores emissores atrás de um CloudFront flat-rate, ~US$1.124/mês de saída variável viram um custo fixo previsível — sem trocar de provedor, usando a aritmética que a própria AWS favorece.