- Ein Fall, in dem durch einen Fehler in der AWS-VPC-Netzwerkkonfiguration und beim NAT Gateway innerhalb eines Tages etwa 900 US-Dollar an S3-Datenübertragungskosten entstanden und kumuliert im Monat 1.000 US-Dollar überschritten wurden
- Es gilt zwar als bekannt, dass die Übertragung von EC2 zu S3 kostenlos ist, doch wenn der Datenverkehr innerhalb einer VPC über ein NAT Gateway läuft, fallen kostenpflichtige Datenverarbeitungsgebühren an
- Die Ursache war ein fehlender VPC Gateway Endpoint für S3; es gab also keine Konfiguration für eine direkte Verbindung von der VPC zu S3 ohne NAT Gateway
- Ein Gateway Endpoint ist kostenlos und verursacht keine Datenübertragungsgebühren; er lässt sich mit Terraform usw. einfach einrichten
- Der Fall zeigt, wie wichtig bei dem Betrieb von AWS-Infrastruktur Kostenüberwachung und die Prüfung der VPC-Endpoint-Konfiguration sind
Hintergrund des Problems
- Geocodio nutzte AWS, um große interne Geodaten-Dateien nach S3 zu spiegeln
- Die Daten umfassten Adresspunkte, Grenzdaten, Volkszählungsinformationen usw. und reichten von mehreren GB bis zu Hunderten von GB
- Von einer auf Hetzner gehosteten ETL-Plattform aus war eine regelmäßige Synchronisierung mit der AWS-Verarbeitungsinfrastruktur erforderlich
- Dass die Kosten für Datenübertragung bei AWS hoch sind, ist eine branchenweite, häufig geäußerte Beschwerde; Cloudflare und Corey Quinn haben auf das Problem hingewiesen
- Der Autor prüfte vor Projektbeginn die Kostenstruktur und stellte fest, dass
- Übertragungen zwischen EC2 und S3 innerhalb derselben Region kostenlos sind
- Uploads zu S3 (Ingress) kostenlos sind
und kalkulierte die Kosten entsprechend
Unerwartete Kosten
- Nach dem Deployment des S3-Synchronisierungsprozesses ging eine Warnung von AWS Cost Anomaly Detection ein
- An einem einzigen Tag betrug das Datenvolumen über das NAT Gateway 20.167,32 GB, die Kosten lagen bei 907,53 US-Dollar
- Die kumulierten Monatskosten hatten bereits 1.000 US-Dollar überschritten
- In einer Situation, in der man davon ausgegangen war, dass EC2–S3-Übertragungen kostenlos seien, wurde untersucht, warum Gebühren für das NAT Gateway anfielen
Ursachenanalyse: Weiterleitung über das NAT Gateway
- Wenn in einer VPC ein NAT Gateway verwendet wird, wird auch S3-Verkehr standardmäßig über das NAT Gateway geroutet
- Selbst bei Anfragen an AWS-Services in derselben Region fallen bei Weiterleitung über NAT Datenverarbeitungsgebühren von 0,045 US-Dollar pro GB an
- Dadurch wurden NAT-Gateway-Kosten berechnet, obwohl die Übertragung zwischen EC2 und S3 eigentlich kostenlos ist
- Die Lösung ist die Erstellung eines VPC Gateway Endpoint für S3
- Dadurch entsteht eine direkte Verbindung von der VPC zu S3, ohne NAT Gateway oder Internet Gateway
- Das ist vollständig kostenlos, ohne stündliche Gebühren oder Übertragungskosten
Lösungsweg
- Da die Infrastruktur mit Terraform verwaltet wurde, wurde eine Gateway-Endpoint-Ressource hinzugefügt und mit der Routing-Tabelle verknüpft
- AWS aktualisierte das Routing automatisch, sodass S3-Verkehr statt über das NAT Gateway über den Endpoint lief
- Danach endeten die NAT-Gateway-bezogenen Gebühren
Erkenntnisse und Empfehlungen
- Obwohl AWS schon lange genutzt wurde, entstanden Kosten durch ein fehlendes VPC-Endpoint-Setup für S3
- AWS-Networking ist komplex, und die Kostenstruktur kann sich je nach Konfiguration stark unterscheiden
- Empfehlungen zur Vermeidung ähnlicher Probleme
- AWS Cost Anomaly Detection aktivieren: Ungewöhnliche Kosten lassen sich früh erkennen
- VPC Endpoints verwenden: In VPCs mit NAT Gateway essenziell für den Zugriff auf S3 und DynamoDB
- Annahmen überprüfen: Nicht nur der Aussage „EC2–S3-Übertragung ist kostenlos“ vertrauen, sondern zunächst im kleinen Maßstab testen und die Kosten überwachen
- Cloud ist komplex: Auch langjährige Nutzer müssen dauerhaft aufmerksam bleiben
- Als ähnlicher Fall wird Recall.ai erwähnt, das jährlich 1 Million US-Dollar für WebSocket-Datenverarbeitung zahlte
Nachfolgende Maßnahmen
- Geocodio prüfte die S3-Kommunikationspfade aller VPCs und schloss die Gateway-Endpoint-Konfiguration ab
- AWS-Nutzern wird empfohlen, die VPC-Endpoint-Konfiguration zu prüfen
- Zusammenfassung: NAT Gateways verursachen auch für Datenverkehr zu AWS-Services Kosten, mit VPC Endpoints lassen sich diese Kosten vermeiden
Zusätzliche Materialien
1 Kommentare
Hacker-News-Kommentare
In den drei großen Cloud-Subreddits sehe ich solche Kostenexplosionen ständig, im Schnitt etwa einmal pro Tag
Die Cloud-Anbieter liefern immer nur verzögerte Warnungen, und den Nutzern bleibt am Ende nur beten und um Kulanz bitten
Manche behaupten außerdem, es sei „technisch unmöglich“, Konten mit einem harten Ausgabenlimit anzubieten, aber bei Azure gibt es so etwas bereits
Ich nutze AWS seit über 10 Jahren, und die Brüche im Design zwischen den Services sowie die Silo-Strukturen innerhalb der Organisation waren massiv
In großen Organisationen gibt es keinen Manager, der Probleme beheben will, wenn das den KPI schadet; stattdessen konzentriert man sich darauf, mit Trend-Services wie AI oder Blockchain Beförderungspunkte zu sammeln
Man kann zwischen monatlichen Plänen zu $0, $15 und $200 wählen, um unerwartete Kostenexplosionen durch plötzliche Anfragen oder steigenden Datentransfer zu verhindern
Link zum offiziellen AWS-Blog
Zugehöriger HN-Thread
Ein Kostenlimit zu setzen und zugleich die Stabilität des Dienstes zu erhalten, ist zwar schwierig, aber dieser Fall beweist, dass es technisch möglich ist
So vermeidet man Reputationsrisiken durch Dienstunterbrechungen oder Infrastrukturstörungen
Vielleicht ist aber die Cloud selbst das Problem. Für kleine Unternehmen, die eine vorhersehbare Kostenstruktur brauchen, ist die Cloud womöglich ungeeignet
Das passiert so oft, dass ich finde, S3-VPC-Endpoints sollten beim Erstellen einer VPC standardmäßig gesetzt werden
Und wenn man statt eines NAT Gateway eine Alternative wie fck-nat verwendet, kann man Traffic-Kosten pro GB sparen
Internetzugriff sollte standardmäßig verweigert und nur explizit erlaubt werden, sonst können Angreifer Daten exfiltrieren
Mir ist ein ähnlicher Fehler auch schon passiert
Ich hatte Testdaten in einen AWS-Empfehlungsalgorithmus hochgeladen und es dann vergessen; Monate später bekam ich von der Bank eine Warnung wegen unzureichender Deckung
Der Algorithmus lief weiter und verursachte jeden Monat mehr als 1.000 Dollar an Kosten, sodass am Ende 5.000 Dollar verschwunden waren
Ich prüfe jeden Tag meinen Kontostand und markiere alle Abrechnungs-E-Mails als wichtig
Außerdem habe ich mir angewöhnt, für jeden Dienst ein virtuelles Kartenlimit zu setzen
Ich habe denselben Fehler gemacht und dabei 60.000 Dollar verloren
Ich verstehe nicht, warum S3-Endpoints nicht standardmäßig ausgerollt werden
Ich werde oft gefragt: „Warum sind meine AWS-Kosten explodiert?“, und meistens ist es die Kombination aus NAT + S3 + falschen Annahmen
EC2→S3-Transfer ist kostenlos, aber über NAT wird er kostenpflichtig
Deshalb gebe ich immer diese Checkliste weiter
Gut, dass Cost Anomaly Detection rechtzeitig angesprungen ist. 1.000 Dollar Verlust tun weh, aber es ist besser als 20.000 Dollar
Ich war schockiert, als ich gesehen habe, dass man bei AWS für das Herunterladen von Daten $0,09 pro GB zahlen muss
Hochladen ist kostenlos, aber um die Daten wieder herauszubekommen, muss man zahlen?
Dieser Fall hier war ein Sonderfall, bei dem interner Transfer wegen einer fehlerhaften NAT-Konfiguration als externer Transfer abgerechnet wurde
Ich frage mich, ob Amazon solche Fehler erstattet
VPC NAT Gateway ist berüchtigt
Ich hatte früher bei Amazon ein ähnliches Problem, musste aber nichts bezahlen, weil es ein Firmenkonto war
Die Leute, die das tatsächlich aus eigener Tasche zahlen müssen, tun mir wirklich leid
Für diesen konkreten Fall hilft es nicht direkt, aber AWS hat gestern Pauschalpreis-Tarife für CDN eingeführt
Es gibt auch eine $0-Stufe mit S3-Storage und Bandbreite
Zugehöriger Link
Hoffentlich wird das künftig auf weitere Services ausgeweitet
Als ich 22 war und zum ersten Mal mit Infrastruktur gearbeitet habe, habe ich mir in zwei Tagen 300 Dollar Kosten eingefangen
AWS ist großartig, aber für Einsteiger ist die Kostenkalkulation viel zu intransparent