AWS लाम्बा - पायथन में कार्य

इस अध्याय में, हम पायथन में एक साधारण AWS लैम्ब्डा फंक्शन बनाएंगे और विस्तार से इसकी कार्य अवधारणाओं को समझेंगे।

AWS में लैम्ब्डा फंक्शन बनाने पर काम करने से पहले, हमें Python के लिए AWS टूलकिट सपोर्ट चाहिए। इस उद्देश्य के लिए, नीचे दिए गए चरणों का पालन करें और संबंधित स्क्रीनशॉट का अवलोकन करें -

चरण 1

AWS कंसोल में लॉगिन करें और लैम्ब्डा फ़ंक्शन बनाएं और पायथन के रूप में भाषा चुनें।

चरण 2

अब, क्लिक करें Create functionबटन और पायथन में एक साधारण AWS लैम्ब्डा बनाने के लिए विवरण दर्ज करें। यह कोड संदेश लौटाता हैHello from Lambda using Python और यहाँ दिखाया गया है -

चरण 3

अब, परिवर्तनों को सहेजें और आउटपुट को देखने के लिए कोड का परीक्षण करें। जब आप UI से परीक्षण बटन का उपयोग करके AWS कंसोल में इसका परीक्षण करते हैं, तो आपको निम्न आउटपुट और लॉग देखना चाहिए।

चरण 4

अब, आप किसी भी संपादक या पायथन के लिए एक आईडीई के अंदर कोड लिख सकते हैं। यहां, हम कोड लिखने के लिए दृश्य स्टूडियो कोड का उपयोग कर रहे हैं। आपको बाद में फ़ाइल को ज़िप करना चाहिए और AWS कंसोल में अपलोड करना चाहिए।

यहां, हमने कोड को ज़िप किया है और इसका उपयोग एडब्ल्यूएस कंसोल द्वारा किया गया है।

चरण 5

अब, चयन करें Upload a .ZIP file नीचे दिखाए अनुसार विकल्प -

पायथन के लिए हैंडलर विवरण

ध्यान दें कि हैंडलर को फ़ंक्शन के नाम के बाद फाइल का नाम होना चाहिए। उपरोक्त मामले में, हमारी फ़ाइल का नाम हैhellopython.py और फ़ंक्शन का नाम है my_handler; तो हैंडलर होगा hellopython.my_handler

एक बार जब अपलोड किया जाता है और परिवर्तन सहेजे जाते हैं, तो यह वास्तव में AWS लैम्ब्डा कंसोल में ऑनलाइन संपादक में ज़िप फ़ाइल का विवरण दिखाता है। अब, आउटपुट और लॉग को देखने के लिए कोड का परीक्षण करते हैं।

अब, हम निम्नलिखित नमूना कोड का उपयोग करते हुए लैम्ब्डा फ़ंक्शन के विवरण को समझते हैं -

def my_handler(event, context):
   return "aws lambda in python using zip file"

उपरोक्त कोड में, फ़ंक्शन नाम my_handler 2 params, घटना और संदर्भ में है।

पायथन में प्रसंग वस्तु

संदर्भ वस्तु लैंबडा फ़ंक्शन के नाम, मिलीसेकंड में शेष समय, अनुरोध आईडी, क्लाउड वॉच समूह का नाम, टाइमआउट विवरण आदि जैसे विवरण देती है।

संदर्भ वस्तु पर उपलब्ध तरीके और विशेषताएँ नीचे दी गई सारणी में दिखाई गई हैं -

अनु क्रमांक विधि का नाम और विवरण
1

get_remaining_time_in_millis()

यह विधि मिलीसेकंड में शेष समय तब तक देती है जब तक लंबोदा फ़ंक्शन फ़ंक्शन को समाप्त नहीं करता है

अनु क्रमांक विशेषता और विवरण
1

function_name

यह aws lambda फ़ंक्शन नाम देता है

2

function_version

यह aws lambda function को क्रियान्वित करने का संस्करण देता है

3

invoked_function_arn

यह ARN विवरण देगा।

4

memory_limit_in_mb

यह मेमना समारोह बनाते समय जोड़ी गई मेमोरी सीमा को दर्शाता है

5

aws_request_id

यह aws request id देता है।

6

og_group_name

यह क्लाउडवॉच समूह के नाम का नाम देगा

7

log_stream_name

यह क्लाउडवॉच लॉग स्ट्रीम नाम देगा जहां लॉग लिखे गए हैं।

8

identity

यह amazon cognito आइडेंटिटी प्रोवाइडर के बारे में डिटेल्स देगा जब aws mobile sdk के साथ प्रयोग किया जाएगा। दिए गए विवरण इस प्रकार हैं -

  • identity.cognito_identity_id
  • identity.cognito_identity_pool_id
9

client_context

यह क्लाइंट एप्लिकेशन का विवरण देगा जब इसका उपयोग मोबाइल sdk के साथ किया जाएगा। दिए गए विवरण इस प्रकार हैं -

  • client_context.client.installation_id
  • client_context.client.app_title
  • client_context.client.app_version_name
  • client_context.client.app_version_code
  • client_context.client.app_package_name
  • client_context.custom - इसमें मोबाइल क्लाइंट ऐप से कस्टम मानों का ताना-बाना है
  • client_context.env - इसमें AWS मोबाइल SDK से पर्यावरण संबंधी विवरण हैं

आइए हम पायथन में एक कार्यशील उदाहरण देखते हैं जो संदर्भ विवरण को आउटपुट करता है। नीचे दिए गए कोड को देखें -

def my_handler(event, context):
   print("Log stream name:", context.log_stream_name)
   print("Log group name:",  context.log_group_name)
   print("Request ID:",context.aws_request_id)
   print("Mem. limits(MB):", context.memory_limit_in_mb)
   print("Time remaining (MS):", context.get_remaining_time_in_millis())
   return "aws lambda in python using zip file"

ऊपर दिखाए गए कोड का संबंधित आउटपुट नीचे दिया गया है -

पायथन का उपयोग कर लॉगिंग करना

पायथन का उपयोग करके जानकारी लॉग करने के लिए, हम प्रिंट या लॉगर फ़ंक्शन उपलब्ध का उपयोग कर सकते हैं। आइए हम संदर्भ के उपरोक्त उदाहरण का उपयोग करें और लॉग को मुद्रित करने के लिए देखने के लिए inCloudWatch की जांच करें। निम्नलिखित कोड देखें -

def my_handler(event, context):
   print("Log stream name:", context.log_stream_name)
   print("Log group name:",  context.log_group_name)
   print("Request ID:",context.aws_request_id)
   print("Mem. limits(MB):", context.memory_limit_in_mb)
   print("Time remaining (MS):", context.get_remaining_time_in_millis())
   return "aws lambda in python using zip file"

CloudWatch में इस कोड का आउटपुट नीचे दिखाया गया है -

CloudWatch में लॉग को प्रिंट करने के लिए लकड़हारा का उपयोग करने के बारे में समझने के लिए निम्न उदाहरण देखें -

import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def my_handler(event, context):
   logger.info('Using logger to print messages to cloudwatch logs')
   return "aws lambda in python using zip file"

इसके लिए आउटपुट नीचे दिए गए स्क्रीनशॉट में दिखाया जाएगा -

लैम्ब्डा फ़ंक्शन के लिए पायथन में त्रुटि से निपटने

इस खंड में, हम एक कार्यशील उदाहरण देखते हैं जो दिखाता है कि पायथन में त्रुटियों को कैसे नियंत्रित किया जाए। यहां दिए गए कोड के टुकड़े का निरीक्षण करें -

def error_handler(event, context):
   raise Exception('Error Occured!')

लॉग डिस्प्ले यहाँ चित्र में दिखाया गया है -