Estoy comenzando con AWS Lambda y estoy intentando solicitar un servicio externo desde mi función de controlador. De acuerdo con esta respuesta , las solicitudes HTTP deberían funcionar bien y no he encontrado ninguna documentación que indique lo contrario. (De hecho, la gente ha publicado código que usa la API de Twilio para enviar SMS ).
Mi código de controlador es:
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);
}
y veo las siguientes 4 líneas en mis registros de 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
Esperaría otra línea allí:
2015-02-11 07:38:06 UTC eb19c89d-b1c0-11e4-bceb-d310b88d37e2 Got response: 302
pero eso falta. Si estoy usando la parte esencial sin el contenedor del controlador en el nodo de mi máquina local, el código funciona como se esperaba.
El inputfile.txt
que estoy usando es para la invoke-async
llamada es este:
{
"url":"http://www.google.com"
}
Parece que la parte del código del controlador que realiza la solicitud se omite por completo. Comencé con la biblioteca de solicitudes y volví a usar plain http
para crear un ejemplo mínimo. También intenté solicitar una URL de un servicio que controlo para verificar los registros y no ingresaron solicitudes.
Estoy totalmente perplejo. ¿Hay alguna razón por la que Node y / o AWS Lambda no ejecutarían la solicitud HTTP?