2015-08-04 9 views
18

Jestem nowy w Lambdas, więc być może jest coś, na co jeszcze nie wpadłem, ale napisałem prostą funkcję Lambda, aby wysłać żądanie HTTP do zewnętrznej strony. Z jakiegoś powodu, niezależnie od tego, czy korzystam z modułów Node http czy https, otrzymuję ECONNREFUSED.Żądania HTTP w AWS Lambda

Oto mój 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"); 
    }); 
}; 

Oto wyjście dziennika:

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 

Czy istnieje uprawnienie rola muszę zrobić żądania HTTP? Czy Lambda zezwala nawet na zwykłe stare żądania HTTP? Czy muszę ustawić specjalne nagłówki?

Wszelkie wskazówki są mile widziane.

Odpowiedz

16

Rozwiązałem mój własny problem.

Wygląda na to, że jeśli zdecydujesz się podać adres URL jako pierwszy parametr do .get(), musisz podać adres URL przed adresem URL, np. 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"); 
    }); 
}; 

Alternatywnie, można określić pierwszy parametr jako hash of options, gdzie hostname może być prosta forma URL. Przykład:

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"); 
    }); 
}; 
Powiązane problemy