Estou começando a usar o AWS Lambda e tentando solicitar um serviço externo de minha função de manipulador. De acordo com esta resposta , as solicitações HTTP devem funcionar bem e não encontrei nenhuma documentação que diga o contrário. (Na verdade, as pessoas postaram códigos que usam a API do Twilio para enviar SMS .)
Meu código de manipulador é:
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);
}
e vejo as seguintes 4 linhas em meus logs do 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
Eu esperaria outra linha lá:
2015-02-11 07:38:06 UTC eb19c89d-b1c0-11e4-bceb-d310b88d37e2 Got response: 302
mas está faltando. Se eu estiver usando a parte essencial sem o wrapper do manipulador no nó em minha máquina local, o código funcionará conforme o esperado.
O inputfile.txt
que estou usando é para a invoke-async
chamada é este:
{
"url":"http://www.google.com"
}
Parece que a parte do código do manipulador que faz a solicitação foi totalmente ignorada. Comecei com o request lib e voltei a usar o plain http
para criar um exemplo mínimo. Também tentei solicitar uma URL de um serviço que eu controlo para verificar os logs e não há solicitações entrando.
Estou totalmente perplexo. Existe algum motivo pelo qual o Node e / ou AWS Lambda não executaria a solicitação HTTP?