2015-08-04 5 views
18

Ich bin neu bei Lambdas, also vielleicht gibt es etwas, das ich noch nicht verstanden habe, aber ich habe eine einfache Lambda-Funktion geschrieben, um eine HTTP-Anfrage an eine externe Site zu senden. Aus irgendeinem Grund, ob ich Node http oder https Module verwende, bekomme ich eine ECONNREFUSED.HTTP-Anfragen in einem AWS Lambda

Hier ist meine Lambda:

var http = require('http'); 

exports.handler = function (event, context) { 
    http.get('www.google.com', function (result) { 
     console.log('Success, with: ' + result.statusCode); 
     context.done(null); 
    }).on('error', function (err) { 
     console.log('Error, with: ' + err.message); 
     context.done("Failed"); 
    }); 
}; 

Hier ist die Log-Ausgabe:

START RequestId: request hash 
2015-08-04T14:57:56.744Z request hash    Error, with: connect ECONNREFUSED 
2015-08-04T14:57:56.744Z request hash    {"errorMessage":"Failed"} 
END RequestId: request hash 

Gibt es eine Rolle Erlaubnis muss ich haben HTTP-Anfragen zu tun? Erlaubt Lambda sogar einfache alte HTTP-Anfragen? Gibt es spezielle Header, die ich einstellen muss?

Jede Anleitung wird geschätzt.

Antwort

16

Ich löste mein eigenes Problem.

Anscheinend wenn Sie die URL in als ersten Parameter zu .get() entscheiden zu ernähren, müssen Sie die http:// up vor der URL enthalten, zum Beispiel http://www.google.com.

var http = require('http'); 

exports.handler = function (event, context) { 
    http.get('http://www.google.com', function (result) { 
    console.log('Success, with: ' + result.statusCode); 
    context.done(null); 
    }).on('error', function (err) { 
    console.log('Error, with: ' + err.message); 
    context.done("Failed"); 
    }); 
}; 

Alternativ können Sie den ersten Parameter als hash of options angeben, wo hostname die einfache Form der URL sein kann. Beispiel:

var http = require('http'); 

exports.handler = function (event, context) { 
    var getConfig = { 
    hostname: 'www.google.com' 
    }; 
    http.get(getConfig, function (result) { 
    console.log('Success, with: ' + result.statusCode); 
    context.done(null); 
    }).on('error', function (err) { 
    console.log('Error, with: ' + err.message); 
    context.done("Failed"); 
    }); 
};