amazon web services - AWS लाम्बा में npm मॉड्यूल कैसे लोड करें?




amazon-web-services aws-lambda (4)

मैंने वेब आधारित संपादक का उपयोग करते हुए कई लैम्बडा फ़ंक्शन बनाए हैं। अब तक सब ठीक है। अब मैं मॉड्यूल के साथ उन (जैसे वादों के लिए क्यू) का विस्तार शुरू करना चाहता हूं। मैं यह पता नहीं लगा सकता कि मॉड्यूल को लैम्ब्डा से कैसे निकाला जाए ताकि वे मेरे कार्यों से भस्म हो सकें।

मैं this माध्यम से पढ़ा है, लेकिन यह एक EC2 की स्थापना और वहाँ से लैम्ब्डा कार्यों को चलाने के लिए लगता है। फ़ंक्शन बनाते समय ज़िप को अपलोड करने के लिए एक तंत्र है, लेकिन इसमें स्थानीय स्तर पर विकसित कार्यों को शामिल करना शामिल है। चूंकि मैं वेब आधारित संपादक में काम कर रहा हूं जो एक अजीब कार्यप्रवाह की तरह लगता है।

मैं केवल अपने लैम्बडा कार्यों में उपयोग के लिए कुछ मॉड्यूल कैसे तैनात कर सकता हूं?


npm मॉड्यूल को आपके नोडज पैकेज के अंदर बंडल किया जाना है और AWS लैंबडा लेयर्स को जिप के रूप में अपलोड करना है, तो आपको नीचे दिए गए तरीके से अपने मॉड्यूल / js को संदर्भित करना होगा और उससे उपलब्ध विधियों का उपयोग करना होगा। const mymodule = आवश्यकता ('/ ऑप्ट / नोडज / MyLogger');



आशा है कि यह मदद करता है, Serverless फ्रेमवर्क के साथ आप कुछ इस तरह से कर सकते हैं:

  1. अपनी serverless.yml फ़ाइल में इन चीजों को जोड़ें:

plugins: - serverless-webpack custom: webpackIncludeModules: forceInclude: - <your package name> (for example: node-fetch) 2. फिर अपना लैम्ब्डा फ़ंक्शन बनाएं, इसे serverless deploy द्वारा serverless deploy , जो सर्वर रहित में शामिल पैकेज। वहाँ आप के लिए।

सर्वर रहित के बारे में अधिक जानकारी के लिए: https://serverless.com/framework/docs/providers/aws/guide/quick-start/


लैम्ब्डा में npm मॉड्यूल को शामिल करने के लिए .zip फ़ाइल की आवश्यकता होती है। और आपको वास्तव में लैम्बडा वेब एडिटर का उपयोग किसी भी चीज़ के लिए नहीं करना चाहिए- जैसा कि किसी भी उत्पादन कोड के साथ, आपको स्थानीय रूप से विकसित होना चाहिए, जीआईटी के लिए प्रतिबद्ध होना चाहिए, आदि।

मेरा बहाव:

1) मेरे लम्बे कार्य आमतौर पर किसी बड़ी परियोजना के लिए सहायक होते हैं, इसलिए मैं उन्हें घर बनाने के लिए / aws / lambdas निर्देशिका बनाता हूं।

2) प्रत्येक व्यक्तिगत लैम्ब्डा डायरेक्टरी में एक इंडेक्स.जेएस फाइल होती है जिसमें फंक्शन कोड होता है, एक पैकेज जसन फाइल डिपेंडेंसी निर्भरता, और / nod_modules उपनिर्देशिका। (Package.json फ़ाइल का उपयोग लैम्ब्डा द्वारा नहीं किया गया है, यह सिर्फ इतना है कि हम स्थानीय रूप से npm install कमांड चला सकते हैं।)

package.json:

{
  "name": "my_lambda",
  "dependencies": {
    "svg2png": "^4.1.1"
  }
}

3) I .ignignore सभी नोड_मॉड्यूल निर्देशिकाओं और .zip फाइलों को जमा करता है ताकि npm से उत्पन्न फाइलें और रिपिंग हमारे रेपो को अव्यवस्थित न करें।

.gitignore:

# Ignore node_modules
**/node_modules

# Ignore any zip files
*.zip

4) मैं स्थानीय रूप से मॉड्यूल स्थापित, विकसित और परीक्षण करता हूं

5) मैं लैंबडा डायरेक्टरी को सपोर्ट करता हूं और इसे कंसोल के जरिए अपलोड करता हूं।

( महत्वपूर्ण: फ़ाइल को ज़िप करने के लिए फाइंडर से मैक की 'कंप्रेस' उपयोगिता का उपयोग न करें! आपको सीएलआई से ज़िप को डायरेक्टरी के रूट से चलाना होगा- यहां देखें)

zip -r ../yourfilename.zip * 

Node.js में AWS लाम्बा तैनाती पैकेज भी देखें - AWS लाम्बा

ध्यान दें:

आप एक ऐसी समस्या में भाग सकते हैं जहाँ PhantomJS जैसा एक मॉड्यूल OS- विशिष्ट बायनेरिज़ बनाता है, और इसलिए OSX पर स्थानीय रूप से निर्मित नोड पैकेज लैम्बडा में विफल हो जाता है।

मुझे here जो उत्तर मिला वह इन लिपियों का उपयोग डॉकटर कंटेनर में बनाने के लिए था।








aws-lambda