HTTP-запросы в AWS Lambda

Я новичок в Lambdas, поэтому, возможно, я еще не понял, но я написал простую функцию Lambda для выполнения HTTP-запроса на внешний сайт. По какой-то причине, использую ли я модули Node http или https, я получаю ECONNREFUSED.

Здесь моя Лямбда:

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");
    });
};

Здесь вывод журнала:

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

Есть ли разрешение на роль, которое мне нужно для выполнения HTTP-запросов? Lambda даже разрешает простые старые HTTP-запросы? Есть ли специальные заголовки, которые мне нужно установить?

Приветствуется любое руководство.

Ответы

Ответ 1

Я решил свою проблему.

По-видимому, если вы решите подать URL-адрес в качестве первого параметра в .get(), вы должны включить http:// вверху URL-адреса, например, 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");
  });
};

В качестве альтернативы вы можете указать первый параметр как хеш опций, где hostname может быть простой формой URL-адреса. Пример:

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");
  });
};