लैम्ब्डा के साथ DynamoDB स्ट्रीम

Laimbda Ke Satha Dynamodb Strima



DynamoDB Streams, Amazon DynamoDB में एक विशेषता है जो आपको आपके DynamoDB तालिकाओं में किए गए परिवर्तनों या डेटा परिवर्तनों की रीयल-टाइम स्ट्रीम प्राप्त करने की अनुमति देती है। आप इस सुविधा का उपयोग उन अनुप्रयोगों के निर्माण के लिए कर सकते हैं जो DynamoDB तालिकाओं में डेटा परिवर्तनों पर प्रतिक्रिया करते हैं जैसे कि कैश अपडेट करना और सूचनाएँ भेजना।

बेशक, आप डायनेमोडीबी स्ट्रीम का उपयोग डाउनस्ट्रीम प्रक्रियाओं और एडब्ल्यूएस लैम्ब्डा कार्यों को ट्रिगर करने के लिए भी कर सकते हैं। लैम्ब्डा, परिभाषा के अनुसार, एक सर्वर रहित कंप्यूट सेवा है जो घटनाओं के जवाब में आपका कोड चलाती है और स्वचालित रूप से आपके लिए कंप्यूट संसाधनों का प्रबंधन करती है।

स्ट्रीम रिकॉर्ड को संसाधित करने और उचित कार्रवाई करने के लिए आप Node.js, Python, Java, या C# में कोड लिखने के लिए लैम्ब्डा का उपयोग कर सकते हैं। डायनेमोडीबी स्ट्रीम को लैम्ब्डा के साथ एकीकृत करने का मुख्य लाभ यह है कि लैम्ब्डा आपको प्रशासन की आवश्यकता के बिना समर्थित सेवाओं या एप्लिकेशन कोड को चलाने की अनुमति देता है।







लैम्ब्डा के साथ एडब्ल्यूएस डायनमोडीबी स्ट्रीम का उपयोग कैसे करें

हालांकि एक लैम्ब्डा फ़ंक्शन बनाना संभव है जो डायनेमोडीबी स्ट्रीम से घटनाओं और घटनाओं का उपभोग करता है, यह प्रक्रिया काफी कठिन हो सकती है, खासकर आपके पहले प्रयास में। निम्नलिखित कदम मदद करेंगे:



चरण 1: सुनिश्चित करें कि आपका सिस्टम पूर्वापेक्षाएँ पूरी करता है

यह प्रक्रिया केवल तभी सफल होगी जब आप बुनियादी लैम्ब्डा संचालन और प्रक्रियाओं को जानते हों। इस प्रकार, यह सुनिश्चित करने वाला आपका पहला होना चाहिए कि लैम्ब्डा की आपकी समझ औसत से ऊपर है।



दूसरी शर्त जो विचार करने योग्य है वह आपके सिस्टम के AWS संस्करण की पुष्टि कर रही है। आप निम्न आदेश का उपयोग कर सकते हैं:





aws – संस्करण

प्रदान की गई कमांड का परिणाम इस तरह दिखना चाहिए:

एडब्ल्यूएस-क्ली/ 2 .x.x पायथन/ 3 .x.x लिनक्स/ 4 .x.x-xxx-एसटीडी बोटोकोर/ 2 .x.x

दिए गए नमूना प्रतिक्रिया में एडब्ल्यूएस सीएलआई का स्थापित संस्करण शामिल है ( एडब्ल्यूएस-क्ली/2.x.x ), पायथन संस्करण ( पायथन / 3.x.x ), और ऑपरेटिंग सिस्टम ( लिनक्स/4.x.x-xxx-एसटीडी ). प्रतिक्रिया का अंतिम भाग Botocore लाइब्रेरी संस्करण को परिभाषित करता है जिस पर आपका AWS CLI चलता है ( बोटोकोर/2.x.x ).



इसलिए, आप कुछ इस तरह समाप्त करेंगे:

चरण 2: एक निष्पादन भूमिका बनाएँ

अगला कदम एडब्ल्यूएस सीएलआई में निष्पादन भूमिका बनाना है। एक निष्पादन भूमिका एक AWS पहचान और अभिगम प्रबंधन (IAM) भूमिका है जिसे AWS सेवा द्वारा आपकी ओर से कार्य करने के लिए ग्रहण किया जाता है। यह आपको एडब्ल्यूएस संसाधनों तक पहुंच प्रदान करता है जिनकी आपको रास्ते में आवश्यकता होगी।

आप निम्न आदेश का उपयोग करके एक भूमिका बना सकते हैं:

aws iam create-role \

--भूमिका-नाम लैम्ब्डाडायनेमोडीबीनिष्पादनभूमिका \

--मान लें-भूमिका-नीति-दस्तावेज़ फ़ाइल: // मान लें-भूमिका-नीति.json \

--विवरण 'AWSLambdaDynamoDBExecutionRole' \

--सेवा-नाम lambda.amazonaws.com

भूमिका बनाने के लिए पिछला कमांड AWS CLI कमांड है। भूमिका बनाने के लिए आप अमेज़न प्रबंधन कंसोल का भी उपयोग कर सकते हैं। एक बार जब आप आईएएम कंसोल पर हों, तो खोलें भूमिकाएँ पेज और क्लिक करें भूमिका बनाएँ बटन।

निम्नलिखित दर्ज करने के लिए आगे बढ़ें:

  • विश्वसनीय संस्था: लैम्ब्डा
  • भूमिका का नाम: लैम्ब्डा-डायनामोडब-रोल
  • अनुमतियाँ: AWSLambdaDynamoDBExecutionRole

आप पहले Python के लिए AWS SDK इंस्टॉल करके भी Python का उपयोग कर सकते हैं:

पिप स्थापित boto3

चरण 3: अपने टेबल पर DynamoDB स्ट्रीम को सक्षम करें

आपको अपनी टेबल पर डायनेमोडीबी स्ट्रीम को सक्षम करने की आवश्यकता है। इस दृष्टांत के लिए, हम Boto3, Python के लिए AWS SDK का उपयोग करते हैं। निम्न आदेश मदद करेगा:

आयात boto3

# DynamoDB सेवा से कनेक्ट करें
डायनेमोडब = boto3.client ( 'डायनेमोडब' )

# डायनमोडीबी स्ट्रीम को 'माय-टेबल' टेबल पर सक्षम करें
प्रतिक्रिया = डायनेमोडब.अपडेट_टेबल (
तालिका का नाम = 'मेरी टेबल' ,
धारा विशिष्टता = {
'स्ट्रीम सक्षम' : सत्य,
'स्ट्रीम व्यू टाइप' : 'NEW_AND_OLD_IMAGES'
}
)

# यह सुनिश्चित करने के लिए प्रतिक्रिया जांचें कि स्ट्रीम सफलतापूर्वक सक्षम हो गई थी
अगर प्रतिक्रिया [ 'धारा विशिष्टता' ] [ 'स्ट्रीम सक्षम' ]:
प्रिंट ( 'DynamoDB स्ट्रीम सफलतापूर्वक सक्षम' )
वरना:
प्रिंट ( 'DynamoDB स्ट्रीम सक्षम करने में त्रुटि' )

यह कोड डायनमोडीबी स्ट्रीम को 'मायटेबल' टेबल पर सक्षम करता है जो किसी भी बदलाव के होते ही आइटम की नई और पुरानी दोनों छवियों को स्ट्रीम करता है। जैसे ही StreamViewType 'NEW_IMAGE' पर आता है, आप केवल नई छवियों को स्ट्रीम करना चुन सकते हैं।

विशेष रूप से, इस कोड को चलाने से कुछ समय बाद ही आपकी टेबल पर स्ट्रीम सक्षम हो सकती हैं। इसके बजाय, प्रक्रिया में कुछ समय लग सकता है। स्ट्रीम की स्थिति की जांच करने के लिए आप डिस्क्रिप्शन_टेबल विधि का उपयोग कर सकते हैं।

चरण 4: लैम्ब्डा फंक्शन बनाएँ

अगला चरण एक लैम्ब्डा फ़ंक्शन बना रहा है जो डायनेमोडीबी स्ट्रीम को ट्रिगर करता है। निम्नलिखित चरणों में मदद करनी चाहिए:

  • AWS लैम्ब्डा कंसोल खोलें और 'फ़ंक्शन बनाएँ' टैब पर क्लिक करें। 'फ़ंक्शन बनाएँ' पृष्ठ पर, 'शुरुआत से लेखक' चुनें और अपने फ़ंक्शन के लिए एक नाम दर्ज करें। आपको इस बिंदु पर अपना रनटाइम भी दर्ज करना होगा। हमने इस दृष्टांत के लिए पायथन को चुना है।
  • अपने लैम्ब्डा फ़ंक्शन के लिए आवश्यक अनुमतियों के साथ एक IAM भूमिका बनाने के लिए 'निष्पादन भूमिका चुनें या बनाएं' के तहत, 'बुनियादी लैम्ब्डा अनुमतियों के साथ एक नई भूमिका बनाएं' चुनें।
  • अपना लैम्ब्डा फ़ंक्शन बनाने के लिए 'फ़ंक्शन बनाएं' बटन पर क्लिक करें।
  • अपने फ़ंक्शन के 'कॉन्फ़िगरेशन' पृष्ठ पर, 'डिज़ाइनर' अनुभाग तक नीचे स्क्रॉल करें और 'ट्रिगर जोड़ें' टैब पर क्लिक करें।
  • दिखाई देने वाले 'ट्रिगर कॉन्फ़िगरेशन' बॉक्स में, 'ट्रिगर' ड्रॉपडाउन मेनू से 'डायनेमोडीबी' चुनें।
  • उस DynamoDB तालिका का चयन करें जिसका उपयोग आप फ़ंक्शन को ट्रिगर करने के लिए करना चाहते हैं। एक बार हो जाने के बाद, चुनें कि क्या आप फ़ंक्शन को टेबल के सभी अपडेट पर या केवल विशिष्ट अपडेट (जैसे विशेष कॉलम के अपडेट) पर ट्रिगर करना चाहते हैं।
  • ट्रिगर बनाने के लिए 'जोड़ें' बटन पर क्लिक करें।
  • 'फ़ंक्शन कोड' संपादक में, अपने फ़ंक्शन के लिए पायथन कोड लिखें। आप उस ईवेंट ऑब्जेक्ट का उपयोग कर सकते हैं जो फ़ंक्शन को ट्रिगर करने वाले डेटा तक पहुँचने के लिए आपके फ़ंक्शन को पास किया गया है।
  • फ़ंक्शन को सहेजने के लिए 'सहेजें' बटन पर क्लिक करें।

लैम्ब्डा फंक्शन बनाते समय बस इतना ही होता है! जब भी निर्दिष्ट डायनेमोडीबी तालिका में अपडेट होते हैं तो आपका फ़ंक्शन अब चालू हो जाता है।

यहां एक साधारण पायथन फ़ंक्शन का उदाहरण दिया गया है जिसे डायनेमोडीबी स्ट्रीम ट्रिगर कर सकता है:

def लैम्ब्डा_हैंडलर (घटना, संदर्भ):

घटना में रिकॉर्ड के लिए [ 'अभिलेख' ]:

प्रिंट (रिकॉर्ड [ 'डायनेमोडब' ][ 'नया चित्र' ])

यह फ़ंक्शन इवेंट ऑब्जेक्ट में रिकॉर्ड के माध्यम से पुनरावृति करता है और डायनेमोडीबी तालिका में आइटम की नई छवि को प्रिंट करता है जो फ़ंक्शन को ट्रिगर करता है।

चरण 5: लैम्ब्डा फ़ंक्शन का परीक्षण करें

लैम्ब्डा फ़ंक्शन का परीक्षण करने के लिए जिसे डायनेमोडीबी स्ट्रीम ट्रिगर कर सकता है, आप इसका उपयोग कर सकते हैं boto3 DynamoDB API तक पहुँचने के लिए लाइब्रेरी और आह्वान की विधि लैम्ब्डा क्लाइंट फ़ंक्शन को ट्रिगर करने के लिए।

इसे कैसे करना है इसका एक उदाहरण यहां दिया गया है:

आयात boto3

# DynamoDB सेवा से कनेक्ट करें
डायनेमोडब = boto3.client ( 'डायनेमोडब' )

# लैम्ब्डा सेवा से जुड़ें
लैम्ब्डा_क्लाइंट = boto3.client ( 'लैम्ब्डा' )

# किसी आइटम को 'माय-टेबल' टेबल में डालें
प्रतिक्रिया = dynamodb.put_item (
तालिका का नाम = 'मेरी टेबल' ,
आइटम = {
'पहचान' :{ 'एन' : '123' },
'नाम' :{ 'एस' : 'जोएल ऑस्टिन},
'
उम्र ':{' एन ':' 3. 4 '}
}
)

# यह सुनिश्चित करने के लिए प्रतिक्रिया जांचें कि आइटम सफलतापूर्वक डाला गया था
अगर प्रतिक्रिया ['
प्रतिक्रिया मेटाडाटा '][' HTTPStatusCode '] == 200:
प्रिंट ('आइटम सफलतापूर्वक डाला गया')
वरना:
प्रिंट ('आइटम डालने में त्रुटि')

# सब्सक्राइब किए गए लैम्ब्डा फ़ंक्शन को ट्रिगर करें '
मेरी टेबल ' मेज़
प्रतिक्रिया = लैम्ब्डा_क्लाइंट.इनवोक (
फंक्शननाम ='
myfunction ',
मंगलाचरण प्रकार ='
आयोजन ',
लॉगटाइप='
पूंछ ',
पेलोड='
{ 'अभिलेख' :[{ 'डायनेमोडब' :{ 'नया चित्र' :{ 'पहचान' :{ 'एन' : '123' }, 'नाम' :{ 'एस' : 'जोएल ऑस्टिन' }, 'उम्र' :{ 'एन' : '3. 4' }}}}]]} '
)

# यह सुनिश्चित करने के लिए प्रतिक्रिया की जाँच करें कि फ़ंक्शन सफलतापूर्वक चालू हो गया था
अगर प्रतिक्रिया ['
स्थिति का कोड '] == 202:
प्रिंट ('लैम्ब्डा फ़ंक्शन सफलतापूर्वक चालू हो गया')
वरना:
प्रिंट ('लैम्ब्डा फ़ंक्शन ट्रिगर करने में त्रुटि')

यह कोड पहले एक आइटम को इसमें सम्मिलित करता है मेरी टेबल तालिका और फिर ट्रिगर करता है myfunction लैम्ब्डा फ़ंक्शन का उपयोग करके फ़ंक्शन को एक नमूना ईवेंट पेलोड भेजकर आह्वान तरीका। इवेंट पेलोड डायनेमोडीबी स्ट्रीम इवेंट का अनुकरण करता है जिसमें उस आइटम की नई छवि शामिल होती है जिसे अभी डाला गया था।

फिर आप यह देखने के लिए लैम्ब्डा फ़ंक्शन के लॉग की जांच कर सकते हैं कि क्या यह ईवेंट डेटा को सफलतापूर्वक ट्रिगर और संसाधित करता है।

निष्कर्ष

यह नोट करना महत्वपूर्ण है कि आप एक ही स्ट्रीम रिकॉर्ड के लिए कई बार इन्वोक कर सकते हैं कि डायनेमोडीबी स्ट्रीम एक लैम्ब्डा फ़ंक्शन को ट्रिगर कर सकती है। इसके पीछे प्राथमिक कारण यह है कि स्ट्रीम रिकॉर्ड अंततः संगत होते हैं, और लैम्ब्डा फ़ंक्शन द्वारा एक ही रिकॉर्ड को कई बार संसाधित करना संभव है। इस मामले को सही ढंग से संभालने के लिए अपने लैम्ब्डा फ़ंक्शन को डिज़ाइन करना महत्वपूर्ण है।