9

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

exports.handler = (event, context, callback) => { 

    var redis = require("redis"); 
    var client; 
    function connectRedisClient() { 
     client = redis.createClient(6379, "dgdfgdfgdfgdfgdfgfd.use1.cache.amazonaws.com", { no_ready_check: true }); 
    } 

    connectRedisClient(); 
    client.set('sampleKey', 'Hello World', redis.print); 
    console.log("set worked"); 
    client.quit(); 


    var AWS = require("aws-sdk"); 
    var docClient = new AWS.DynamoDB.DocumentClient(); 
    var table = "dummy"; 
    var year = 2015; 
    var title = "The Big New Movie"; 
    var params = { 
     TableName: table, 
     Item: { 
      "userid": "manafcj", 
      "year": year, 
      "title": title, 
      "test1": [645645, 7988], 
      "info": { 
       "plot": "Nothing happens at all.", 
       "rating": 0 
      } 
     } 
    }; 

    console.log("Adding a new item..."); 
    docClient.put(params, function (err, data) { 
     if (err) { 
      console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2)); 
     } else { 
      console.log("Added item:", JSON.stringify(data, null, 2)); 
     } 
    }); 
    callback(null, 'Hello from Lambda'); 
}; 

है मैं VPC को विन्यस्त बिना इस लैम्ब्डा कोड निष्पादित, लोचदार कैश अनुभाग काम नहीं कर रहा है, लेकिन डाइनेमो प्रविष्टि पूरी तरह से किया जाता है।

इसके बाद मैंने चरणों का पालन करके अपने खाते में वीपीसी के लिए सेटअप किया। परीक्षण VPC-नाम सीआईडीआर ब्लॉक: 172.31.0.0/16 किराएदारी: डिफ़ॉल्ट

  • एक नया सबनेट बनाएं

    1. VPC नाम बनाने

      । नाम टैग: परीक्षण-सबनेट-1a सीआईडीआर ब्लॉक: 172.31.0.0/20

      नाम टैग: परीक्षण-सबनेट -1 बी सीआईडीआर ब्लॉक: 172.31.16.0/20

    2. एक मार्ग तालिका नाम बनाएँ टैग: परीक्षण मार्ग-टेबल

    3. एक इंटरनेट प्रवेश द्वार नाम बनाएँ: परीक्षण इंटरनेट-प्रवेश द्वार

    4. VPC

    5. संलग्न
    6. मार्ग मार्गों में सभी आउटबाउंड 0.0.0.0/0 यातायात

    7. एक मार्ग तालिका सबनेट संघ

    8. बनाएँ नेट गेटवे सबनेट बनाएँ: परीक्षण-सबनेट-1a

    भी

    मैंने

    1. सी का पालन करके अपने लोचदार कैश सेटअप को कॉन्फ़िगर किया है reate सबनेट कैश समूह नाम: परीक्षण-संचय-समूह

    2. लोचदार कैश बनाएं
      प्रकार: Redis क्लस्टर का नाम: परीक्षण कैश

      सबनेट कैश समूह: परीक्षण-संचय-समूह

    अंत में, मैंने अपने लैम्ब्डा फ़ंक्शन पर नव निर्मित वीपीसी कॉन्फ़िगर किया है। फिर रेडिस-लोचदार कैश कनेक्शन ठीक काम कर रहा है, लेकिन डायनेमो डीबी कनेक्शन खो गया है। मुझे एक लैम्ब्डा फ़ंक्शन से ठीक काम करने की ज़रूरत है।

    मुझे लगता है, एनएटी गेटवे के साथ वीपीसी कॉन्फ़िगरेशन में कुछ गलती।

    इस सेटअप में वास्तविक समस्या क्या है?

  • +0

    यहां छवि को देखें: http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html क्या आपके पास अपने एनएटी गेटवे पर 0.0.0.0/0 रूटिंग है? –

    +0

    मुझे एक ही समस्या का सामना करना पड़ रहा है। कोई भी समाधान? – user177468

    +1

    आप [इस आलेख] को देखना चाहते हैं (https://medium.com/@philippholly/aws-lambda-enable-outgoing-internet-access-within-vpc-8dd250e11e12)। चरण-दर-चरण निर्देश मुझे अपने लैम्ब्डा में इंटरनेट कनेक्टिविटी बहाल करने के लिए आवश्यक था। आशा करता हूँ की ये काम करेगा। – zED

    उत्तर

    4

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

    आपके लैम्ब्डा फ़ंक्शन में आपके लोचदार कैश क्लस्टर तक पहुंच देने का पहला विकल्प आपके वीपीसी के अंदर लोचदार कैश क्लस्टर के बाहरी नेटवर्क कनेक्शन के लिए एक एनएटी उदाहरण का उपयोग कर रहा है। इस कार्य के साथ आपकी सहायता के लिए आप this document से निर्देशों का उपयोग कर सकते हैं।

    दूसरा विकल्प, वह है जिसे आपने पहले ही कोशिश की है। अमेज़ॅन का कहना है कि जब आप इस विकल्प को कॉन्फ़िगर करते हैं तो इसका मतलब यह नहीं है कि लैम्ब्डा को आपके वीपीसी के अंदर निष्पादित किया जाएगा। यह आपके वीपीसी तक पहुंचने के लिए लैम्ब्डा कंटेनर के लोचदार नेटवर्क इंटरफेस को परिभाषित करता है। दिन के अंत में मुझे नहीं लगता कि इससे अंतर होता है। आप विवरण here देख सकते हैं।

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

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

    क्यों न करें और परिणाम न दें?

    1

    अब अपेक्षाकृत आसान समाधान है: वीपीसी एंडपॉइंट्स।

    "पहले, यदि आप अपने वीपीसी में डायनेमोडीबी तक पहुंचने में सक्षम होने के लिए अपने ईसी 2 (एलोय: या लैम्ब्डा) उदाहरण चाहते थे, तो आपके पास दो विकल्प थे। आप इंटरनेट गेटवे (एनएटी गेटवे के साथ या अपने उदाहरणों को सार्वजनिक करने के लिए आईपी) या आप अपने सभी ट्रैफिक को वीपीएन या एडब्लूएस डायरेक्ट कनेक्ट के माध्यम से अपने स्थानीय बुनियादी ढांचे पर रूट कर सकते हैं और फिर डायनेमो डीबी पर वापस जा सकते हैं। "

    "डायनेमोडीबी के लिए एक वीपीसी एंडपॉइंट आपके वीपीसी में अमेज़ॅन ईसी 2 उदाहरणों को अपने निजी आईपी पते का उपयोग करने के लिए डायनामो डीबी तक पहुंचने के लिए सार्वजनिक इंटरनेट के संपर्क में नहीं पहुंचता है ... आपके ईसी 2 उदाहरणों को सार्वजनिक आईपी पते की आवश्यकता नहीं है, और आप नहीं करते अपने वीपीसी में एक इंटरनेट गेटवे, एक एनएटी डिवाइस या वर्चुअल प्राइवेट गेटवे की आवश्यकता है। आप डायनेमोडीबी तक पहुंच को नियंत्रित करने के लिए एंडपॉइंट नीतियों का उपयोग करते हैं। आपके वीपीसी और एडब्ल्यूएस सेवा के बीच यातायात अमेज़ॅन नेटवर्क को नहीं छोड़ता है। "

    उपर्युक्त उद्धरण नीचे दिए गए लिंक से आते हैं। ध्यान दें कि "ईसी 2 उदाहरण" के संदर्भ लैम्बडा संदर्भों पर भी लागू होते हैं।

    https://aws.amazon.com/blogs/aws/new-vpc-endpoints-for-dynamodb/

    और

    http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/vpc-endpoints-dynamodb.html

    संपादित देखें लाइन में और विवरण प्रदान करने के लिए।

    +0

    समाधान के लिए एक लिंक का स्वागत है, लेकिन कृपया सुनिश्चित करें कि आपका उत्तर इसके बिना उपयोगी है: [लिंक के चारों ओर संदर्भ जोड़ें] (// meta.stackexchange.com/a/8259) ताकि आपके साथी उपयोगकर्ताओं को कुछ पता चल जाएगा कि यह क्या है और यह वहां क्यों है, फिर लक्ष्य पृष्ठ अनुपलब्ध होने पर आप जिस पृष्ठ से लिंक कर रहे हैं उसके सबसे प्रासंगिक भाग को उद्धृत करें।[उत्तर जो किसी लिंक से थोड़ा अधिक हटा दिए जा सकते हैं।] (// stackoverflow.com/help/deleted-answers) –

    +0

    हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, यहां उत्तर के आवश्यक हिस्सों को शामिल करना और प्रदान करना बेहतर है संदर्भ के लिए लिंक। लिंक किए गए पृष्ठ में परिवर्तन होने पर लिंक-केवल उत्तर अमान्य हो सकते हैं। - [समीक्षा से] (/ समीक्षा/कम गुणवत्ता वाली पोस्ट/18203704) –

    +0

    मैंने अपनी पोस्टिंग को विस्तार से संशोधित किया। उस डाउनवोट को हटाना अच्छा लगेगा। –

    संबंधित मुद्दे