我有一个AWS-Lambda函数,在将文件放入S3-Bucket后触发gots。
这是我的lambda函数:
var http = require('http');
exports.handler = function (event, context) {
var bucket = event.Records[0].s3.bucket.name;
var key = event.Records[0].s3.object.key;
var newKey = key.split('.')[0].slice(8);
var url = 'https://xxxxx.herokuapp.com/api/messages/'+newKey+'/processingFinished'
console.log("URL:" + url)
http.get(url, function (result) {
console.log('!!!! Success, with: ' + result.statusCode);
context.done(null);
}).on('error', function (err) {
console.log('Error, with: ' + err.message);
context.done("Failed");
});
};
在CloudWatch Logfiles中,我看到不支持https的投诉:
2017-07-27T10:38:04.735Z 8428136e-72b7-11e7-a5b9-bd0562c862a0 Error: Protocol "https:" not supported. Expected "http:"
at new ClientRequest (_http_client.js:54:11)
at Object.exports.request (http.js:31:10)
at Object.exports.get (http.js:35:21)
at exports.handler (/var/task/index.js:18:8)
但是可以使用任何webbrowser打开列出的URL。服务器接受SSL,整个API按SSL运行。
为什么AWS拒绝SSL请求?怎么解决这个问题?
答案 0 :(得分:2)
根据节点文档:(updated fiddle)
HTTPS是TLS / SSL上的HTTP协议。在Node.js中,这是作为一个单独的模块实现的。
使用
http = require('https');