12 puan yazan GN⁺ 2025-11-21 | 1 yorum | WhatsApp'ta paylaş
  • AWS VPC ağ iletişimi ve NAT Gateway yapılandırma hatası nedeniyle S3 veri aktarım maliyetinin bir gün içinde yaklaşık 900 dolar olduğu, aylık birikimli toplamda ise 1.000 doları aştığı bir örnek
  • EC2'den S3'e aktarımın ücretsiz olduğu bilinse de, VPC içindeki NAT Gateway üzerinden geçerse ücretli veri işleme ücreti oluşuyor
  • Sorunun nedeni S3 için VPC Gateway Endpoint eksikliği; yani NAT Gateway'den geçmeden S3'e doğrudan bağlanan bir yapılandırmanın olmaması
  • Gateway Endpoint ücretsizdir ve veri aktarım ücreti oluşturmaz; Terraform gibi araçlarla kolayca yapılandırılabilir
  • AWS altyapısı işletirken maliyet izleme ve VPC Endpoint yapılandırmasını denetlemenin önemini gösteren bir örnek

Sorunun arka planı

  • Geocodio, büyük dahili coğrafi veri dosyalarını S3'e yansıtmak için AWS kullanıyordu
    • Veriler adres noktaları, sınır verileri, nüfus sayımı bilgileri gibi içeriklerden oluşuyor ve boyutları birkaç GB'dan yüzlerce GB'a kadar çıkıyor
    • Hetzner'de barındırılan ETL platformundan AWS işlem altyapısına düzenli senkronizasyon gerekiyordu
  • AWS'nin veri aktarım maliyetlerinin yüksek olması, sektör genelinde yaygın bir şikayet; Cloudflare ve Corey Quinn de ilgili sorunlara dikkat çekmişti
  • Yazar, projeye başlamadan önce maliyet yapısını inceleyip şunları doğrulamıştı:
    1. Aynı region içindeki EC2–S3 aktarımı ücretsiz
    2. S3'e yükleme (ingress) ücretsiz
      ve buna göre maliyet tahmini yapmıştı

Beklenmeyen maliyetin ortaya çıkması

  • S3 senkronizasyon süreci dağıtıldıktan sonra AWS Cost Anomaly Detection üzerinden anomali uyarısı alındı
    • Bir günde NAT Gateway veri aktarımı 20,167.32GB olmuş, bunun maliyeti $907.53 olarak yansımıştı
    • Aylık birikimli maliyet zaten 1.000 doları aşmıştı
  • EC2–S3 aktarımının ücretsiz olduğu sanılırken neden NAT Gateway ücretinin kesildiği araştırıldı

Kök neden analizi: NAT Gateway üzerinden geçiş

  • VPC içinde NAT Gateway kullanıldığında, S3 trafiği de varsayılan olarak NAT Gateway üzerinden yönlendirilir
    • Aynı region içindeki AWS servislerine giden isteklerde bile NAT kullanılırsa GB başına $0.045 veri işleme ücreti alınır
  • Bu yüzden EC2–S3 arasındaki aktarım ücretsiz olsa bile NAT Gateway maliyeti yansıtıldı
  • Çözüm ise S3 için VPC Gateway Endpoint oluşturmak
    • NAT Gateway veya Internet Gateway üzerinden geçmeden VPC'den S3'e doğrudan bağlantı sağlar
    • Tamamen ücretsizdir; saatlik ücret veya aktarım ücreti yoktur

Çözüm süreci

  • Altyapı Terraform ile yönetildiği için, Gateway Endpoint kaynağı eklendi ve route table'a bağlandı
    • AWS yönlendirmeyi otomatik güncelleyerek S3 trafiğini NAT Gateway yerine Endpoint'e göndermeye başladı
  • Bunun ardından NAT Gateway ile ilgili ücretlendirme durdu

Çıkarılan dersler ve öneriler

  • Uzun süredir AWS kullanılıyor olmasına rağmen S3 için VPC Endpoint yapılandırmasının atlanması maliyete yol açtı
  • AWS ağ yapısı karmaşık; maliyet yapısı da yapılandırma biçimine göre büyük ölçüde değişebilir
  • Tekrarını önlemek için öneriler
    • AWS Cost Anomaly Detection'ı etkinleştirin: anormal maliyetler erken tespit edilebilir
    • VPC Endpoint kullanın: NAT Gateway kullanan VPC'lerde S3 ve DynamoDB erişimi için gerekli
    • Varsayımları doğrulayın: “EC2–S3 aktarımı ücretsizdir” ön kabulüne güvenmek yerine, küçük ölçekli test yapıp maliyeti izlemek gerekir
    • Bulut karmaşıktır: uzun süreli kullanıcılar için bile sürekli dikkat gerekir
  • Benzer bir örnek olarak, Recall.ai'nin WebSocket veri işleme maliyetleri için yılda 1 milyon dolar ödediği olay da anılıyor

Sonraki adımlar

  • Geocodio, tüm VPC'lerdeki S3 iletişim yollarını gözden geçirip Gateway Endpoint yapılandırmasını tamamladı
  • AWS kullanıcılarına VPC Endpoint ayarlarını kontrol etmeleri öneriliyor
  • Özet: NAT Gateway, AWS servislerine giden trafiği de ücretlendirir; VPC Endpoint kullanılarak bu maliyetten kaçınılabilir

Ek kaynaklar

1 yorum

 
GN⁺ 2025-11-21
Hacker News görüşleri
  • Bulutla ilgili üç büyük subreddit'te bu tür maliyet patlaması vakalarının neredeyse her gün paylaşıldığını sık sık görüyorum
    Bulut sağlayıcıları her zaman gecikmeli uyarılar veriyor ve kullanıcıların elinden sadece dua etmek ve af dilemek geliyor
    Üstelik bazıları “teknik olarak hard-cap hesap sunmak imkansız” diyor ama aslında Azure'da böyle hesaplar zaten var

    • Bence bu kötü niyetten çok beceriksizlik ve teşvik eksikliğinin birleşimi
      10 yılı aşkın süredir AWS kullanıyorum; servisler arası tasarım kopuklukları ve kurum içi silo yapısı çok ciddiydi
      Büyük organizasyonlarda KPI'ları bozacak sorunları çözmek isteyen yönetici çıkmıyor; onun yerine AI ya da blockchain gibi moda servisler çıkarıp terfi puanı toplamaya odaklanıyorlar
    • AWS dün aşım ücreti olmayan sabit fiyatlı bir plan duyurdu
      Aylık $0, $15 ve $200 planları arasından seçim yapabiliyorsunuz; bu da beklenmeyen istekler veya veri aktarımı artışlarından kaynaklanan maliyet patlamalarını önleyebiliyor
      AWS resmi blog bağlantısı
    • Aynı haber ama bu kez CDN için sabit fiyatlı plan söz konusu. S3 depolama ve bant genişliği içeren bir $0 katmanı da var
      İlgili HN başlığı
      Maliyet tavanı koyarken hizmet kararlılığını korumak zor olsa da, bu örnek bunun teknik olarak mümkün olduğunu kanıtlıyor
    • AWS, müşteriler yanlışlıkla ücretlendirildiğinde sonradan para iadesi yapma yolunu seçiyor
      Bunun nedeni, hizmet kesintisi ya da altyapı arızasından doğacak itibar riskinden kaçınmak istemesi
    • Bu tür yazılardaki en üzücü şey, sonucun hep “faturayı daha iyi anlamamız gerekirdi” noktasına varması
      Ama sorun bulutun kendisi de olabilir. Öngörülebilir bir maliyet yapısına ihtiyaç duyan küçük işletmeler için bulut uygun olmayabilir
  • Bu o kadar sık oluyor ki, S3 VPC endpoint'lerinin VPC oluşturulurken varsayılan olarak ayarlanması gerektiğini düşünüyorum
    Ayrıca NAT gateway yerine fck-nat gibi alternatifler kullanılırsa GB başına trafik ücretinden tasarruf edilebilir

    • Ama S3 Gateway endpoint, bölgeler arası S3 işlemlerini bozuyor; varsayılanı değiştirmek müşterileri kırabilir
    • IPv6'ya geçip Egress Gateway kullanmak da bir yöntem
    • Konsolda VPC oluştururken bunu tek bir onay kutusuyla ayarlamak mümkün
    • Konsol yerine IAC (Infrastructure as Code) ile kurulum yapılıyorsa, tüm yapılandırmanın açıkça yazılması doğru olan
    • VPC'ler varsayılan olarak güvenlik öncelikli bir yapıyla tasarlanmalı
      Varsayılan durum erişimi reddetmek olmalı ve internet erişimi açıkça izin verilerek açılmalı; aksi halde saldırganlar veriyi dışarı sızdırabilir
  • Ben de benzer bir hata yapmıştım
    AWS tavsiye algoritmasına test verisi yükleyip unutmuştum; birkaç ay sonra bankadan yetersiz bakiye bildirimi geldi
    Algoritma çalışmaya devam etmiş ve her ay 1.000 doların üzerinde ücret çıkarmıştı; sonuçta 5.000 dolar gitmiş oldu

    • Daha önce faturalama tarafında çalıştığım için bu konularda sağlıklı bir paranoyam var
      Bakiyemi her gün kontrol ederim ve tüm fatura e-postalarını önemli olarak işaretlerim
      Ayrıca her servis için sanal kart limiti belirleme alışkanlığı edindim
  • Ben de aynı hatayı yapıp 60 bin dolar kaybetmiştim
    S3 endpoint'lerinin neden varsayılan olarak dağıtılmadığını anlayamıyorum

    • İç toplantılarda “bunu varsayılan yapalım” denince, “geliri azaltır” diye erteleniyormuş gibi geliyor
    • “Bu bir yıllık maaşın kadar ama kendi altyapını self-host etmenin karmaşıklığını da düşün” tarzı şakalar da yapılıyor
  • Bana sık sık “AWS faturası neden patladı?” diye soruluyor; çoğu zaman sebep NAT + S3 + yanlış varsayımlar kombinasyonu oluyor
    EC2→S3 aktarımı ücretsiz ama NAT üzerinden geçerse ücretli oluyor
    Bu yüzden şu kontrol listesini veriyorum

    1. S3 veya DynamoDB ile sık haberleşen private subnet'ler için Gateway Endpoint kullanmayı değerlendirin
    2. NAT maliyetlerini ayrı bir dashboard'da izleyin
    3. Büyük veri taşımadan önce ücret akış diyagramı çizin
      Cost Anomaly Detection'ın zamanında devreye girmesi sevindirici. 1.000 dolarlık kayıp da acıtır ama 20 bin dolardan iyidir
  • AWS'den veri indirirken GB başına $0.09 ödendiğini görünce şaşırdım
    Veriyi yüklemek ücretsiz ama geri almak için para mı ödemek gerekiyor?

    • Bu, vendor lock-in stratejisinin bir parçası. İçeri girmek kolay ama çıkmak pahalı
      Bu olay, NAT yapılandırma hatası yüzünden iç aktarımın dış aktarım gibi ücretlendirilmesiyle oluşan sıra dışı bir örnek
    • GB başına 9 sent neredeyse cep telefonu tarifesi seviyesinde bir kazık gibi. Sanırım Cloudflare'ın popüler olmasının nedenlerinden biri de bu
    • Yükleme ucuz ama indirme pahalı. Müşteri veriyi kendi kullanıcılarına sunduğu her seferde AWS bunun bir payını alıyor
    • Tüketiciye yönelik servislerde bu aylık ücrete dahil olurken, AWS maliyeti doğrudan görünür kılan bir yapı kuruyor
    • “California Hotel gibi, çıkış yapabilirsin ama ayrılamazsın” şakası aklıma geliyor
  • Amazon'un bu tür hatalarda geri ödeme yapıp yapmadığını merak ediyorum

    • Tutar ve duruma göre değişiyor. Ben de geçmişte büyük bir meblağ için geri ödeme aldım ama birden fazla açıklama ve tekrarını önleme planı sunmam gerekmişti
    • Yazar, “AWS hesap kredisi verebilir, sonucu güncelleyeceğim” demiş
    • Gerçekte AWS bu tür durumlarda geri ödeme yapma eğiliminde. Çünkü verinin gerçekten dışarı çıkmamış olma ihtimali yüksek
    • Ben de birkaç kez geri ödeme aldım. Ama tekrarını önleme şartı ekleniyor
    • Sonuçta bu biraz da müşterinin ölçeğine ve ödeme gücüne bağlı. Aylık 20 dolarlık müşteri 1.000 doları ödeyemez ama aylık 3.000 dolarlık müşteri bunu pek umursamaz
  • VPC NAT Gateway kötü bir üne sahip
    Eskiden Amazon'da çalışırken benzer bir sorun yaşamıştım ama şirket hesabı olduğu için parayı ben ödemedim
    Gerçekten cebinden ödemek zorunda kalanlara üzülüyorum

    • Kişisel olarak NAT gateway'in neden bu kadar yaygın olduğunu anlamıyorum. Çoğu durumda Internet Gateway yeterli olur
  • Bu olaya doğrudan yardımcı olmaz ama AWS dün CDN için sabit fiyatlı planlar çıkardı
    S3 depolama ve bant genişliği içeren bir $0 katmanı da var
    İlgili bağlantı
    Umarım ileride başka servislere de genişler

  • Ben de 22 yaşımdayken altyapıyla ilk kez uğraşırken iki günde 300 dolarlık fatura yemiştim
    AWS harika ama yeni başlayanlar için maliyet hesaplaması fazla opak

    • Neden bunu iyileştirmediklerini merak ediyorum