सर्वररहित एप्लिकेशन का त्रुटि-निवारण
Lambda फ़ंक्शन का प्रभावी ढंग से त्रुटि-निवारण करने की तकनीकें जानें, जिनमें स्थानीय परीक्षण, दूरस्थ त्रुटि-निवारण और समस्याओं के समाधान के लिए CloudWatch लॉग की व्याख्या शामिल है
सर्वररहित एप्लिकेशन का त्रुटि-निवारण, CoddyKit पर सर्वररहित AWS Lambda विकास का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह सर्वररहित AWS Lambda विकास सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। सर्वररहित AWS Lambda विकास पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
लैम्ब्डा की समस्या-निवारण का परिचय
सर्वररहित अनुप्रयोगों, विशेष रूप से AWS लैम्ब्डा फ़ंक्शन, की समस्या-निवारण में अनोखी चुनौतियाँ होती हैं। पारंपरिक अनुप्रयोगों के विपरीत, लैम्ब्डा फ़ंक्शन स्थिति-रहित और क्षणिक होते हैं।
इस पाठ में हम आपके लैम्ब्डा फ़ंक्शन की समस्याओं को प्रभावी ढंग से पहचानने और हल करने की व्यावहारिक तकनीकों का अध्ययन करेंगे, जिसमें स्थानीय परीक्षण से लेकर लॉग की व्याख्या तक शामिल है।
सर्वररहित समस्या-निवारण अनोखा क्यों है
पारंपरिक समस्या-निवारण में अक्सर IDE का उपयोग करके कोड को एक-एक पंक्ति करके आगे बढ़ाया जाता है। लैम्ब्डा के साथ यह हमेशा आसान नहीं होता, क्योंकि:
- क्षणिक प्रकृति: फ़ंक्शन केवल आह्वान किए जाने पर चलते हैं और फिर समाप्त हो जाते हैं।
- स्थिति-रहितता: आह्वानों के बीच कोई स्थायी मेमोरी नहीं होती।
- वितरित प्रणालियाँ: कई सेवाओं के बीच होने वाली परस्पर क्रियाओं से समस्याएँ उत्पन्न हो सकती हैं।
क्या हो रहा है, यह समझने के लिए हम लॉग, मेट्रिक्स और ट्रेसिंग पर बहुत अधिक निर्भर रहते हैं।
SAM CLI के साथ स्थानीय परीक्षण
समस्या-निवारण के सबसे प्रभावी तरीकों में से एक है AWS पर परिनियोजित करने से पहले अपने लैम्ब्डा फ़ंक्शन का स्थानीय रूप से परीक्षण करना।
AWS Serverless Application Model (SAM) CLI आपको अपने स्थानीय कंप्यूटर पर लैम्ब्डा फ़ंक्शन का आह्वान करने देता है और AWS लैम्ब्डा के रनटाइम परिवेश का अनुकरण करता है।
- प्रतिक्रिया चक्र तेज़ होता है।
- अपने परिचित स्थानीय समस्या-निवारण उपकरणों का उपयोग करें।
SAM CLI स्थानीय आह्वान का प्रदर्शन
यह एक सरल Python लैम्ब्डा फ़ंक्शन है। स्थानीय परीक्षण के लिए आप किसी इवेंट और संदर्भ का अनुकरण कर सकते हैं। इसे चलाकर देखें!
import json
def lambda_handler(event, context):
message = event.get('message', 'Hello from Lambda!')
print(f"Received event: {json.dumps(event)}")
print(f"Processing message: {message}")
return {
'statusCode': 200,
'body': json.dumps({'response': message})
}
# This block allows local execution
if __name__ == '__main__':
# Simulate an event
test_event = {'message': 'Local debug test'}
# Simulate a context object
test_context = type('obj', (object,), {'invoked_function_arn': 'local'})()
response = lambda_handler(test_event, test_context)
print("\n--- Lambda Response ---")
print(json.dumps(response, indent=2))
समस्या-निवारण के लिए CloudWatch Logs
आपका लैम्ब्डा परिनियोजित हो जाने के बाद, Amazon CloudWatch Logs उसके व्यवहार को समझने और समस्याओं का निवारण करने का आपका मुख्य उपकरण बन जाता है।
हर बार आपके लैम्ब्डा फ़ंक्शन का आह्वान होने पर लॉग एक समर्पित लॉग समूह में भेजे जाते हैं। प्रत्येक आह्वान को एक विशिष्ट Request ID मिलता है, जो उसके निष्पादन का पता लगाने में सहायता करता है।
- लॉग समूह: किसी विशिष्ट फ़ंक्शन के लॉग रखते हैं।
- लॉग स्ट्रीम: आपके फ़ंक्शन के लॉग के विशिष्ट उदाहरण होते हैं।
लॉग में समस्याएँ ढूँढना
जब कोई त्रुटि होती है, तो सबसे पहले CloudWatch Logs देखें। आप:
- लॉग फ़िल्टर करें: "ERROR", "Exception" या विशिष्ट संदेशों जैसे कीवर्ड खोजें।
- लॉग इनसाइट्स: लॉग का विश्लेषण करने, त्रुटियों को समूहित करने और रुझानों की पहचान करने के लिए शक्तिशाली क्वेरी भाषा का उपयोग करें।
- Request ID: किसी विशिष्ट निष्पादन से संबंधित सभी लॉग ढूँढने के लिए आह्वान से प्राप्त Request ID का उपयोग करें।
विस्तृत त्रुटि जानकारी के लिए हमेशा पूरा स्टैक ट्रेस देखें।
लॉग कथनों के साथ समस्या-निवारण
लैम्ब्डा के लिए सबसे सरल, फिर भी सबसे शक्तिशाली समस्या-निवारण तकनीक print() (Python) या console.log() (Node.js) कथनों का उपयोग करना है।
रणनीतिक रूप से लॉग कथन जोड़कर आप अपने कोड में विभिन्न बिंदुओं पर चर के मान, निष्पादन पथ और फ़ंक्शन की स्थिति पर नज़र रख सकते हैं। आइए, एक उदाहरण देखें:
import json
def calculate_discount(price, discount_percentage):
print(f"DEBUG: Initial price: {price}")
if not isinstance(price, (int, float)) or price < 0:
raise ValueError("Price must be non-negative.")
if not isinstance(discount_percentage, (int, float)) or not (0 <= discount_percentage <= 100):
raise ValueError("Discount must be between 0 and 100.")
discount_amount = price * (discount_percentage / 100)
final_price = price - discount_amount
print(f"DEBUG: Final price: {final_price}")
return final_price
def lambda_handler(event, context):
try:
data = json.loads(event['body'])
price = data['price']
discount = data['discount']
final_price = calculate_discount(price, discount)
return {
'statusCode': 200,
'body': json.dumps({'originalPrice': price, 'finalPrice': final_price})
}
except Exception as e:
print(f"ERROR: An error occurred: {e}")
return {
'statusCode': 400,
'body': json.dumps({'error': str(e)})
}
if __name__ == '__main__':
# Test case 1: Valid input
test_event_1 = {'body': json.dumps({'price': 100, 'discount': 10})}
response_1 = lambda_handler(test_event_1, None)
print("\n--- Test Case 1 Response ---")
print(json.dumps(response_1, indent=2))
# Test case 2: Invalid discount
test_event_2 = {'body': json.dumps({'price': 50, 'discount': 110})}
response_2 = lambda_handler(test_event_2, None)
print("\n--- Test Case 2 Response ---")
print(json.dumps(response_2, indent=2))
आह्वान त्रुटियों को समझना
लैम्ब्डा फ़ंक्शन कई कारणों से विफल हो सकते हैं। विभिन्न प्रकार की त्रुटियों में अंतर करना बहुत महत्वपूर्ण है:
- फ़ंक्शन त्रुटियाँ: आपके कोड ने बिना संभाला गया अपवाद उत्पन्न किया। ये स्टैक ट्रेस के साथ CloudWatch Logs में दिखाई देती हैं।
- आह्वान त्रुटियाँ: आपके कोड के चलने से पहले होने वाली समस्याएँ, जैसे अनुमतियों की त्रुटियाँ या पेलोड आकार की सीमाएँ। ये सीधे आपके फ़ंक्शन के लॉग में दिखाई भी नहीं दे सकतीं।
- टाइमआउट त्रुटियाँ: आपके फ़ंक्शन ने अपनी कॉन्फ़िगर की गई निष्पादन अवधि पार कर दी।
CloudWatch मेट्रिक्स और X-Ray (एक अन्य पाठ में!) इनकी पहचान करने में सहायता करते हैं।
अनुरोध प्रवाह का पता लगाना
जटिल सर्वररहित अनुप्रयोगों में एक अनुरोध में कई लैम्ब्डा फ़ंक्शन, API Gateway, SQS, DynamoDB और अन्य सेवाएँ शामिल हो सकती हैं।
इन सेवाओं के बीच अनुरोध के प्रवाह को समझना समस्या-निवारण के लिए महत्वपूर्ण है। विभिन्न घटकों के लॉग को आपस में जोड़ने के लिए Request ID (जिसे अक्सर x-amzn-RequestId या इसी तरह के रूप में आगे भेजा जाता है) का उपयोग करें।
AWS X-Ray (जिसे बाद के पाठ में शामिल किया गया है) इस उद्देश्य के लिए दृश्य ट्रेसिंग प्रदान करता है।
समस्या-निवारण की सर्वोत्तम पद्धतियाँ
समस्या-निवारण की परेशानियों को कम करने के लिए ये पद्धतियाँ अपनाएँ:
- व्यापक लॉगिंग: इनपुट, आउटपुट और प्रमुख चर की स्थितियों को लॉग करें।
- संरचित लॉगिंग: आसानी से पार्स और क्वेरी करने के लिए JSON लॉग का उपयोग करें।
- इडेम्पोटेंसी: फ़ंक्शन को इस तरह डिज़ाइन करें कि कई बार आह्वान किए जाने पर भी वह समान परिणाम दे।
- छोटे फ़ंक्शन: इन्हें अलग करना और परीक्षण करना आसान होता है।
- स्वचालित परीक्षण: इकाई और एकीकरण परीक्षण समस्याओं को जल्दी पकड़ लेते हैं।
समस्या-निवारण चुनौती
आपके पास एक लैम्ब्डा फ़ंक्शन है जो उपयोगकर्ता पंजीकरण संसाधित करता है। उपयोगकर्ता बताते हैं कि कभी-कभी उनका पंजीकरण विफल हो जाता है, लेकिन आपके लैम्ब्डा फ़ंक्शन के CloudWatch Logs में कोई "ERROR" संदेश दिखाई नहीं देता।
इसका सबसे संभावित कारण क्या है और आपको सबसे पहले कहाँ जाँच करनी चाहिए?
पुनरावलोकन: सर्वररहित समस्या-निवारण
हमने आपके सर्वरलेस अनुप्रयोगों की डीबगिंग के लिए आवश्यक तकनीकों को समझ लिया है:
- तेज़ी से बदलाव आज़माने के लिए SAM CLI के साथ स्थानीय परीक्षण।
- फ़ंक्शन के व्यवहार का विश्लेषण करने और त्रुटियों की पहचान करने के लिए CloudWatch Logs का उपयोग।
- निष्पादन के प्रवाह का पता लगाने के लिए लॉग कथनों का उपयोग।
- Lambda त्रुटियों के विभिन्न प्रकारों को समझना।
- ऐसे सर्वरलेस फ़ंक्शन बनाने की सर्वोत्तम विधियाँ, जिनकी डीबगिंग आसान हो।
इन तकनीकों में दक्षता प्राप्त करने से मजबूत सर्वरलेस अनुप्रयोग बनाने की आपकी क्षमता में काफ़ी सुधार होगा।
एआई शिक्षक के साथ सर्वररहित AWS Lambda विकास सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 12
- पाठ
- 48
अक्सर पूछे जाने वाले प्रश्न
क्या “सर्वररहित एप्लिकेशन का त्रुटि-निवारण” पाठ निःशुल्क है?
हाँ—“सर्वररहित एप्लिकेशन का त्रुटि-निवारण” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और सर्वररहित AWS Lambda विकास पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। सर्वररहित AWS Lambda विकास पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“सर्वररहित एप्लिकेशन का त्रुटि-निवारण” में मैं क्या सीखूँगा?
Lambda फ़ंक्शन का प्रभावी ढंग से त्रुटि-निवारण करने की तकनीकें जानें, जिनमें स्थानीय परीक्षण, दूरस्थ त्रुटि-निवारण और समस्याओं के समाधान के लिए CloudWatch लॉग की व्याख्या शामिल है आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ सर्वररहित AWS Lambda विकास का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या सर्वररहित AWS Lambda विकास शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर सर्वररहित AWS Lambda विकास शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“सर्वररहित एप्लिकेशन का त्रुटि-निवारण” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस सर्वररहित AWS Lambda विकास पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर सर्वररहित AWS Lambda विकास पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- CloudWatch लॉग और मापदंड
- त्रुटि प्रबंधन और पुनःप्रयास
- सर्वररहित एप्लिकेशन का त्रुटि-निवारण
- कस्टम मापदंड और CloudWatch चेतावनियाँ