Я починаю роботу з AWS Lambda, і я намагаюся запросити зовнішню послугу з моєї функції обробника. Відповідно до цієї відповіді , запити HTTP повинні працювати нормально, і я не знайшов жодної документації, яка б говорила про інше. (Насправді люди розмістили код, який використовує Twilio API для надсилання SMS .)
Мій код обробника:
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);
}
і я бачу наступні 4 рядки у своїх журналах CloudWatch:
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"
}
Здається, частина обробника коду, що робить запит, повністю пропускається. Я почав з lib запиту і повернувся до використання plain http
для створення мінімального прикладу. Я також намагався запитати URL-адресу служби, яку я контролюю, щоб перевірити журнали, і запитів не надходить.
Я абсолютно тупий. Чи є причина, по якій Node та / або AWS Lambda не виконують запит HTTP?