Ich beginne mit AWS Lambda und versuche, einen externen Service von meiner Handlerfunktion anzufordern. Nach dieser Antwort sollten HTTP-Anforderungen einwandfrei funktionieren, und ich habe keine Dokumentation gefunden, die etwas anderes besagt. (Tatsächlich haben Benutzer Code veröffentlicht, der die Twilio-API zum Senden von SMS verwendet .)
Mein Handler-Code lautet:
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);
}
und ich sehe die folgenden 4 Zeilen in meinen CloudWatch-Protokollen:
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
Ich würde dort eine weitere Zeile erwarten:
2015-02-11 07:38:06 UTC eb19c89d-b1c0-11e4-bceb-d310b88d37e2 Got response: 302
aber das fehlt. Wenn ich den wesentlichen Teil ohne den Handler-Wrapper im Knoten auf meinem lokalen Computer verwende, funktioniert der Code wie erwartet.
Das, was inputfile.txt
ich benutze, ist für den invoke-async
Anruf:
{
"url":"http://www.google.com"
}
Es scheint, dass der Teil des Handler-Codes, der die Anforderung ausführt, vollständig übersprungen wird. Ich begann mit der Anfrage lib und benutzte einfach http
, um ein minimales Beispiel zu erstellen. Ich habe auch versucht, eine URL eines von mir kontrollierten Dienstes anzufordern, um die Protokolle zu überprüfen, und es gehen keine Anfragen ein.
Ich bin total ratlos. Gibt es einen Grund, warum Node und / oder AWS Lambda die HTTP-Anforderung nicht ausführen würden?