- 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 की समीक्षा की और यह पुष्टि की कि
- एक ही region के भीतर EC2–S3 transfer मुफ़्त है
- 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 टिप्पणियां
Hacker News की राय
तीन बड़े cloud-संबंधित subreddits में ऐसे cost explosion cases लगभग रोज़ एक बार पोस्ट होते हुए अक्सर दिखते हैं
cloud providers हमेशा देर से alerts देते हैं, और users के पास बस प्रार्थना और राहत की गुहार करने के अलावा कुछ नहीं बचता
ऊपर से कुछ लोग दावा करते हैं कि “तकनीकी रूप से hard-cap account देना असंभव है”, लेकिन वास्तव में Azure में ऐसे account पहले से मौजूद हैं
मैंने 10 साल से ज़्यादा समय तक AWS इस्तेमाल किया है, और services के बीच design discontinuity तथा organization के भीतर siloing बहुत गंभीर रही है
बड़े organizations में ऐसा issue सुलझाने वाला कोई executive नहीं होता जो KPI को नुकसान पहुँचा सकता हो; उसकी जगह AI या blockchain जैसे trendy services लॉन्च करके promotion points जुटाने पर ध्यान रहता है
आप monthly $0, $15, $200 plans में से चुन सकते हैं, जिससे unexpected requests या data transfer बढ़ने के कारण bill shock रोका जा सके
AWS official blog link
संबंधित HN thread
cost cap सेट करते हुए service reliability बनाए रखना मुश्किल ज़रूर है, लेकिन इस मामले से यह तकनीकी रूप से संभव है, यह साबित हो गया
ऐसा service outage या infra failure से होने वाले reputational risk से बचने के लिए है
लेकिन समस्या cloud खुद भी हो सकता है। predictable cost structure चाहिए होने वाले छोटे व्यवसायों के लिए cloud उपयुक्त न भी हो
यह इतना बार होता है कि मुझे लगता है S3 VPC endpoint को VPC बनाते समय default रूप से सेट होना चाहिए
और NAT gateway की जगह fck-nat जैसे alternatives इस्तेमाल करने से per-GB traffic charges बचाए जा सकते हैं
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 निकल गए
मैं हर दिन balance चेक करता हूँ, हर billing mail को important mark करता हूँ
और हर service के लिए virtual card limit सेट करने की आदत डाल ली है
मुझसे भी वही गलती हुई थी और मैंने $60,000 गंवा दिए
समझ नहीं आता कि S3 endpoint default रूप से deploy क्यों नहीं होता
“AWS bill इतना क्यों फटा” यह सवाल मुझे अक्सर मिलता है, और ज़्यादातर मामलों में वजह NAT + S3 + गलत assumptions का combo होता है
EC2→S3 transfer free है, लेकिन अगर वह NAT से होकर जाए तो paid हो जाता है
इसलिए मैं यह checklist देता हूँ
यह अच्छी बात थी कि Cost Anomaly Detection ने समय पर काम किया। $1,000 का नुकसान भी दर्द देता है, लेकिन $20,000 से बेहतर है
AWS से data download करते समय per-GB $0.09 देना पड़ता है, यह देखकर मैं चौंक गया
data upload करना free है, लेकिन उसे वापस निकालने के लिए पैसा देना पड़ता है?
यह मामला NAT config error के कारण internal transfer को external transfer के रूप में गिने जाने का एक खास case था
सोच रहा हूँ कि क्या Amazon ऐसी गलती पर refund देता है
VPC NAT Gateway बदनाम है
Amazon में काम करते समय मुझे भी पहले ऐसा ही issue हुआ था, लेकिन वह company account था इसलिए पैसे नहीं देने पड़े
जिन लोगों को सच में यह पैसा देना पड़ता है, उनके लिए सचमुच बुरा लगता है
इस case में सीधे मदद नहीं मिलेगी, लेकिन AWS ने कल CDN के लिए flat-rate pricing plan लॉन्च किया
इसमें S3 storage और bandwidth सहित $0 tier भी है
संबंधित लिंक
उम्मीद है कि आगे चलकर यह दूसरे services तक भी बढ़ेगा
जब मैं 22 साल का था और पहली बार infra छू रहा था, तब सिर्फ़ दो दिनों में $300 का bill आ गया था
AWS शानदार है, लेकिन beginners के लिए cost calculation बहुत अपारदर्शी है