12 puntos por GN⁺ 2025-11-21 | 1 comentarios | Compartir por WhatsApp
  • Un caso en el que un error de configuración de red de VPC y NAT Gateway en AWS provocó costos de transferencia de datos a S3 de unos $900 en un solo día y más de $1,000 acumulados en un mes
  • Aunque suele decirse que la transferencia de EC2 a S3 es gratuita, si pasa por un NAT Gateway dentro de la VPC se generan cargos por procesamiento de datos
  • La causa del problema fue la falta de un VPC Gateway Endpoint para S3, es decir, no existía una configuración para conectarse directamente a S3 sin pasar por el NAT Gateway
  • El Gateway Endpoint es gratuito y no genera cargos por transferencia de datos, y puede configurarse fácilmente con Terraform, entre otras herramientas
  • Es un caso que muestra la importancia de vigilar los costos y revisar la configuración de VPC Endpoint al operar infraestructura en AWS

Contexto del problema

  • Geocodio usa AWS para replicar en S3 archivos internos de datos geográficos de gran volumen
    • Los datos incluyen puntos de direcciones, datos de límites e información censal, con tamaños que van desde varios GB hasta cientos de GB
    • Se requiere sincronización periódica desde una plataforma ETL alojada en Hetzner hacia la infraestructura de procesamiento en AWS
  • Los altos costos de transferencia de datos en AWS son una queja común en toda la industria, y Cloudflare y Corey Quinn, entre otros, han señalado este problema
  • Antes de iniciar el proyecto, el autor revisó la estructura de costos y estimó el gasto confirmando que
    1. la transferencia EC2–S3 dentro de la misma región es gratuita
    2. la subida de datos a S3 (ingreso) es gratuita

Costos inesperados

  • Después de desplegar el proceso de sincronización con S3, recibió una alerta de anomalía de AWS Cost Anomaly Detection
    • En un solo día, el volumen de transferencia de datos del NAT Gateway fue de 20,167.32GB, con un costo de $907.53
    • El costo acumulado del mes ya había superado los $1,000
  • Ante la idea de que la transferencia EC2–S3 era gratuita, investigó por qué se estaban cobrando cargos del NAT Gateway

Análisis de la causa: paso por NAT Gateway

  • Cuando una VPC usa un NAT Gateway, el tráfico hacia S3 también se enruta por defecto a través del NAT Gateway
    • Incluso si las solicitudes van a servicios de AWS dentro de la misma región, si pasan por NAT se aplica un cargo por procesamiento de datos de $0.045 por GB
  • Por eso, aunque la transferencia entre EC2 y S3 sea gratuita, sí se generaron costos por el NAT Gateway
  • La solución es crear un VPC Gateway Endpoint para S3
    • Permite una conexión directa desde la VPC hacia S3 sin pasar por NAT Gateway ni Internet Gateway
    • Es totalmente gratuito, sin cargos por hora ni por transferencia

Proceso de solución

  • Como la infraestructura se administraba con Terraform, se agregó el recurso de Gateway Endpoint y se vinculó a la tabla de rutas
    • AWS actualizó automáticamente el enrutamiento para enviar el tráfico hacia S3 al Endpoint en lugar del NAT Gateway
  • Después de eso, dejaron de generarse cargos relacionados con el NAT Gateway

Lecciones y recomendaciones

  • A pesar de llevar mucho tiempo usando AWS, se generaron costos por haber omitido la configuración del VPC Endpoint para S3
  • Las redes en AWS son complejas y la estructura de costos puede cambiar mucho según cómo se configure todo
  • Recomendaciones para evitar que vuelva a ocurrir
    • Activar AWS Cost Anomaly Detection: permite detectar costos anómalos de forma temprana
    • Usar VPC Endpoint: es esencial al acceder a S3 y DynamoDB desde una VPC que usa NAT Gateway
    • Verificar los supuestos: no confiar solo en la idea de que “la transferencia EC2–S3 es gratuita”; conviene probar a pequeña escala y monitorear costos
    • La nube es compleja: incluso los usuarios de largo plazo necesitan mantener atención constante
  • También se menciona un caso similar en el que Recall.ai pagó $1 millón al año por costos de procesamiento de datos WebSocket

Medidas posteriores

  • Geocodio revisó la ruta de comunicación con S3 en todas sus VPC y completó la configuración de Gateway Endpoint
  • Recomienda a los usuarios de AWS verificar la configuración de VPC Endpoint
  • Resumen: el NAT Gateway también cobra por tráfico hacia servicios de AWS, y usar VPC Endpoint permite evitar ese costo

Material adicional

1 comentarios

 
GN⁺ 2025-11-21
Opiniones de Hacker News
  • Veo muy seguido que en los tres principales subreddits sobre la nube aparece un caso de factura sorpresa como este casi una vez al día
    Los proveedores de nube siempre ofrecen alertas tardías, y los usuarios no pueden hacer más que rezar y pedir ayuda
    Además, algunos afirman que “técnicamente es imposible ofrecer cuentas con tope duro”, pero en realidad Azure ya tiene ese tipo de cuentas

    • Yo creo que esto no es tanto mala intención sino una combinación de ineptitud y falta de incentivos
      Llevo más de 10 años usando AWS, y la discontinuidad de diseño entre servicios y la fragmentación en silos dentro de la organización ha sido grave
      En las organizaciones grandes no hay ejecutivos dispuestos a resolver problemas que dañen sus KPI; en cambio, se enfocan en sumar puntos para ascender lanzando servicios de moda como AI o blockchain
    • Ayer AWS anunció planes de precio fijo sin cargos excedentes
      Puedes elegir entre planes mensuales de $0, $15 o $200, lo que evita facturas sorpresa por aumentos inesperados de solicitudes o transferencia de datos
      Enlace al blog oficial de AWS
    • Es la misma noticia, pero esta vez se trata de un plan de precio fijo para CDN. Hay un nivel de $0 que también incluye almacenamiento S3 y ancho de banda
      Hilo relacionado en HN
      Mantener la estabilidad del servicio al mismo tiempo que se fija un límite de costos sí es difícil, pero este caso demuestra que técnicamente sí es posible
    • AWS prefiere reembolsar después cuando a un cliente le cobran por error
      Es para evitar el riesgo reputacional de cortar servicios o provocar fallas en la infraestructura
    • Lo más triste de estos posts es que terminan con la conclusión de que “deberíamos haber entendido mejor la factura”
      Pero el problema podría ser la nube misma. Para negocios pequeños que necesitan una estructura de costos predecible, quizá la nube no sea la opción adecuada
  • Esto pasa tan seguido que creo que los S3 VPC endpoints deberían configurarse por defecto al crear una VPC
    Y si usas una alternativa como fck-nat en lugar de un NAT gateway, puedes ahorrar cargos de tráfico por GB

    • Pero los S3 Gateway endpoints rompen las operaciones de S3 entre regiones, así que cambiar el valor por defecto podría romper a los clientes
    • También existe la opción de migrar a IPv6 y usar Egress Gateway
    • Al crear una VPC en la consola, se puede configurar con una sola casilla
    • Si lo despliegas no desde la consola sino con IaC (Infrastructure as Code), lo correcto es definir explícitamente toda la configuración
    • Por defecto, una VPC debería diseñarse con una arquitectura centrada en la seguridad
      Debe negar el acceso por defecto y permitir explícitamente el acceso a internet; de lo contrario, un atacante podría exfiltrar datos
  • A mí también me pasó algo parecido
    Subí datos de prueba al algoritmo de recomendaciones de AWS y me olvidé de ellos; meses después, el banco me mandó una alerta de fondos insuficientes
    El algoritmo siguió ejecutándose y me cobraron más de mil dólares al mes, así que al final desaparecieron 5 mil dólares

    • Trabajé antes en facturación, así que desarrollé una paranoia saludable frente a este tipo de cosas
      Reviso el saldo todos los días y marco como importantes todos los correos de cobro
      Y adopté el hábito de poner un límite de tarjeta virtual para cada servicio
  • Yo cometí el mismo error y perdí 60 mil dólares
    No entiendo por qué los endpoints de S3 no se despliegan por defecto

    • Si en una reunión interna alguien propusiera “metamos esto por defecto”, seguro lo postergarían con el argumento de que “bajarán los ingresos”
    • También salen bromas del tipo “eso equivale a un año de salario, pero piensa en la complejidad de autohospedar tu propia infraestructura”
  • Me preguntan seguido “¿por qué explotó la factura de AWS?”, y casi siempre es la combinación de NAT + S3 + suposiciones incorrectas
    La transferencia de EC2 a S3 es gratis, pero si pasa por NAT se cobra
    Por eso doy la siguiente lista de verificación

    1. Si una subred privada se comunica con frecuencia con S3 o DynamoDB, considerar usar un Gateway Endpoint
    2. Monitorear los costos de NAT en un dashboard separado
    3. Antes de mover grandes volúmenes de datos, dibujar un diagrama del flujo de cobros
      Menos mal que Cost Anomaly Detection funcionó a tiempo. Perder mil dólares duele, pero es mejor que perder 20 mil
  • Me sorprendió ver que AWS cobra $0.09 por GB para descargar datos
    ¿Subir datos es gratis, pero para volver a sacarlos hay que pagar?

    • Eso es parte de una estrategia de lock-in. Entrar es fácil, salir es caro
      Este caso fue especial porque, por un error en la configuración de NAT, una transferencia interna se contabilizó como si fuera externa
    • 9 centavos por GB casi parece una tarifa abusiva al nivel de los planes de celular. Por razones como esta Cloudflare parece ganar popularidad
    • Subir es barato, pero bajar es caro. La estructura está hecha para que AWS se quede con una parte cada vez que el cliente entrega datos a sus usuarios
    • En los servicios para consumidores esto suele venir incluido en una cuota mensual, pero AWS tiene una estructura que te obliga a percibir directamente el costo
    • Me recuerda el chiste: “hecho en California; puedes salir, pero no te puedes ir”
  • Me pregunto si Amazon reembolsa este tipo de errores

    • Depende del monto y de la situación. A mí antes me reembolsaron una suma grande, pero tuve que presentar varias justificaciones y un plan para evitar que se repitiera
    • El autor dijo que “actualizará el resultado por si AWS le da crédito en la cuenta”
    • En la práctica, AWS sí suele reembolsar en estos casos. Es muy probable que los datos en realidad no hayan salido al exterior
    • A mí también me han reembolsado varias veces. Eso sí, con la condición de que no vuelva a pasar
    • Al final depende del tamaño del cliente y su capacidad de pago. Un cliente de $20 al mes no puede pagar $1,000, pero uno de $3,000 al mes quizá ni se inmute
  • El VPC NAT Gateway tiene muy mala fama
    Cuando trabajaba en Amazon pasé por un problema parecido, pero como era una cuenta de la empresa no tuve que pagarlo
    La gente que sí tiene que pagar de su bolsillo realmente da pena

    • Personalmente no entiendo por qué los NAT gateways son tan comunes. En la mayoría de los casos un Internet Gateway basta
  • Esto no ayuda directamente en este caso, pero ayer AWS lanzó planes de precio fijo para CDN
    También hay un nivel de $0 que incluye almacenamiento S3 y ancho de banda
    Enlace relacionado
    Ojalá en el futuro se extienda a otros servicios

  • A los 22 años, cuando apenas estaba tocando infraestructura por primera vez, a mí también me cayó una factura de $300 en dos días
    AWS es excelente, pero para principiantes el cálculo de costos es demasiado opaco

    • Me pregunto por qué no mejoran eso