Я начинаю работать с 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);
}
и в журналах 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"
}
Похоже, что часть кода обработчика, которая выполняет запрос, полностью пропускается. Я начал с библиотеки запросов и вернулся к использованию plain, http
чтобы создать минимальный пример. Я также пытался запросить URL-адрес службы, которую я контролирую, для проверки журналов, но никаких запросов не поступает.
Я в полном тупике. Есть ли причина, по которой Node и / или AWS Lambda не выполняет HTTP-запрос?