12 पॉइंट द्वारा GN⁺ 2025-11-21 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • AWS VPC networking और NAT Gateway configuration error की वजह से S3 data transfer cost सिर्फ एक दिन में लगभग $900 तक पहुंच गई, और महीने भर का कुल खर्च $1,000 से अधिक हो गया
  • आम तौर पर माना जाता है कि EC2 से S3 तक transfer मुफ़्त होता है, लेकिन अगर VPC के अंदर NAT Gateway के ज़रिए जाए तो paid data processing charges लगते हैं
  • समस्या की जड़ S3 के लिए VPC Gateway Endpoint का न होना थी, यानी S3 से सीधे जुड़ने की ऐसी configuration नहीं थी जो NAT Gateway को bypass कर सके
  • Gateway Endpoint मुफ़्त है और इस पर data transfer charge नहीं लगता, और इसे Terraform आदि से आसानी से configure किया जा सकता है
  • यह मामला दिखाता है कि AWS infrastructure चलाते समय cost monitoring और VPC Endpoint configuration की जांच कितनी महत्वपूर्ण है

समस्या की पृष्ठभूमि

  • Geocodio ने बड़े internal geographic data files को S3 पर mirror करने के लिए AWS का उपयोग किया
    • data में address points, boundary data, census information आदि शामिल थे, जिनका आकार कुछ GB से लेकर सैकड़ों GB तक था
    • Hetzner पर hosted ETL platform से AWS processing infrastructure तक नियमित sync की आवश्यकता थी
  • AWS के data transfer cost का महंगा होना पूरे industry की एक आम शिकायत है, और Cloudflare तथा Corey Quinn जैसे लोगों ने भी इस मुद्दे को उठाया है
  • लेखक ने project शुरू करने से पहले cost structure की समीक्षा की और यह पुष्टि की कि
    1. एक ही region के भीतर EC2–S3 transfer मुफ़्त है
    2. S3 पर upload (ingress) मुफ़्त है
      इन आधारों पर लागत का अनुमान लगाया गया

अप्रत्याशित खर्च

  • S3 sync process deploy करने के बाद AWS Cost Anomaly Detection से anomaly alert मिला
    • एक ही दिन में NAT Gateway data transfer 20,167.32GB रहा और इसकी लागत $907.53 आई
    • महीने का accumulated cost पहले ही $1,000 से ऊपर जा चुका था
  • EC2–S3 transfer मुफ़्त समझे जाने के बावजूद NAT Gateway charge क्यों लगा, इसकी जांच की गई

कारण विश्लेषण: NAT Gateway के ज़रिए रूटिंग

  • अगर VPC में NAT Gateway इस्तेमाल हो रहा हो, तो S3 traffic भी default रूप से NAT Gateway के through route हो सकता है
    • भले ही request उसी region की AWS service के लिए हो, NAT से गुजरने पर $0.045 per GB data processing charge लगता है
  • इसी वजह से EC2–S3 transfer मुफ़्त होने के बावजूद NAT Gateway cost लग गई
  • इसका समाधान है S3 के लिए VPC Gateway Endpoint बनाना
    • इससे VPC से S3 तक direct connection बनता है, बिना NAT Gateway या Internet Gateway से गुज़रे
    • यह पूरी तरह मुफ़्त है, इसमें न hourly charge है और न transfer fee

समाधान प्रक्रिया

  • infrastructure Terraform से manage हो रहा था, इसलिए Gateway Endpoint resource जोड़कर उसे route table से connect किया गया
    • AWS ने routing को automatically update कर दिया ताकि S3 traffic NAT Gateway की जगह Endpoint से जाए
  • इसके बाद NAT Gateway से जुड़ा billing रुक गया

सीख और सिफारिशें

  • AWS का लंबे समय तक उपयोग करने के बावजूद S3 के लिए VPC Endpoint configuration छूट जाने से अनावश्यक खर्च हुआ
  • AWS networking जटिल है, और cost structure configuration के तरीके के अनुसार बहुत बदल सकता है
  • दोबारा ऐसी समस्या न हो, इसके लिए सिफारिशें
    • AWS Cost Anomaly Detection enable करें: असामान्य खर्च को जल्दी पकड़ा जा सकता है
    • VPC Endpoint का उपयोग करें: NAT Gateway वाले VPC में S3 और DynamoDB access के लिए यह आवश्यक है
    • धारणाओं की जांच करें: सिर्फ “EC2–S3 transfer मुफ़्त है” मानकर न चलें; पहले छोटे पैमाने पर test करें और cost monitor करें
    • cloud जटिल है: लंबे समय के users को भी लगातार सावधान रहने की ज़रूरत है
  • इसी तरह के एक मामले में Recall.ai ने WebSocket data processing cost पर सालाना $1 million चुकाए, इसका भी उल्लेख किया गया

अगली कार्रवाई

  • Geocodio ने सभी VPC में S3 communication path की जांच की और Gateway Endpoint configuration पूरी कर ली
  • AWS users को VPC Endpoint setting verify करने की सलाह दी गई
  • सार: NAT Gateway, AWS services की ओर जाने वाले traffic पर भी charge लगाता है, और VPC Endpoint का उपयोग करके इस लागत से बचा जा सकता है

अतिरिक्त सामग्री

1 टिप्पणियां

 
GN⁺ 2025-11-21
Hacker News की राय
  • तीन बड़े cloud-संबंधित subreddits में ऐसे cost explosion cases लगभग रोज़ एक बार पोस्ट होते हुए अक्सर दिखते हैं
    cloud providers हमेशा देर से alerts देते हैं, और users के पास बस प्रार्थना और राहत की गुहार करने के अलावा कुछ नहीं बचता
    ऊपर से कुछ लोग दावा करते हैं कि “तकनीकी रूप से hard-cap account देना असंभव है”, लेकिन वास्तव में Azure में ऐसे account पहले से मौजूद हैं

    • मुझे लगता है यह दुर्भावना से ज़्यादा अयोग्यता और incentives की कमी का मिश्रण है
      मैंने 10 साल से ज़्यादा समय तक AWS इस्तेमाल किया है, और services के बीच design discontinuity तथा organization के भीतर siloing बहुत गंभीर रही है
      बड़े organizations में ऐसा issue सुलझाने वाला कोई executive नहीं होता जो KPI को नुकसान पहुँचा सकता हो; उसकी जगह AI या blockchain जैसे trendy services लॉन्च करके promotion points जुटाने पर ध्यान रहता है
    • AWS ने कल overage-free flat-rate pricing plan की घोषणा की
      आप monthly $0, $15, $200 plans में से चुन सकते हैं, जिससे unexpected requests या data transfer बढ़ने के कारण bill shock रोका जा सके
      AWS official blog link
    • वही खबर है, लेकिन इस बार CDN के लिए flat-rate pricing plan है। इसमें S3 storage और bandwidth सहित $0 tier भी है
      संबंधित HN thread
      cost cap सेट करते हुए service reliability बनाए रखना मुश्किल ज़रूर है, लेकिन इस मामले से यह तकनीकी रूप से संभव है, यह साबित हो गया
    • AWS का तरीका यह है कि अगर customer से गलती से charge हो जाए तो बाद में refund दे दिया जाए
      ऐसा service outage या infra failure से होने वाले reputational risk से बचने के लिए है
    • ऐसे पोस्टों में सबसे दुखद बात यह होती है कि अंत में निष्कर्ष निकलता है, “हमें bill को बेहतर समझना चाहिए था”
      लेकिन समस्या cloud खुद भी हो सकता है। predictable cost structure चाहिए होने वाले छोटे व्यवसायों के लिए cloud उपयुक्त न भी हो
  • यह इतना बार होता है कि मुझे लगता है S3 VPC endpoint को VPC बनाते समय default रूप से सेट होना चाहिए
    और NAT gateway की जगह fck-nat जैसे alternatives इस्तेमाल करने से per-GB traffic charges बचाए जा सकते हैं

    • लेकिन S3 Gateway endpoint cross-region S3 operations को तोड़ देता है, इसलिए default बदलना customers को नुकसान पहुँचा सकता है
    • IPv6 पर migrate करके Egress Gateway इस्तेमाल करने का तरीका भी है
    • console में VPC बनाते समय यह एक checkbox से configure किया जा सकता है
    • लेकिन console नहीं बल्कि IAC(Infrastructure as Code) से build करने की स्थिति में हर config को explicitly लिखना सही है
    • default रूप से VPC को security-first structure के साथ design होना चाहिए
      default deny access की स्थिति में explicit रूप से internet access allow करना चाहिए, नहीं तो attacker data exfiltrate कर सकता है
  • मैंने भी ऐसी ही गलती की थी
    AWS recommendation algorithm में test data upload करके भूल गया, और कुछ महीनों बाद bank से insufficient balance alert मिला
    algorithm चलता रहा और हर महीने $1,000 से ज़्यादा charge होता रहा, अंततः $5,000 निकल गए

    • मैं billing department में काम कर चुका हूँ, इसलिए ऐसे मामलों में मेरे अंदर healthy paranoia आ गई है
      मैं हर दिन balance चेक करता हूँ, हर billing mail को important mark करता हूँ
      और हर service के लिए virtual card limit सेट करने की आदत डाल ली है
  • मुझसे भी वही गलती हुई थी और मैंने $60,000 गंवा दिए
    समझ नहीं आता कि S3 endpoint default रूप से deploy क्यों नहीं होता

    • लगता है internal meeting में अगर कोई कहे “इसे default में डालते हैं”, तो जवाब आएगा “इससे revenue कम हो जाएगा” और बात टल जाएगी
    • इस तरह का मज़ाक भी निकलता है, “यह एक साल की salary है, लेकिन infra को self-host करने की complexity के बारे में सोचो”
  • “AWS bill इतना क्यों फटा” यह सवाल मुझे अक्सर मिलता है, और ज़्यादातर मामलों में वजह NAT + S3 + गलत assumptions का combo होता है
    EC2→S3 transfer free है, लेकिन अगर वह NAT से होकर जाए तो paid हो जाता है
    इसलिए मैं यह checklist देता हूँ

    1. private subnets जो S3 या DynamoDB से बार-बार बात करते हैं, उनके लिए Gateway Endpoint पर विचार करें
    2. NAT cost को अलग dashboard में monitor करें
    3. बड़े data move से पहले pricing flow diagram बनाकर देखें
      यह अच्छी बात थी कि Cost Anomaly Detection ने समय पर काम किया। $1,000 का नुकसान भी दर्द देता है, लेकिन $20,000 से बेहतर है
  • AWS से data download करते समय per-GB $0.09 देना पड़ता है, यह देखकर मैं चौंक गया
    data upload करना free है, लेकिन उसे वापस निकालने के लिए पैसा देना पड़ता है?

    • यह lock-in strategy का हिस्सा है। अंदर आना आसान है, बाहर निकलना महंगा
      यह मामला NAT config error के कारण internal transfer को external transfer के रूप में गिने जाने का एक खास case था
    • per-GB 9 cents तो लगभग mobile plan level की लूट जैसा लगता है। शायद इसी वजह से Cloudflare लोकप्रिय हुआ
    • upload सस्ता है लेकिन download महंगा। जब भी customer data को users तक पहुँचाता है, AWS उसका एक हिस्सा ले लेता है
    • consumer services में यह monthly subscription में शामिल होता है, लेकिन AWS की structure cost को सीधे महसूस करवाती है
    • “California से हो, निकल तो सकते हो लेकिन छोड़ नहीं सकते” वाला मज़ाक याद आता है
  • सोच रहा हूँ कि क्या Amazon ऐसी गलती पर refund देता है

    • यह amount और circumstances पर निर्भर करता है। मुझे भी पहले एक बड़ा refund मिला था, लेकिन कई बार explanation और recurrence prevention plan जमा करना पड़ा था
    • author ने कहा कि “हो सकता है AWS account credit दे, इसलिए मैं result update करूँगा”
    • वास्तव में AWS ऐसे मामलों में refund दे देता है। क्योंकि संभव है कि data वास्तव में बाहर गया ही न हो
    • मुझे भी कुछ बार refund मिला है। हालाँकि इसके साथ recurrence prevention की शर्त जुड़ी रहती है
    • आखिरकार यह customer के scale और payment capacity पर निर्भर करता है। $20 monthly customer $1,000 नहीं दे सकता, लेकिन $3,000 monthly customer शायद परवाह न करे
  • VPC NAT Gateway बदनाम है
    Amazon में काम करते समय मुझे भी पहले ऐसा ही issue हुआ था, लेकिन वह company account था इसलिए पैसे नहीं देने पड़े
    जिन लोगों को सच में यह पैसा देना पड़ता है, उनके लिए सचमुच बुरा लगता है

    • व्यक्तिगत रूप से मुझे समझ नहीं आता कि NAT gateway इतना common क्यों है। ज़्यादातर मामलों में Internet Gateway ही काफ़ी होता है
  • इस case में सीधे मदद नहीं मिलेगी, लेकिन AWS ने कल CDN के लिए flat-rate pricing plan लॉन्च किया
    इसमें S3 storage और bandwidth सहित $0 tier भी है
    संबंधित लिंक
    उम्मीद है कि आगे चलकर यह दूसरे services तक भी बढ़ेगा

  • जब मैं 22 साल का था और पहली बार infra छू रहा था, तब सिर्फ़ दो दिनों में $300 का bill आ गया था
    AWS शानदार है, लेकिन beginners के लिए cost calculation बहुत अपारदर्शी है

    • समझ नहीं आता कि वे इसे बेहतर क्यों नहीं करते