जब आप नया Lambda कोड पुश करते हैं तो स्थिर आह्वान लक्ष्य।
→संख्यात्मक, अपरिवर्तनीय संस्करण प्रकाशित करें; एक उपनाम को उजागर करें जो एक संस्करण की ओर इशारा करता है। कॉलर्स उपनाम ARN का आह्वान करते हैं।
क्यों: संस्करण कोड + कॉन्फ़िग के स्थिर स्नैपशॉट होते हैं; उपनाम अप्रत्यक्षता प्रदान करते हैं ताकि कॉलर्स कभी भी `$LATEST` को सीधे आह्वान न करें।
संदर्भ↗
त्रुटियों पर ऑटो-रोलबैक के साथ एक नए Lambda संस्करण का क्रमिक रोलआउट।
→भारित संस्करण रूटिंग (जैसे 90/10) के साथ उपनाम। CodeDeploy `LambdaCanary10Percent5Minutes` या `LambdaLinear*` ट्रैफिक को शिफ्ट करता है और CloudWatch अलार्म देखता है।
क्यों: बिल्ट-इन ट्रैफिक शिफ्टिंग + अलार्म-चालित रोलबैक हाथ से कोड किए गए कैनरी लॉजिक को हटा देता है।
संदर्भ↗
पुनः डिप्लॉय किए बिना कॉन्फ़िग (DB URL, फ़ीचर फ़्लैग्स) इंजेक्ट करें।
→Lambda पर्यावरण चर। बाकी पर KMS-एन्क्रिप्टेड; पुनर्प्राप्ति पर अतिरिक्त एन्क्रिप्शन-इन-ट्रांज़िट के लिए एक कस्टम CMK को संदर्भित करें।
संदर्भ↗
कई Lambdas में NumPy / pandas / सामान्य रनटाइम साझा करें।
→एक Lambda Layer के रूप में पैकेज करें; प्रति फ़ंक्शन 5 लेयर तक, कुल 250 MB अनज़िप्ड। प्रति लेयर संस्करणित ARN।
संदर्भ↗
विलंबता-संवेदनशील सिंक्रोनस Lambda — कोई कोल्ड स्टार्ट की अनुमति नहीं।
→उपनाम पर प्रोविजन्ड कंकरेंसी। N निष्पादन वातावरण को पूर्व-प्रारंभ करता है; प्रति GB-सेकंड भुगतान करें।
क्यों: पूर्वानुमेय लागत पर कोल्ड स्टार्ट को समाप्त करता है। लोड के साथ फ्लेक्स करने के लिए उपनाम पर एप्लिकेशन ऑटो-स्केलिंग सेट करें।
संदर्भ↗
जावा या पायथन Lambda भारी इनिशियलाइजेशन कोड के साथ; प्रोविजन्ड कंकरेंसी के लिए भुगतान किए बिना तेज़ कोल्ड स्टार्ट की आवश्यकता है।
→प्रकाशित संस्करण पर SnapStart सक्षम करें। AWS आरंभ किए गए रनटाइम का स्नैपशॉट लेता है और उससे फिर से शुरू होता है।
क्यों: जावा के लिए मुफ्त; पायथन/.NET के लिए प्रति पुनर्स्थापना शुल्क लिया जाता है। निष्क्रिय लागत के बिना कोल्ड स्टार्ट को सेकंड से <1s तक कम कर देता है।
संदर्भ↗
Lambda को एक Kinesis स्ट्रीम / DynamoDB स्ट्रीम / SQS कतार / MSK टॉपिक का उपभोग करने की आवश्यकता है।
→इवेंट स्रोत मैपिंग (पुल-आधारित)। Lambda पोल करता है; बैच आकार + अधिकतम बैचिंग विंडो थ्रूपुट बनाम विलंबता को ट्यून करती है। विफलता → ऑन-फेल्योर डेस्टिनेशन के माध्यम से DLQ।
क्यों: पुल स्रोतों के लिए, सेवा सीधे Lambda को आह्वान नहीं कर सकती; मैपिंग Lambda का पोलिंग एडाप्टर है।
संदर्भ↗
Lambda DLQ के बिना अतुल्यकालिक Lambda सफलता/विफलता रूटिंग।
→फ़ंक्शन पर ऑनसक्सेस / ऑनफेल्योर डेस्टिनेशंस। लक्ष्य: SNS, SQS, EventBridge, एक और Lambda। आह्वान संदर्भ शामिल है।
क्यों: डेस्टिनेशंस पूर्ण इवेंट + प्रतिक्रिया को कैप्चर करते हैं; लेगेसी DLQ केवल इवेंट पेलोड को कैप्चर करता है।
संदर्भ↗
एक नई REST API के लिए API Gateway प्रकार चुनें।
→HTTP API: सस्ता, तेज़, JWT प्रमाणीकरण अंतर्निहित, सरल। REST API: पूर्ण सुविधाएँ (मैपिंग टेम्पलेट्स, रिक्वेस्ट वैलिडेटर्स, WAF, निजी एंडपॉइंट्स, X-Ray, API कैशिंग)।
क्यों: डिफ़ॉल्ट रूप से HTTP API का उपयोग करें जब तक कि आपको REST-ओनली सुविधा की आवश्यकता न हो। WebSocket APIs स्टेटफुल रीयल-टाइम के लिए एक अलग उत्पाद हैं।
संदर्भ↗
अलग-अलग APIs को पुनः डिप्लॉय किए बिना API परिवर्तनों को dev → test → prod में बढ़ावा दें।
→एकल API पर स्टेज। प्रकाशित करने के लिए एक स्टेज को डिप्लॉय करें; स्टेज वैरिएबल पर्यावरण-विशिष्ट मानों को धारण करते हैं जैसे Lambda उपनाम नाम।
संदर्भ↗
बैकएंड Lambda क्लाइंट द्वारा भेजे गए से एक अलग आकार की अपेक्षा करता है।
→रिक्वेस्ट/रिस्पॉन्स मैपिंग टेम्पलेट (केवल REST API)। JSON को रूपांतरित करने के लिए `$input`, `$context`, `$util` के साथ VTL।
क्यों: मैपिंग टेम्पलेट API Gateway में चलते हैं — कोई अतिरिक्त Lambda हॉप नहीं, कोई अतिरिक्त विलंबता या लागत नहीं।
संदर्भ↗
रिक्वेस्ट को रूट करने से पहले एक कस्टम टोकन (Cognito नहीं, IAM नहीं) को मान्य करें।
→Lambda authorizer। TOKEN प्रकार एक हेडर पढ़ता है; REQUEST प्रकार पूर्ण रिक्वेस्ट संदर्भ पढ़ता है। IAM नीति + principalId लौटाता है। TTL के लिए प्रति पहचान कैश किया जाता है।
संदर्भ↗
प्रत्येक रिक्वेस्ट पर एक Cognito User Pool JWT को मान्य करें।
→Cognito User Pool authorizer (REST) या JWT authorizer (HTTP)। API Gateway टोकन को मान्य करता है; Lambda की आवश्यकता नहीं है।
क्यों: सामान्य JWT मामले के लिए नेटिव सत्यापन Lambda authorizer की तुलना में सस्ता और तेज़ होता है।
संदर्भ↗
एक पार्टनर API उपभोक्ता को थ्रॉटल/कोटा करें।
→उपयोग योजना + API कुंजी। योजना एक स्टेज को दर सीमा (req/sec) + बर्स्ट + कोटा (req/day या month) के साथ कुंजियों से जोड़ती है।
संदर्भ↗
बार-बार GET रिक्वेस्ट के लिए बैकएंड लोड कम करें।
→स्टेज-स्तर कैश (REST API)। TTL कॉन्फ़िगर करने योग्य; कैश कुंजी विधि + पथ + चयनित क्वेरी/हेडर मापदंडों से प्राप्त होती है।
संदर्भ↗
किसी आइटम को तभी अपडेट करें जब कोई पूर्व शर्त सही हो (जैसे status == "PENDING")।
→`ConditionExpression` के साथ PutItem/UpdateItem। विफलता `ConditionalCheckFailedException` उत्पन्न करती है।
क्यों: सर्वर-साइड चेक बिना लॉकिंग के रीड-मॉडिफ़ाई-राइट रेस से बचाता है।
संदर्भ↗
कई DynamoDB आइटमों में ऑल-ऑर-नथिंग।
→`TransactWriteItems` / `TransactGetItems`। 100 आइटम / 4 MB तक; सामान्य राइट्स/रीड्स की WCU/RCU लागत का 2 गुना।
संदर्भ↗
रीड-मॉडिफ़ाई-राइट के बिना एक काउंटर बढ़ाएँ।
→UpdateExpression `ADD count :inc`। सर्वर डेल्टा को परमाणु रूप से लागू करता है।
संदर्भ↗
प्राथमिक कुंजी के अलावा एक अतिरिक्त एक्सेस पैटर्न की आवश्यकता है।
→GSI: वैकल्पिक विभाजन + सॉर्ट कुंजी, अंततः सुसंगत, अलग क्षमता, कभी भी जोड़ा जा सकता है। LSI: समान विभाजन कुंजी, वैकल्पिक सॉर्ट कुंजी, मजबूत-संगति विकल्प, तालिका निर्माण के समय बनाया जाना चाहिए।
संदर्भ↗
केवल उन्हीं आइटमों को इंडेक्स करें जिनमें एक विशेष विशेषता हो (जैसे केवल ACTIVE ऑर्डर)।
→विरल इंडेक्स: जिन आइटमों को आप बाहर करना चाहते हैं, उन पर विशेषता छोड़ दें। इंडेक्स की गई विशेषता के बिना आइटम GSI/LSI में दिखाई नहीं देते हैं।
संदर्भ↗
कई आइटमों को थोक में पढ़ें/लिखें।
→`BatchGetItem` (100 आइटम / 16 MB तक) और `BatchWriteItem` (25 आइटम / 16 MB तक)। परमाणु नहीं; `UnprocessedItems` में आंशिक विफलताएँ वापस की जाती हैं।
संदर्भ↗
समवर्ती लेखकों से खोए हुए अपडेट को रोकें।
→संस्करण विशेषता + `ConditionExpression: version = :v`। असफल राइट्स पुनः पढ़ने द्वारा पुनः प्रयास करते हैं।
संदर्भ↗
प्रत्येक DynamoDB परिवर्तन पर डाउनस्ट्रीम क्रियाओं को ट्रिगर करें।
→DynamoDB Streams + Lambda इवेंट स्रोत मैपिंग। स्ट्रीम दृश्य: NEW_IMAGE / OLD_IMAGE / NEW_AND_OLD_IMAGES / KEYS_ONLY।
संदर्भ↗
ब्राउज़र आपके सर्वर के माध्यम से बाइट्स को प्रॉक्सी किए बिना सीधे S3 पर अपलोड/डाउनलोड करता है।
→GET या PUT के लिए SDK `getSignedUrl`। IAM उपयोगकर्ता (sigv4) द्वारा हस्ताक्षरित होने पर 7 दिनों तक की समाप्ति; भूमिका-व्युत्पन्न सत्रों के लिए कम।
क्यों: आपके बैकएंड से बैंडविड्थ कम करता है; URL एक अस्थायी क्षमता है जो एक वस्तु + विधि के लिए सीमित है।
संदर्भ↗
SDK से एक बड़ी फ़ाइल (≫100 MB) को मज़बूती से अपलोड करें।
→`CreateMultipartUpload` → समानांतर `UploadPart` → `CompleteMultipartUpload`। SDK उच्च-स्तरीय ट्रांसफर मैनेजर स्वचालित रूप से भाग के आकार को संभालता है।
क्यों: >5 GB आवश्यक; ≥100 MB अनुशंसित। असफल भागों को स्वतंत्र रूप से पुनः अपलोड करें। अपूर्ण मल्टीपार्ट्स को रद्द करने के लिए जीवनचक्र सेट करें ताकि संग्रहण पुनः प्राप्त हो सके।
संदर्भ↗
जब S3 में कोई वस्तु बनाई/हटाई जाती है तो कोड चलाएँ।
→S3 इवेंट नोटिफ़िकेशन → Lambda / SNS / SQS / EventBridge। उपसर्ग और प्रत्यय द्वारा फ़िल्टर करें।
संदर्भ↗
ब्राउज़र ऐप S3 से विभिन्न मूलों (`fetch('https://bucket.s3...')`) से फ़ेच करता है; CORS प्रीफ़्लाइट विफल रहता है।
→बकेट CORS नियम कॉन्फ़िगर करें: अनुमत मूल, विधियाँ (GET/PUT), हेडर और उजागर हेडर।
संदर्भ↗
एक 50 GB CSV/JSON/Parquet ऑब्जेक्ट से पंक्तियों को डाउनलोड किए बिना फ़िल्टर करें।
→SQL के साथ S3 Select। केवल मिलान वाली पंक्तियाँ लौटाता है; स्कैन + वापसी बाइट्स के लिए भुगतान करें।
संदर्भ↗
सार्वजनिक मोबाइल/वेब क्लाइंट से पासवर्ड भेजे बिना उपयोगकर्ता को साइन इन करें।
→`USER_SRP_AUTH` प्रवाह के साथ Cognito User Pool। क्लाइंट SRP प्रूफ की गणना करता है; बैकएंड कभी पासवर्ड नहीं देखता। ID + एक्सेस + रिफ्रेश टोकन लौटाता है।
संदर्भ↗
फ़ेडरेटेड उपयोगकर्ता (Google/Apple/Cognito UP) को मोबाइल ऐप से सीधे AWS APIs को कॉल करने के लिए अस्थायी AWS क्रेडेंशियल की आवश्यकता है।
→Cognito Identity Pool। STS के माध्यम से पहचान प्रदाता टोकन → IAM भूमिका → अस्थायी AWS क्रेडेंशियल का आदान-प्रदान करता है।
क्यों: User Pools उपयोगकर्ताओं को प्रमाणित करते हैं; Identity Pools उन्हें AWS संसाधनों के लिए अधिकृत करते हैं।
संदर्भ↗
एक Step Functions वर्कफ़्लो प्रकार चुनें।
→Standard: लंबे समय तक चलने वाला (≤1 वर्ष), ठीक-एक-बार, $0.025/1k ट्रांज़िशन, पूर्ण इतिहास। Express: ≤5 मिनट, कम से कम-एक-बार या अधिक से अधिक-एक-बार, प्रति रिक्वेस्ट + अवधि बिल किया जाता है; उच्च-मात्रा ETL/स्ट्रीमिंग के लिए।
संदर्भ↗
वर्कफ़्लो चरण विफल हो जाता है; बैकऑफ़ के साथ पुनः प्रयास करना चाहते हैं और रिकवरी स्थिति में रूट करना चाहते हैं।
→`Retry` सरणी (प्रति-स्थिति, `BackoffRate` + `MaxAttempts` के साथ) और टर्मिनल विफलता रूटिंग के लिए `Catch`। `ErrorEquals` (जैसे `States.TaskFailed`, कस्टम त्रुटि नाम) द्वारा मिलान करें।
संदर्भ↗
एक सरणी में प्रत्येक आइटम पर समान वर्कफ़्लो लागू करें, समवर्ती कैप के साथ।
→`ItemsPath` और `MaxConcurrency` के साथ Map स्थिति। डिस्ट्रीब्यूटेड मैप S3-समर्थित इनपुट के साथ 10k+ आइटम को संभालता है।
संदर्भ↗
एक cron शेड्यूल पर या आने वाली घटनाओं से Lambda को ट्रिगर करें।
→EventBridge नियम। शेड्यूल: `rate(...)` या `cron(...)`। पैटर्न: JSON इवेंट फ़िल्टर; स्रोत, विवरण-प्रकार, विवरण फ़ील्ड पर मिलान करें।
संदर्भ↗
SQS / Kinesis / DynamoDB Streams / MSK से वैकल्पिक फ़िल्टर + रूपांतरण के साथ एक लक्ष्य पर घटनाओं को रूट करें।
→EventBridge Pipes। स्रोत → फ़िल्टर → संवर्धन (Lambda/Step Functions) → लक्ष्य। सरल मामलों के लिए Lambda की आवश्यकता नहीं है।
संदर्भ↗
संदेशों को ग्राहक के अनुसार कड़ाई से क्रम में संसाधित करें, डुप्लीकेशन के साथ।
→SQS FIFO कतार। `MessageGroupId` आदेश (प्रति समूह समानता) को विभाजित करता है; `MessageDeduplicationId` (या सामग्री-आधारित डेडुप) 5 मिनट के भीतर डुप्लिकेट हटाता है।
संदर्भ↗
उपभोक्ता एक संदेश खींचता है लेकिन उसे हटाने से पहले क्रैश हो जाता है।
→संदेश VisibilityTimeout सेकंड के लिए छिपा रहता है, फिर पुनः वितरण के लिए फिर से प्रकट होता है। सबसे लंबे अपेक्षित प्रसंस्करण समय + बफर के लिए ट्यून करें।
क्यों: बहुत कम → डुप्लिकेट प्रसंस्करण। बहुत लंबा → क्रैश पर धीमी रिकवरी। यदि आवश्यक हो तो ChangeMessageVisibility इन-फ़्लाइट को बढ़ाता है।
संदर्भ↗
एक इवेंट को कई उपभोक्ताओं (Lambdas / SQS कतारें / HTTP एंडपॉइंट्स) तक पहुंचना चाहिए।
→कई सब्सक्राइबर्स के साथ SNS टॉपिक। सब्सक्रिप्शन फ़िल्टर नीतियाँ प्रति सब्सक्राइबर केवल मिलान वाले संदेशों को रूट करती हैं।
संदर्भ↗
राइट थ्रूपुट के लिए Kinesis Data Streams क्षमता को ट्यून करें।
→प्रत्येक शार्ड = 1 MB/s या 1000 रिकॉर्ड/s अंदर, 2 MB/s बाहर। शार्ड जोड़ें (स्प्लिट करें) या ऑटो-स्केलिंग के लिए ऑन-डिमांड मोड का उपयोग करें।
संदर्भ↗