12 points par GN⁺ 2025-11-21 | 1 commentaires | Partager sur WhatsApp
  • Un cas où une erreur de configuration du réseau VPC AWS et de la NAT Gateway a entraîné près de 900 $ de frais de transfert de données en une seule journée, dépassant 1 000 $ sur le cumul mensuel
  • On pense souvent que le transfert d’EC2 vers S3 est gratuit, mais si le trafic passe par une NAT Gateway dans le VPC, des frais de traitement de données payants s’appliquent
  • La cause du problème était l’absence d’un VPC Gateway Endpoint pour S3, c’est-à-dire l’absence de configuration permettant une connexion directe à S3 sans passer par la NAT Gateway
  • Le Gateway Endpoint est gratuit et n’entraîne aucun frais de transfert de données ; il peut être configuré simplement avec Terraform, entre autres
  • Un exemple qui montre, lors de l’exploitation d’une infrastructure AWS, l’importance de la surveillance des coûts et de la vérification de la configuration des VPC Endpoint

Contexte du problème

  • Geocodio utilise AWS pour répliquer dans S3 de volumineux fichiers internes de données géographiques
    • Ces données comprennent des points d’adresses, des données de limites administratives, des informations de recensement, etc., pour des volumes allant de quelques Go à plusieurs centaines de Go
    • Une synchronisation régulière est nécessaire entre une plateforme ETL hébergée chez Hetzner et l’infrastructure de traitement sur AWS
  • Le coût élevé des transferts de données sur AWS est une plainte largement partagée dans l’industrie, et Cloudflare comme Corey Quinn ont déjà pointé ce problème
  • Avant de lancer le projet, l’auteur a examiné la structure tarifaire pour estimer les coûts en vérifiant que
    1. les transferts EC2–S3 dans la même région sont gratuits
    2. les uploads vers S3 (trafic entrant) sont gratuits

Apparition de coûts inattendus

  • Après le déploiement du processus de synchronisation vers S3, une alerte d’anomalie a été reçue via AWS Cost Anomaly Detection
    • En une journée, le volume de données transférées via la NAT Gateway a atteint 20,167.32GB, pour un coût de 907.53 $
    • Le coût cumulé du mois dépassait déjà 1 000 $
  • L’auteur a alors cherché à comprendre pourquoi des frais de NAT Gateway étaient facturés alors qu’il pensait que les transferts EC2–S3 étaient gratuits

Analyse de la cause : passage par la NAT Gateway

  • Lorsqu’un VPC utilise une NAT Gateway, le trafic vers S3 est lui aussi routé par défaut via la NAT Gateway
    • Même pour des requêtes vers un service AWS situé dans la même région, le passage par la NAT entraîne des frais de traitement de données de 0.045 $ par Go
  • Résultat : bien que le transfert entre EC2 et S3 soit gratuit, des coûts de NAT Gateway ont tout de même été facturés
  • La solution consiste à créer un VPC Gateway Endpoint pour S3
    • Cela permet une connexion directe du VPC vers S3, sans passer par une NAT Gateway ni une Internet Gateway
    • C’est entièrement gratuit, sans frais horaires ni frais de transfert

Processus de résolution

  • L’infrastructure étant gérée avec Terraform, il a suffi d’ajouter la ressource Gateway Endpoint et de l’associer à la table de routage
    • AWS met alors automatiquement à jour le routage pour envoyer le trafic S3 vers l’Endpoint plutôt que vers la NAT Gateway
  • Après cela, la facturation liée à la NAT Gateway a cessé

Enseignements et recommandations

  • Malgré de longues années d’utilisation d’AWS, l’omission de la configuration d’un VPC Endpoint pour S3 a tout de même provoqué des coûts inattendus
  • Le réseau AWS est complexe, et la structure des coûts peut varier fortement selon la manière dont l’infrastructure est configurée
  • Recommandations pour éviter une récidive
    • Activer AWS Cost Anomaly Detection : permet de détecter rapidement des coûts anormaux
    • Utiliser des VPC Endpoint : indispensable pour l’accès à S3 et DynamoDB dans les VPC qui utilisent une NAT Gateway
    • Vérifier les hypothèses : ne pas se contenter de l’idée que « le transfert EC2–S3 est gratuit » ; faire un petit test puis surveiller les coûts
    • Le cloud est complexe : même les utilisateurs de longue date doivent rester vigilants
  • L’article mentionne aussi un cas similaire où Recall.ai a payé 1 million de dollars par an en coûts de traitement de données WebSocket

Mesures de suivi

  • Geocodio a vérifié les chemins de communication S3 de tous ses VPC et a terminé la configuration des Gateway Endpoint
  • Il est recommandé aux utilisateurs AWS de vérifier la configuration de leurs VPC Endpoint
  • En résumé : le trafic vers les services AWS via une NAT Gateway peut lui aussi être facturé, et l’utilisation de VPC Endpoint permet d’éviter ces coûts

Ressources complémentaires

1 commentaires

 
GN⁺ 2025-11-21
Avis Hacker News
  • Je vois souvent ce type de facture surprise apparaître environ une fois par jour sur trois grands subreddits liés au cloud
    Les fournisseurs cloud ne proposent que des alertes toujours retardées, et les utilisateurs n’ont plus qu’à prier et demander un geste commercial
    En plus, certains affirment qu’il est « techniquement impossible » de proposer des comptes avec un plafond strict, alors qu’Azure en a déjà

    • Je pense que c’est moins une intention malveillante qu’une combinaison d’incompétence et d’absence d’incitation
      J’utilise AWS depuis plus de 10 ans, et les ruptures de conception entre services ainsi que la mise en silos de l’organisation étaient flagrantes
      Dans une grande organisation, aucun dirigeant ne veut résoudre un problème qui détériorerait ses KPI ; à la place, on préfère accumuler des points pour une promotion en lançant des services à la mode comme l’IA ou la blockchain
    • AWS a annoncé hier des forfaits à tarif fixe sans dépassement
      On peut choisir entre des offres mensuelles à 0 $, 15 $ ou 200 $, ce qui permet d’éviter les factures explosives causées par une hausse imprévue des requêtes ou du transfert de données
      Lien vers le blog officiel d’AWS
    • C’est la même actualité, mais cette fois pour des forfaits CDN. Il existe une offre à 0 $ qui inclut aussi le stockage S3 et la bande passante
      Fil HN associé
      Il est certes difficile de fixer un plafond de coût tout en maintenant la stabilité du service, mais ce cas prouve que c’est techniquement possible
    • AWS préfère rembourser les clients après coup lorsqu’ils sont facturés par erreur
      C’est pour éviter le risque réputationnel lié à une interruption de service ou à une panne d’infrastructure
    • Le plus triste dans ce genre de billet, c’est qu’il se termine souvent par « nous aurions dû mieux comprendre la facture »
      Mais le problème vient peut-être du cloud lui-même. Pour les petites structures qui ont besoin d’une structure de coûts prévisible, le cloud n’est peut-être pas adapté
  • Comme cela arrive beaucoup trop souvent, je pense que les endpoints S3 VPC devraient être activés par défaut lors de la création d’un VPC
    Et utiliser une alternative comme fck-nat au lieu d’une NAT Gateway peut faire économiser les frais de trafic par Go

    • Mais les endpoints S3 Gateway cassent les opérations S3 inter-régions, et changer la valeur par défaut pourrait casser des clients
    • On peut aussi passer à IPv6 et utiliser une Egress Gateway
    • Dans la console, on peut le configurer avec une simple case à cocher lors de la création du VPC
    • En revanche, si l’infrastructure est déployée non pas via la console mais en IaC (Infrastructure as Code), il est normal d’écrire explicitement toute la configuration
    • Par défaut, un VPC devrait être conçu selon un modèle orienté sécurité
      L’accès Internet devrait être refusé par défaut et seulement autorisé explicitement ; sinon, un attaquant pourrait exfiltrer des données
  • J’ai déjà fait une erreur similaire moi aussi
    J’ai envoyé des données de test dans l’algorithme de recommandation AWS puis je les ai oubliées, avant de recevoir quelques mois plus tard une alerte de découvert de ma banque
    L’algorithme continuait à tourner et facturait plus de 1 000 dollars par mois, si bien qu’au final 5 000 dollars se sont envolés

    • J’ai déjà travaillé dans la facturation, donc j’ai développé une paranoïa saine sur ces sujets
      Je vérifie mon solde chaque jour et je marque tous les e-mails de facturation comme importants
      Et j’ai pris l’habitude de fixer une limite de carte virtuelle pour chaque service
  • J’ai aussi fait la même erreur et perdu 60 000 dollars
    Je ne comprends pas pourquoi les endpoints S3 ne sont pas déployés par défaut

    • J’ai l’impression que si quelqu’un disait en réunion interne « mettons ça par défaut », on lui répondrait que « ça réduirait les revenus »
    • Il y a aussi cette blague du genre : « c’est un an de salaire, certes, mais pense à la complexité d’auto-héberger l’infrastructure »
  • On me demande souvent « pourquoi la facture AWS a explosé ? », et dans la plupart des cas c’est une combinaison NAT + S3 + mauvaise hypothèse
    Le transfert EC2→S3 est gratuit, mais il devient payant s’il passe par NAT
    Du coup, je donne cette checklist

    1. Pour les subnets privés qui communiquent souvent avec S3 ou DynamoDB, envisager un Gateway Endpoint
    2. Surveiller les coûts NAT dans un tableau de bord séparé
    3. Avant de déplacer de gros volumes de données, dessiner un schéma des flux de facturation
      Heureusement, Cost Anomaly Detection a réagi à temps. Perdre 1 000 dollars fait mal, mais c’est toujours mieux que 20 000
  • J’ai été surpris d’apprendre qu’il faut payer 0,09 $ par Go pour télécharger ses données depuis AWS
    L’upload est gratuit, mais pour les récupérer il faut payer ?

    • Cela fait partie d’une stratégie de lock-in. Entrer est facile, sortir coûte cher
      Dans ce cas précis, c’était une situation particulière où une erreur de configuration NAT a fait compter un transfert interne comme un transfert externe
    • 9 centimes par Go, c’est presque une arnaque au niveau d’un forfait mobile. On comprend pourquoi Cloudflare gagne en popularité
    • L’upload est peu cher, mais le téléchargement coûte cher. À chaque fois qu’un client fournit ses données à ses utilisateurs, AWS en prélève une part
    • Les services grand public l’incluent dans un abonnement mensuel, alors qu’AWS est structuré pour rendre le coût directement visible
    • Ça me rappelle la blague : « produit en Californie ; on peut sortir, mais on ne peut pas partir »
  • Je me demande si Amazon rembourse ce genre d’erreur

    • Cela dépend du montant et du contexte. J’ai déjà obtenu un remboursement important, mais j’ai dû fournir plusieurs explications et un plan de prévention de récidive
    • L’auteur dit qu’il mettra à jour le résultat si AWS lui accorde un crédit de compte
    • En pratique, AWS a tendance à rembourser dans ce genre de cas, car il est probable que les données ne soient pas réellement sorties vers l’extérieur
    • J’ai déjà été remboursé plusieurs fois moi aussi. En revanche, il y a des conditions pour éviter que cela se reproduise
    • Au final, tout dépend de la taille du client et de sa capacité de paiement. Un client à 20 $ par mois ne peut pas payer 1 000 $, alors qu’un client à 3 000 $ par mois s’en soucie à peine
  • La VPC NAT Gateway a une très mauvaise réputation
    J’ai eu un problème similaire quand je travaillais chez Amazon, mais comme c’était un compte d’entreprise, je n’ai pas eu à payer
    Ceux qui doivent réellement sortir l’argent sont vraiment à plaindre

    • Personnellement, je ne comprends pas pourquoi les NAT Gateways sont si répandues. Dans la plupart des cas, une Internet Gateway suffit largement
  • Cela n’aide pas directement dans ce cas-ci, mais AWS a lancé hier des forfaits à tarif fixe pour le CDN
    Il existe aussi une offre à 0 $ incluant le stockage S3 et la bande passante
    Lien associé
    J’espère que cela sera étendu à d’autres services à l’avenir

  • Moi aussi, à 22 ans, en touchant à l’infrastructure pour la première fois, je me suis pris 300 dollars de facture en deux jours
    AWS est excellent, mais pour les débutants, le calcul des coûts est bien trop opaque

    • Je me demande pourquoi ils ne corrigent pas ça