Tôi đang bắt đầu với AWS Lambda và tôi đang cố gắng yêu cầu một dịch vụ bên ngoài từ hàm xử lý của mình. Theo câu trả lời này , các yêu cầu HTTP sẽ hoạt động tốt và tôi không tìm thấy bất kỳ tài liệu nào nói khác. (Trên thực tế, mọi người đã đăng mã sử dụng API Twilio để gửi SMS .)
Mã trình xử lý của tôi là:
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);
}
và tôi thấy 4 dòng sau trong nhật ký CloudWatch của mình:
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
Tôi mong đợi một dòng khác trong đó:
2015-02-11 07:38:06 UTC eb19c89d-b1c0-11e4-bceb-d310b88d37e2 Got response: 302
nhưng đó là thiếu. Nếu tôi đang sử dụng phần thiết yếu mà không có trình bao bọc trình xử lý trong nút trên máy cục bộ của mình, thì mã sẽ hoạt động như mong đợi.
Các inputfile.txt
tôi đang sử dụng là dành cho các invoke-async
cuộc gọi là thế này:
{
"url":"http://www.google.com"
}
Có vẻ như phần mã xử lý thực hiện yêu cầu bị bỏ qua hoàn toàn. Tôi bắt đầu với lib yêu cầu và quay lại sử dụnghttp
để tạo một ví dụ tối thiểu. Tôi cũng đã cố gắng yêu cầu URL của dịch vụ mà tôi kiểm soát để kiểm tra nhật ký và không có yêu cầu nào đến.
Tôi hoàn toàn bối rối. Có lý do gì khiến Node và / hoặc AWS Lambda không thực thi yêu cầu HTTP không?