मैं AWS लाम्बा से शुरू कर रहा हूं और मैं अपने हैंडलर फ़ंक्शन से बाहरी सेवा का अनुरोध करने का प्रयास कर रहा हूं। इस उत्तर के अनुसार , HTTP अनुरोधों को ठीक काम करना चाहिए, और मुझे कोई भी दस्तावेज नहीं मिला है जो अन्यथा कहता है। (वास्तव में, लोगों ने कोड पोस्ट किए हैं जो एसएमएस भेजने के लिए टवीलियो एपीआई का उपयोग करते हैं ।)
मेरा हैंडलर कोड है:
var http = require('http');
exports.handler = function(event, context) {
console.log('start request to ' + event.url)
http.get(event.url, function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
console.log('end request to ' + event.url)
context.done(null);
}
और मुझे अपने CloudWatch लॉग में निम्नलिखित 4 लाइनें दिखाई देती हैं:
2015-02-11 07:38:06 UTC START RequestId: eb19c89d-b1c0-11e4-bceb-d310b88d37e2
2015-02-11 07:38:06 UTC eb19c89d-b1c0-11e4-bceb-d310b88d37e2 start request to http://www.google.com
2015-02-11 07:38:06 UTC eb19c89d-b1c0-11e4-bceb-d310b88d37e2 end request to http://www.google.com
2015-02-11 07:38:06 UTC END RequestId: eb19c89d-b1c0-11e4-bceb-d310b88d37e2
मुझे वहाँ एक और लाइन की उम्मीद है:
2015-02-11 07:38:06 UTC eb19c89d-b1c0-11e4-bceb-d310b88d37e2 Got response: 302
लेकिन वह गायब है। यदि मैं अपने स्थानीय मशीन पर नोड में हैंडलर आवरण के बिना आवश्यक भाग का उपयोग कर रहा हूं, तो कोड अपेक्षित रूप से काम करता है।
inputfile.txt
मैं उपयोग कर रहा हूँ के लिए है invoke-async
कॉल यह है:
{
"url":"http://www.google.com"
}
यह हैंडलर कोड के हिस्से की तरह लगता है जो अनुरोध को पूरी तरह से छोड़ देता है। मैंने अनुरोध परिवाद के साथ शुरू किया और http
एक न्यूनतम उदाहरण बनाने के लिए सादे का उपयोग करके वापस गिर गया । मैंने लॉग्स की जांच करने के लिए एक सेवा के URL का अनुरोध करने का भी प्रयास किया है और इसमें कोई अनुरोध नहीं है।
मैं पूरी तरह से स्टम्प्ड हूं। क्या कोई कारण है कि Node और / या AWS लैम्ब्डा HTTP अनुरोध को निष्पादित नहीं करेगा?