2015-08-04 23 views
18

Tôi mới sử dụng Lambdas nên có lẽ có điều gì đó mà tôi chưa bắt gặp, nhưng tôi đã viết một hàm Lambda đơn giản để thực hiện yêu cầu HTTP tới một trang bên ngoài. Vì một số lý do, liệu tôi có sử dụng các mô-đun http hoặc https của Node hay không, tôi nhận được ECONNREFUSED.Yêu cầu HTTP trong AWS Lambda

Dưới đây là Lambda của tôi:

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

Dưới đây là các dữ liệu ghi nhận:

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 

Có một sự cho phép vai trò tôi cần phải có để làm các yêu cầu HTTP? Liệu Lambda thậm chí có cho phép các yêu cầu HTTP cũ đơn giản không? Có tiêu đề đặc biệt nào tôi cần phải đặt không?

Mọi hướng dẫn đều được đánh giá cao.

Trả lời

16

Tôi đã giải quyết được sự cố của riêng mình.

Dường như, nếu bạn quyết định cấp URL trong tham số đầu tiên cho .get(), bạn phải bao gồm http:// phía trước URL, ví dụ: 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"); 
    }); 
}; 

Ngoài ra, bạn có thể chỉ định các tham số đầu tiên như một hash of options, nơi hostname có thể là hình thức đơn giản của URL. Ví dụ:

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