AWS Solutions Architect · पाठ

Lambda फ़ंक्शन: रनटाइम, ट्रिगर और हैंडलर

Lambda फ़ंक्शन लिखिए, रनटाइम चुनिए, मेमोरी और timeout कॉन्फ़िगर कीजिए तथा उसे S3 इवेंट या API Gateway ट्रिगर से जोड़िए।

पाठ 1, कुल 4 में से13 चरण

Lambda फ़ंक्शन: रनटाइम, ट्रिगर और हैंडलर, CoddyKit पर AWS Solutions Architect का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह AWS Solutions Architect सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। AWS Solutions Architect पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

AWS Lambda क्या है

AWS Lambda एक सर्वरलेस कंप्यूट सेवा है, जो सर्वर उपलब्ध कराने या प्रबंधित करने की आवश्यकता के बिना इवेंट के उत्तर में आपका कोड चलाती है। आप केवल उपयोग किए गए कंप्यूट समय के लिए भुगतान करते हैं—जिसे मिलीसेकंड में मापा जाता है—इसलिए कभी-कभार चलने वाले, इवेंट-आधारित वर्कलोड के लिए Lambda बेहद किफ़ायती है। आने वाले इवेंट के आधार पर Lambda शून्य से लेकर हज़ारों समवर्ती निष्पादनों तक अपने-आप स्केल हो सकती है।

समर्थित रनटाइम

Lambda में प्रबंधित रनटाइम के रूप में Python, Node.js, Java, Go, Ruby, .NET और अन्य विकल्प शामिल हैं। AWS इन रनटाइम का रखरखाव करता है और सुरक्षा पैच लागू करता है। जिन भाषाओं या रनटाइम संस्करणों का मूल रूप से समर्थन नहीं है, उनके लिए आप bootstrap निष्पादन योग्य फ़ाइल के माध्यम से Custom Runtime दे सकते हैं या अपने फ़ंक्शन को ZIP परिनियोजन पैकेज के बजाय कंटेनर इमेज (अधिकतम 10 GB) में पैकेज कर सकते हैं।

Lambda हैंडलर फ़ंक्शन

हर Lambda फ़ंक्शन में एक हैंडलर होता है—यह वह प्रवेश बिंदु है जिसे आपका कोड एक्सपोर्ट करना आवश्यक है। AWS हैंडलर को दो आर्ग्युमेंट के साथ कॉल करता है: इवेंट ऑब्जेक्ट (ट्रिगर से प्राप्त इनपुट डेटा) और कॉन्टेक्स्ट ऑब्जेक्ट (इनवोकेशन से जुड़ा मेटाडेटा, जैसे फ़ंक्शन का नाम, बचा हुआ समय और रिक्वेस्ट ID)। इनवोकेशन के प्रकार के आधार पर हैंडलर एक ऐसा रिस्पॉन्स लौटाता है जिसे कॉलर को वापस भेजा जा सकता है।

# Python handler example
def lambda_handler(event, context):
    # event contains the trigger payload
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']
    print(f'Processing {key} from {bucket}')
    return {
        'statusCode': 200,
        'body': 'Processed successfully'
    }

मेमोरी, टाइमआउट और अस्थायी स्टोरेज

Lambda आपको 128 MB से 10,240 MB तक मेमोरी कॉन्फ़िगर करने की सुविधा देता है। CPU को मेमोरी के अनुपात में आवंटित किया जाता है—अधिक मेमोरी का अर्थ है अधिक CPU। टाइमआउट 1 सेकंड से 15 मिनट तक सेट किया जा सकता है; यदि आपका फ़ंक्शन इस सीमा से अधिक समय लेता है, तो Lambda उसे समाप्त कर देता है। आपको एक ही इनवोकेशन के दौरान अस्थायी फ़ाइलों के लिए /tmp अस्थायी स्टोरेज भी मिलता है (डिफ़ॉल्ट रूप से 512 MB, जिसे अधिकतम 10 GB तक कॉन्फ़िगर किया जा सकता है)। यह स्टोरेज अलग-अलग इनवोकेशन के बीच स्थायी नहीं रहता।

सिंक्रोनस बनाम एसिंक्रोनस इनवोकेशन

Lambda फ़ंक्शन को सिंक्रोनस रूप से (कॉलर परिणाम की प्रतीक्षा करता है—API गेटवे और ALB में इसका उपयोग होता है) या एसिंक्रोनस रूप से (कॉलर प्रतीक्षा नहीं करता—S3 इवेंट और SNS में इसका उपयोग होता है) इनवोक किया जा सकता है। एसिंक्रोनस मोड में Lambda असफल एक्ज़ीक्यूशन को अधिकतम दो बार दोबारा आज़माता है और असफल इवेंट को डेड लेटर क्यू (SQS या SNS) या EventBridge इवेंट बस पर भेज सकता है। सही इनवोकेशन मोड चुनने से त्रुटि-प्रबंधन का डिज़ाइन प्रभावित होता है।

सामान्य Lambda ट्रिगर

Lambda इवेंट स्रोतों (ट्रिगर) के रूप में दर्जनों AWS सेवाओं के साथ मूल रूप से एकीकृत होता है:

  • API गेटवे / ALB: HTTP रिक्वेस्ट (सिंक्रोनस)
  • S3: ऑब्जेक्ट बनाने/हटाने के इवेंट (एसिंक्रोनस)
  • DynamoDB स्ट्रीम / Kinesis: रिकॉर्ड स्ट्रीमिंग (पोल-आधारित, सिंक्रोनस)
  • SQS: क्यू संदेश (पोल-आधारित)
  • SNS: टॉपिक सूचनाएँ (एसिंक्रोनस)
  • EventBridge: शेड्यूल किए गए या कस्टम इवेंट
  • CloudWatch लॉग: लॉग सब्सक्रिप्शन फ़िल्टर

IAM एक्ज़ीक्यूशन भूमिका

हर Lambda फ़ंक्शन के पास एक IAM एक्ज़ीक्यूशन भूमिका होना आवश्यक है, जो फ़ंक्शन को अन्य AWS सेवाओं को कॉल करने की अनुमतियाँ देती है। उदाहरण के लिए, यदि आपका फ़ंक्शन S3 से पढ़ता है और DynamoDB में लिखता है, तो एक्ज़ीक्यूशन भूमिका में s3:GetObject और dynamodb:PutItem की अनुमतियाँ होनी चाहिए। न्यूनतम-अधिकार सिद्धांत का पालन करें: केवल वही अनुमतियाँ दें जिनकी आपके फ़ंक्शन को वास्तव में आवश्यकता है। मूल एक्ज़ीक्यूशन भूमिका में CloudWatch लॉग के लिए logs:CreateLogGroup, logs:CreateLogStream और logs:PutLogEvents भी शामिल होने चाहिए।

डिप्लॉयमेंट पैकेज और आकार सीमाएँ

Lambda दो डिप्लॉयमेंट फ़ॉर्मैट स्वीकार करता है: एक ZIP फ़ाइल (संपीड़ित रूप में 50 MB, अनज़िप होने पर 250 MB), जिसे सीधे या S3 के माध्यम से अपलोड किया जाता है, और एक कंटेनर इमेज (अधिकतम 10 GB), जिसे Amazon ECR में संग्रहीत किया जाता है। ZIP पैकेज तेज़ी से डिप्लॉय होते हैं और छोटे फ़ंक्शन तथा Lambda लेयर्स के लिए उपयुक्त हैं। कंटेनर इमेज बड़े निर्भरता-समूहों या Docker-आधारित कार्यप्रवाह का उपयोग करने वाली टीमों के लिए आदर्श हैं। दोनों फ़ॉर्मैट समान रनटाइम और हैंडलर पैटर्न का उपयोग कर सकते हैं।

# Deploy a ZIP package from S3
aws lambda update-function-code \
  --function-name 'MyFunction' \
  --s3-bucket 'my-lambda-packages' \
  --s3-key 'my-function-v2.zip'

एनवायरनमेंट वेरिएबल और सीक्रेट

एनवायरनमेंट वेरिएबल के माध्यम से Lambda को कॉन्फ़िगरेशन दें। संवेदनशील मानों (API कुंजियाँ, डेटाबेस पासवर्ड) को AWS Secrets Manager या Parameter Store में रखें और एक्ज़ीक्यूशन कॉन्टेक्स्ट के पुनः उपयोग का लाभ लेने के लिए फ़ंक्शन के प्रारंभ होने पर (हैंडलर के बाहर) उन्हें प्राप्त करें। अपने फ़ंक्शन कोड या एनवायरनमेंट वेरिएबल में सीक्रेट को कभी भी सादे टेक्स्ट के रूप में हार्डकोड न करें—उन्हें स्थिर अवस्था में सुरक्षित रखने के लिए Lambda एनवायरनमेंट वेरिएबल के साथ KMS एन्क्रिप्शन का उपयोग करें।

import boto3
import os

# Fetch secret once during cold start (outside handler)
ssm = boto3.client('ssm')
DB_PASSWORD = ssm.get_parameter(
    Name=os.environ['DB_PASSWORD_PARAM'],
    WithDecryption=True
)['Parameter']['Value']

def lambda_handler(event, context):
    # DB_PASSWORD is already loaded; no SSM call on each invocation
    pass

कोल्ड स्टार्ट और एक्ज़ीक्यूशन कॉन्टेक्स्ट का पुनः उपयोग

डिप्लॉयमेंट के बाद या कुछ समय तक निष्क्रिय रहने के बाद Lambda फ़ंक्शन का पहला इनवोकेशन कोल्ड स्टार्ट से प्रभावित होता है: AWS को रनटाइम एनवायरनमेंट शुरू करना, आपका डिप्लॉयमेंट पैकेज डाउनलोड करना और प्रारंभिक कोड चलाना पड़ता है। उसी एक्ज़ीक्यूशन एनवायरनमेंट के भीतर होने वाले बाद के इनवोकेशन वार्म स्टार्ट होते हैं और बहुत तेज़ होते हैं। ग्लोबल प्रारंभिक कोड (SDK क्लाइंट, DB कनेक्शन) को हैंडलर के बाहर रखें, ताकि वार्म इनवोकेशन के दौरान एक्ज़ीक्यूशन कॉन्टेक्स्ट का पुनः उपयोग किया जा सके।

VPC में Lambda

डिफ़ॉल्ट रूप से Lambda AWS द्वारा प्रबंधित VPC में चलता है और इंटरनेट तक पहुँच सकता है, लेकिन आपके निजी VPC संसाधनों तक नहीं। किसी निजी सबनेट में मौजूद RDS डेटाबेस या ElastiCache क्लस्टर तक पहुँचने के लिए, सबनेट और सुरक्षा समूह निर्दिष्ट करके Lambda को अपने VPC के अंदर चलाने के लिए कॉन्फ़िगर करें। VPC-सक्षम Lambda फ़ंक्शन नेटवर्किंग के लिए Hyperplane ENI का उपयोग करते हैं (अब प्रत्येक फ़ंक्शन के लिए अलग ENI प्रोविज़न करने की आवश्यकता नहीं होती), जिससे VPC Lambda के लिए पहले होने वाला कोल्ड-स्टार्ट दंड समाप्त हो जाता है।

aws lambda update-function-configuration \
  --function-name 'MyFunction' \
  --vpc-config 'SubnetIds=subnet-aaa111,subnet-bbb222,SecurityGroupIds=sg-xyz'

त्वरित जाँच

इस पाठ में AWS Solutions Architect (SAA-C03) की अवधारणाओं की अपनी समझ जाँचें।

पाठ का पुनरावलोकन

इस पाठ में आपने सीखा: Lambda रनटाइम Python, Node.js, Java, Go और अन्य भाषाओं का समर्थन करते हैं; उन्नत स्थितियों के लिए कस्टम रनटाइम और कंटेनर इमेज भी उपलब्ध हैं। API गेटवे (सिंक्रोनस) और S3/SNS (एसिंक्रोनस) सहित ट्रिगर यह निर्धारित करते हैं कि इवेंट Lambda फ़ंक्शन तक कैसे पहुँचते हैं। अन्य AWS सेवाओं से सुरक्षित रूप से जुड़ने के लिए एक्ज़ीक्यूशन भूमिका, एनवायरनमेंट वेरिएबल और VPC कॉन्फ़िगरेशन महत्वपूर्ण पहलू हैं। आगे हम Lambda की समवर्तीता, थ्रॉटलिंग और आरक्षित समवर्तीता को समझेंगे।

शुरुआत निःशुल्क

एआई शिक्षक के साथ AWS Solutions Architect सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
30
पाठ
120

अक्सर पूछे जाने वाले प्रश्न

क्या “Lambda फ़ंक्शन: रनटाइम, ट्रिगर और हैंडलर” पाठ निःशुल्क है?

हाँ — AWS Solutions Architect अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Lambda फ़ंक्शन: रनटाइम, ट्रिगर और हैंडलर” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। AWS Solutions Architect पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Lambda फ़ंक्शन: रनटाइम, ट्रिगर और हैंडलर” में मैं क्या सीखूँगा?

Lambda फ़ंक्शन लिखिए, रनटाइम चुनिए, मेमोरी और timeout कॉन्फ़िगर कीजिए तथा उसे S3 इवेंट या API Gateway ट्रिगर से जोड़िए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ AWS Solutions Architect का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या AWS Solutions Architect शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर AWS Solutions Architect शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“Lambda फ़ंक्शन: रनटाइम, ट्रिगर और हैंडलर” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस AWS Solutions Architect पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर AWS Solutions Architect पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Lambda फ़ंक्शन: रनटाइम, ट्रिगर और हैंडलर
  2. समवर्तीता, थ्रॉटलिंग और आरक्षित समवर्तीता
  3. Lambda लेयर और डिप्लॉयमेंट पैकेज
  4. Lambda@Edge और इवेंट-आधारित पैटर्न
← AWS Solutions Architect पर वापस जाएँ