2015-12-26 17 views
12

एडब्ल्यूएस नोब के पीछे स्थानीय रूप से एडब्ल्यूएस लैम्बडास का परीक्षण। यह एक 'सर्वश्रेष्ठ अभ्यास विकास प्रश्न' का एक छोटा सा है - लेकिन मैं विशिष्ट होने की कोशिश करूंगा:एपीआई गेटवे एंडपॉइंट्स

मुझे पता है कि मैं इनपुट के लिए जेएसएस फ़ाइल के साथ स्थानीय रूप से नोड में लैम्बडास का परीक्षण कर सकता हूं, लेकिन मुझे यकीन नहीं है कि मेरे वेब ऐप 'एकीकरण परीक्षण' के लिए रास्ता, जो एस 3 में चलाएगा और एपीआई गेटवे एंडपॉइंट कॉल के जवाब में लैम्बडास को कॉल करेगा।

मेरे वास्तविक एपीआई गेटवे कॉन्फ़िगरेशन फ़ाइलों का उपयोग करना अद्भुत होगा ताकि मुझे स्थानीय तरीके से उसी तरीके से कॉल करने और स्थानीय रूप से मेरे लैम्ब्डा को निष्पादित करने में सक्षम बनाया जा सके। यह आलेख बताता है कि यह संभव नहीं है, फिर भी कोई स्थानीय एपीआई गेटवे परीक्षण वातावरण नहीं है: http://nickmchardy.com/blog/2015/09/my-thoughts-about-aws-api-gateway-working-with-aws-lambda

शायद यह स्पष्ट नहीं है, उदाहरण: यदि मेरे पास एपीआई गेटवे में उपयोगकर्ता/विधि है, तो जीईटी और पोस्ट के साथ, जो हैं AWS में क्रमशः listUsers.js और createUser.js Lambdas से जुड़ा हुआ है; विकास में मैं कॉल करना चाहता हूं: http://localhost:0000/users प्राप्त करें/पोस्ट करें और इसे लैम्ब्डा चलाएं और सही प्रतिक्रिया दें, इसलिए मैं स्थानीय रूप से अपना पूरा आर्किटेक्चर चला सकता हूं।

जाहिर है कि एक यूआरएल में एक चीज़ को बुलाया जाना विशेष रूप से जटिल नहीं है, इसलिए मेरा प्रश्न अधिक है: यह करने के लिए मेरे लिए सबसे अच्छा अभ्यास क्या है क्योंकि मेरे पास यह (क्लाउडफ़्रंट !? जैव !?) कॉन्फ़िगरेशन होगा कि ये चीज़ें एक साथ कैसे जुड़ती हैं एडब्ल्यूएस में, क्या मैं स्थानीय परीक्षण के लिए इसका उपयोग कर सकता हूं?

क्षमा करें अगर यह या तो स्पष्ट या बहुत स्पष्ट नहीं है!

उत्तर

15

ओह। जवाब जाहिर है 'सर्वरलेस' (पूर्व में JAWS): https://github.com/serverless/serverless। गुगलिंग रखने की जरूरत है, क्षमा चाहते हैं! सुनिश्चित नहीं है कि इस सवाल को अभी हटाना है या नहीं ?! मुझे लगता है कि यह दूसरों के लिए सहायक हो सकता है? खासकर सर्वरलेस के रूप में नया है?

+2

कृपया इसे हटाएं! हो सकता है कि मुझे अन्यथा सर्वरलेस नहीं मिला हो! :) –

+0

सर्वर रहित बीटीडब्ल्यू समाप्त नहीं हुआ है। हमने एडब्ल्यूएस एपीआई गेटवे के साथ छोड़ दिया है। देव उपकरण का उपयोग करना आसान नहीं है! (फिर भी) –

2

दुर्भाग्यवश, एपीआई गेटवे स्थानीय रूप से चलाने का कोई तरीका नहीं है।

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

दोष यह है कि आप केवल ऑनलाइन होने के दौरान ही विकसित हो सकते हैं, लेकिन हमारे लिए यह वास्तव में नकारात्मक नहीं है।

+0

हाँ, यही हमारे पास है। प्रत्येक डेवलपर के साथ ऑनलाइन परीक्षण करने वाले प्रत्येक चरण के साथ-साथ चरण का नाम लैम्ब्डा को पास कर दिया जाता है ताकि प्रत्येक डेवलपर के पास अपनी डायनेमो डीबी टेबल भी हो - लेकिन स्पष्ट रूप से इसका जवाब 'सर्वरलेस' (यह नया है)! मेरा जवाब देखें :) –

5

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

+0

कृपया इसके बजाय सर्वर पर काम करें! - यह एक शानदार विचार की तरह लगता है लेकिन अभी तक समाप्त होने के बहुत करीब नहीं है। –

1

मेरा सुझाव है कि आप निम्न कार्य करें: 1. जब आप एक लैम्ब्डा लिखते हैं तो सुनिश्चित करें कि यह नहीं जानता कि इसे क्या कहा जाता है (उदाहरण के लिए http) लेकिन इसके बजाय यह घटना जेसन से जानना आवश्यक है।

2. यदि आपने "1" किया है तो कस्टम "ईवेंट" फ़ाइलों के साथ अपने लैम्ब्डा का परीक्षण करने के लिए "grunt": https://www.npmjs.com/package/grunt-aws-lambda का उपयोग करें। यह आपको अपने लैम्ब्डा को एएसएस एपीआई गेटवे से अलग करने की अनुमति देगा।

3. http अनुरोध के साथ एक ई 2 ई परीक्षण बनाने के लिए एनपीएम परीक्षण का उपयोग करें ताकि यह जांच सके कि आपके शरीर में हेरफेर ठीक से किया गया है।

+0

क्षमा करें, लैम्ब्डा समस्या नहीं है, यह एपीआई गेटवे भाग है इसलिए मैं एडब्ल्यूएस के बिना ऐप चला सकता हूं। मैं कम नहीं करूँगा, लेकिन यह वह नहीं है जो मैं बाद में था। सर्वर रहित बहुत करीब था, लेकिन समाप्त नहीं हुआ है। –

2

हाल ही में, मैं क्लाउडियाजेएस का उपयोग एडब्ल्यूएस लैम्ब्डा विकास पर मेरी सहायता के लिए कर रहा हूं। निर्माता claudia-api-builder नामक इस लाइब्रेरी का निर्माण भी करता है जो आपको एडब्ल्यूएस एपीआई गेटवे बनाने में मदद करेगा जो लैम्ब्डा घटना को ट्रिगर करता है।इस ढांचे के भीतर आप अपने परीक्षण कक्षा में वरना तरह

var apiRequest = { 
    context: { 
    path: '/task', 
    method: 'GET' 
    }, 
    queryString: { 
    name: 'mike' 
    } 
}; 
// This method will simulate your api gateway endpoint 
api.router(apiRequest, {done: function(err, data){ 
    console.log(data); 
}}); 

कुछ Eventhough इस तरह से नहीं वास्तव में आसान समझने के लिए, कम से कम यह मेरे इकाई के लिए एपीआई प्रवेश द्वार के माध्यम से अपने लैम्ब्डा एपीआई परीक्षण में मदद करता है बनाने के द्वारा endpoint परीक्षण कर सकते हैं।

3

हमारा सूट (Bespoken Tools) आपको यह करने की अनुमति देगा। इस ट्यूटोरियल बताते हैं कि कैसे: http://docs.bespoken.tools/en/latest/tutorials/tutorial_lambda_local/

संक्षिप्त सारांश है:
1) स्थापित करें bespoken उपकरण
npm install bespoken-tools -g
2) अपने लैम्ब्डा
bst proxy lamdba index.js
3) है कि यह बाहर प्रिंट यूआरएल ले लो के साथ एक प्रॉक्सी शुरू और एपीआई गेटवे
में एपीआई गेटवे को HTTP एकीकरण के रूप में कॉन्फ़िगर करें, और जब आप चरण 2 में प्रॉक्सी शुरू करते हैं तो मुद्रित यूआरएल का उपयोग करें।

उम्मीद है कि मदद करता है! एक बार जब आप इसे सेटअप कर लेंगे, तो आपके एपीआई गेटवे पर कॉल सीधे आपके लैपटॉप पर चल रहे लैम्ब्डा में आएंगे।

1

आप aws-sam-local का उपयोग भी कर सकते हैं सबसे पहले आपको डॉकर इंस्टॉल करना होगा। इसके बाद, इन चरणों का पालन करें:

$ npm install -g aws-sam-local 
$ cd path/to/your/code 
$ sam local start-api 

सीएलआई आपके एपीआई फ़ंक्शन को स्थानीयहोस्ट URL पर मैप करेगा। अब आप एपीआई एंड-पॉइंट हिट करने के लिए कर्ल, पोस्टमैन या अपने ब्राउज़र का उपयोग कर सकते हैं।

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