Lambda लेयर और डिप्लॉयमेंट पैकेज
साझा निर्भरताओं को पुनः उपयोग योग्य Lambda लेयर में बंडल कीजिए और बड़े रनटाइम के लिए डिप्लॉयमेंट पैकेज प्रबंधित कीजिए।
Lambda लेयर और डिप्लॉयमेंट पैकेज, CoddyKit पर AWS Solutions Architect का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह AWS Solutions Architect सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। AWS Solutions Architect पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Lambda में निर्भरता की समस्या
Lambda डिप्लॉयमेंट पैकेज आत्मनिर्भर होने चाहिए—सभी निर्भरताएँ (लाइब्रेरी, SDK और बाइनरी) ZIP में शामिल होनी चाहिए। इससे पैकेज का आकार तेज़ी से बढ़ता है: NumPy, Pandas और SciPy वाले Python डेटा साइंस फ़ंक्शन का अनज़िप किया हुआ आकार 200 MB से अधिक हो सकता है। आपके फ़ंक्शन कोड में हर अपडेट के लिए अपरिवर्तित लाइब्रेरी सहित पूरा बंडल दोबारा अपलोड करना पड़ता है। Lambda Layers साझा निर्भरताओं को आपके फ़ंक्शन कोड से अलग करके इस समस्या का समाधान करते हैं।
Lambda Layer क्या है
Lambda Layer एक ZIP संग्रह है जिसमें लाइब्रेरी, कस्टम रनटाइम, डेटा या कॉन्फ़िगरेशन फ़ाइलें होती हैं। Layers को आपके फ़ंक्शन कोड से अलग रखा जाता है और फ़ंक्शन के निष्पादन परिवेश में /opt पर माउंट किया जाता है। कई फ़ंक्शन एक ही layer साझा कर सकते हैं—layer को एक बार अपडेट करने पर उसका उपयोग करने वाले हर फ़ंक्शन को इसका लाभ मिलता है। प्रत्येक Lambda फ़ंक्शन में अधिकतम 5 layers हो सकती हैं और अनज़िप किए गए सभी layers का संयुक्त आकार 250 MB से कम होना चाहिए।
Layer बनाना और प्रकाशित करना
Layer बनाने के लिए, अपने रनटाइम के लिए सही डायरेक्टरी संरचना में निर्भरताएँ पैकेज करें (जैसे, Python के लिए python/lib/python3.12/site-packages/), उसे ZIP में संपीड़ित करें और प्रकाशित करें। प्रकाशित होने के बाद layer को एक version ARN मिलता है। Layer को किसी फ़ंक्शन से जोड़ते समय इस ARN का संदर्भ दें। Layer को अपडेट करने पर हर बार एक नया version बनाया जाता है; फ़ंक्शन तब तक उसी version का उपयोग करते रहते हैं जिसके लिए उन्हें कॉन्फ़िगर किया गया था, जब तक आप उन्हें स्पष्ट रूप से अपडेट न करें।
# Build layer for Python
mkdir -p layer/python
pip install pandas numpy -t layer/python/
cd layer && zip -r ../my-data-layer.zip python/
# Publish the layer
aws lambda publish-layer-version \
--layer-name 'DataScienceLayer' \
--zip-file fileb://my-data-layer.zip \
--compatible-runtimes python3.12 python3.11किसी फ़ंक्शन से Layers जोड़ना
फ़ंक्शन बनाते या अपडेट करते समय --layers पैरामीटर का उपयोग करके उसमें layers जोड़ें। फ़ंक्शन शुरू होने से पहले Lambda सभी संलग्न layers को /opt में माउंट करता है। /opt/python के अंतर्गत Python पैकेज अपने-आप Python पथ में शामिल हो जाते हैं; /opt/nodejs/node_modules के अंतर्गत Node.js मॉड्यूल अपने-आप मिल जाते हैं। आपका फ़ंक्शन कोड layer के पैकेजों को ऐसे import या require कर सकता है, जैसे वे स्थानीय रूप से इंस्टॉल किए गए हों।
aws lambda update-function-configuration \
--function-name 'DataProcessor' \
--layers \
'arn:aws:lambda:us-east-1:123456789012:layer:DataScienceLayer:3' \
'arn:aws:lambda:us-east-1:123456789012:layer:UtilsLayer:1'AWS द्वारा उपलब्ध सार्वजनिक Layers
AWS आधिकारिक layers प्रकाशित करता है, जिनका उपयोग आप स्वयं layer बनाए बिना कर सकते हैं। उदाहरणों में AWS Lambda Powertools layer (संरचित लॉगिंग, ट्रेसिंग और फ़ीचर फ़्लैग), डेटाबेस ड्राइवर layers और SSM/Secrets Manager के मानों को स्थानीय रूप से कैश करने वाली AWS Parameters and Secrets Lambda Extension layer शामिल हैं। Datadog और New Relic जैसे तृतीय-पक्ष विक्रेता भी अपने निगरानी एजेंटों के लिए सार्वजनिक layers प्रकाशित करते हैं। उपलब्ध सार्वजनिक layers के लिए Serverless Application Repository और Lambda कंसोल देखें।
Layers के माध्यम से Lambda Extensions
Lambda Extensions आपके फ़ंक्शन कोड के साथ उसी निष्पादन परिवेश में अलग प्रक्रियाओं के रूप में चलते हैं। वे टेलीमेट्री संग्रह, सुरक्षा स्कैनिंग या कॉन्फ़िगरेशन कैशिंग जैसे कार्य करने के लिए Lambda के जीवनचक्र इवेंट (init, invoke, shutdown) से जुड़ते हैं। Extensions को Lambda Layers के रूप में वितरित किया जाता है। AWS CloudWatch Lambda Insights extension और AWS AppConfig extension उपलब्ध कराता है; विक्रेता अपने कस्टम निगरानी एजेंट extensions के रूप में उपलब्ध कराते हैं।
परिनियोजन पैकेज के प्रारूप: ZIP बनाम Container
Lambda दो परिनियोजन प्रारूपों का समर्थन करता है:
- ZIP (संपीड़ित रूप में अधिकतम 50 MB, अनज़िप किए गए रूप में 250 MB): तेज़ अपलोड, layers का समर्थन और सभी रनटाइम के साथ काम करता है।
- Container Image (अधिकतम 10 GB): Amazon ECR में संग्रहीत होती है, मानक Docker टूल का उपयोग करती है, layers का समर्थन नहीं करती और बहुत बड़ी निर्भरताओं (ML मॉडल, बड़ी बाइनरी फ़ाइलों) के लिए उपयुक्त है।
Container images में Lambda Runtime Interface लागू होना चाहिए (AWS द्वारा उपलब्ध कराई गई base images का उपयोग करके), ताकि Lambda आपके handler को चलाना जान सके।
# Dockerfile for a Lambda container image
FROM public.ecr.aws/lambda/python:3.12
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY app.py .
CMD ['app.lambda_handler']Container Image कार्यप्रवाह
Lambda container image बनाना और परिनियोजित करना एक मानक container कार्यप्रवाह का पालन करता है: docker build से बनाएँ, Amazon ECR पर push करें और Lambda फ़ंक्शन बनाते या अपडेट करते समय image URI का संदर्भ दें। Container images immutable होती हैं—प्रत्येक image tag किसी विशिष्ट फ़ंक्शन version से संबंधित होता है। Lambda अपने बुनियादी ढाँचे में container images को कैश करता है, इसलिए पहली cold start के बाद होने वाली cold starts तेज़ होती हैं।
# Build and push to ECR
docker build -t my-lambda-function .
aws ecr get-login-password | docker login --username AWS \
--password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com
docker tag my-lambda-function \
123456789012.dkr.ecr.us-east-1.amazonaws.com/my-repo:latest
docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-repo:latestVersioning और Aliases
Lambda के Versions आपके फ़ंक्शन कोड और कॉन्फ़िगरेशन के अपरिवर्तनीय स्नैपशॉट होते हैं। जब भी आप कोई version प्रकाशित करते हैं, Lambda deployment package, environment variables और layers को स्थिर कर देता है। Aliases विशिष्ट versions की ओर संकेत करने वाले नामित pointers होते हैं—prod version 5 की ओर और staging version 6 की ओर संकेत कर सकता है। आप canary deployments के लिए नए version पर ट्रैफ़िक का एक प्रतिशत भेजने हेतु weighted aliases का भी उपयोग कर सकते हैं (जैसे, 10% v6 को और 90% v5 को)।
# Publish a version and create/update an alias
aws lambda publish-version --function-name 'DataProcessor'
# Returns version number, e.g., "Version": "7"
aws lambda update-alias \
--function-name 'DataProcessor' \
--name 'prod' \
--function-version '7' \
--routing-config 'AdditionalVersionWeights={"6": 0.1}'Layer Versioning और अप्रचलन
Layers के भी versions होते हैं। जब आप कोई नया layer version प्रकाशित करते हैं, तो मौजूदा फ़ंक्शन तब तक अपने निर्धारित version का उपयोग करते रहते हैं, जब तक आप उन्हें अपडेट नहीं करते। इसका अर्थ है कि आप सभी फ़ंक्शन को एक साथ प्रभावित किए बिना साझा layer को सुरक्षित रूप से अपडेट कर सकते हैं—नए version को क्रमिक रूप से लागू करें। अंततः, संग्रहण और रखरखाव का बोझ कम करने के लिए पुराने layer versions को अप्रचलित घोषित करें। यदि आप उन्हें कंसोल से हटा भी दें, तो Lambda layer versions को तब तक बनाए रखता है जब तक कोई फ़ंक्शन उनका संदर्भ देता है।
Layers और Container Images के बीच चयन
जब आपका कुल अनज़िप किया गया आकार 250 MB से कम हो, आप कई फ़ंक्शन के बीच निर्भरताएँ साझा करना चाहते हों और तेज़ पुनरावृत्ति चाहते हों (layer को एक बार अपडेट करने पर सभी फ़ंक्शन को लाभ मिले), तब Layers का उपयोग करें। जब निर्भरताएँ 250 MB से अधिक हों, आपको कस्टम base OS पैकेज का उपयोग करना हो, आपके पास मौजूदा Docker कार्यप्रवाह हों या आप बड़ी परिसंपत्तियाँ (ML मॉडल, संदर्भ डेटाबेस) साथ रखना चाहते हों, तब Container Images का उपयोग करें। Container images Lambda Layers के साथ संगत नहीं होतीं, लेकिन अधिक लचीलापन देती हैं।
त्वरित जाँच
इस lesson में सिखाई गई AWS Solutions Architect (SAA-C03) की अवधारणाओं के बारे में अपनी समझ जाँचें।
Lesson का पुनरावलोकन
इस lesson में आपने सीखा: Lambda Layers साझा निर्भरताओं को फ़ंक्शन कोड से अलग पैकेज करती हैं, जिससे पैकेज का आकार घटता है और कई फ़ंक्शन में पुनः उपयोग संभव होता है; Container Images (ECR के माध्यम से अधिकतम 10 GB) तब सही विकल्प हैं जब निर्भरताएँ 250 MB की ZIP सीमा से अधिक हों या Docker कार्यप्रवाह पहले से उपयोग में हों; और Versioning and Aliases अपरिवर्तनीय releases तथा भारित ट्रैफ़िक विभाजन के साथ canary deployments संभव बनाते हैं। अगले भाग में हम Lambda@Edge और event-driven patterns का अध्ययन करेंगे।
एआई शिक्षक के साथ AWS Solutions Architect सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “Lambda लेयर और डिप्लॉयमेंट पैकेज” पाठ निःशुल्क है?
हाँ — AWS Solutions Architect अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Lambda लेयर और डिप्लॉयमेंट पैकेज” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। AWS Solutions Architect पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Lambda लेयर और डिप्लॉयमेंट पैकेज” में मैं क्या सीखूँगा?
साझा निर्भरताओं को पुनः उपयोग योग्य Lambda लेयर में बंडल कीजिए और बड़े रनटाइम के लिए डिप्लॉयमेंट पैकेज प्रबंधित कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ AWS Solutions Architect का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या AWS Solutions Architect शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर AWS Solutions Architect शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“Lambda लेयर और डिप्लॉयमेंट पैकेज” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस AWS Solutions Architect पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर AWS Solutions Architect पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Lambda फ़ंक्शन: रनटाइम, ट्रिगर और हैंडलर
- समवर्तीता, थ्रॉटलिंग और आरक्षित समवर्तीता
- Lambda लेयर और डिप्लॉयमेंट पैकेज
- Lambda@Edge और इवेंट-आधारित पैटर्न