2015-10-25 30 views
12

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

+0

ऐसा करने के लिए शायद कई तरीके हैं। उदाहरण के लिए, आप Lambda फ़ंक्शन को डायनेमोडीबी तालिका से कॉन्फ़िगरेशन पढ़ सकते हैं। या आप इसे एक एसएनएस विषय सुन सकते हैं और उस विषय पर पोस्ट किए गए संदेश से आईपी पता प्राप्त कर सकते हैं। या आप एक एस 3 बाल्टी से एक विन्यास फाइल पढ़ सकते हैं। – garnaat

उत्तर

1

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

Invoking Lambda via SNS कैसे करें इस पर आधिकारिक मार्गदर्शिका यहां दी गई है।

4

मुझे एक ऐसा तरीका मिला जो मैं परीक्षण वातावरण और उत्पादन वातावरण का समर्थन करने के लिए उपयोग करता हूं जो आपकी मदद करेगा।

फ़ंक्शन के परीक्षण संस्करण के लिए, मैं इसे TEST-ConnectToRemoteTcpService पर कॉल कर रहा हूं और फ़ंक्शन के उत्पादन संस्करण के लिए मैं फ़ंक्शन PRODUCTION-ConnectToRemoteTcpService नामकरण कर रहा हूं। यह मुझे नियमित अभिव्यक्ति का उपयोग करके पर्यावरण नाम खींचने की अनुमति देता है।

तब मैं ज़िप फ़ाइल में config/test.json और config/production.json संग्रहीत कर रहा हूं जिसे मैं फ़ंक्शन के लिए कोड के रूप में अपलोड करता हूं। फ़ंक्शन चलने पर यह ज़िप फ़ाइल निर्देशिका process.env.LAMBDA_TASK_ROOT में निकाली जाएगी। इसलिए मैं उस फ़ाइल को लोड कर सकता हूं और मुझे जिस कॉन्फ़िगर की आवश्यकता है उसे प्राप्त कर सकते हैं।

कुछ लोग कोड ज़िप फ़ाइल में कॉन्फ़िगरेशन को संग्रहीत करना पसंद नहीं करते हैं, जो ठीक है - आप बस S3 से फ़ाइल लोड कर सकते हैं या अपनी पसंदीदा रणनीति का उपयोग कर सकते हैं।

कोड जिप से फ़ाइल को पढ़ने के लिए: एक कुछ विकल्प

const readConfiguration =() => { 
    return new Promise((resolve, reject) => { 
    let environment = /^(.*?)-.*/.exec(process.env.AWS_LAMBDA_FUNCTION_NAME)[1].toLowerCase(); 
    console.log(`environment is ${environment}`); 

    fs.readFile(`${process.env.LAMBDA_TASK_ROOT}/config/${environment}.json`, 'utf8', function (err,data) { 
     if (err) { 
     reject(err); 
     } else { 
     var config = JSON.parse(data); 
     console.log(`configuration is ${data}`); 
     resolve(config); 
     } 
    }); 
    }); 
}; 
0

, यूज-केस

  • के आधार पर अपने config तो परिवर्तन नहीं होगा यदि आप S3 वस्तुओं और पहुँच का उपयोग कर सकते लैम्ब्डा से या अपने कॉन्म्प्लेक्स को नए कॉन्फ़िगरेशन परिवर्तनों पर ट्रिगर करने के लिए सेट करें। (हालांकि यह सबसे सस्ता तरीका है, आप अन्य विकल्पों की तुलना में आप क्या कर सकते हैं में सीमित हैं)
  • यदि कॉन्फ़िगर लगातार बदल रहा है, तो डायनेमो डीबी - कुंजी/मान एक विकल्प है।
  • यदि डायनेमोडबी लगातार पढ़ने/लिखने के लिए महंगा है और मूल्य के लायक नहीं है तो आप एक एसक्यूएस कतार में टीसीपी सेवा पोस्ट कॉन्फ़िगरेशन कर सकते हैं। (या एक एसएनएस अगर आप ट्रिगर करते हैं जब सेवा पदों एक नया config) आदेश के माध्यम से किया जा सकता है वातावरण चर के लिए
4

समर्थन एडब्ल्यूएस लैम्ब्डा एक मौजूदा कार्य करने के लिए एक चर जोड़ना 18 नवंबर, 2016 को शुरू करने के लिए added था जैसा कि नीचे दिखाया गया है या एडब्ल्यूएस कंसोल से दिखाया गया है।

aws lambda update-function-configuration \ 
    --function-name MyFunction \ 
    --environment Variables={REMOTE_SERVICE_IP=100.100.100.100} 

दस्तावेज़ीकरण here पाया जा सकता है।

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