我有这样的设置:
浏览器-> API网关-> Lambda:87毫秒
浏览器-> Node.js脚本-> AWS开发工具包-> Lambda:163毫秒
如果我通过API网关调用Lambda函数,那么响应时间就可以了。
如果我通过AWS开发工具包调用Lambda函数,则响应非常慢。
我想摆脱API网关。因为它很贵。但是,AWS-SDK的运行速度非常慢。
我这样使用SDK:
var http = require('http');
var url = require('url');
var AWS = require('aws-sdk');
var lambda = new AWS.Lambda({region: "eu-central-1"});
http.createServer(function (req, res) {
var url = req.url.split('/');
var data1 = url[1];
var data2 = url[2];
if ( ! data1 || ! data2 ) {
res.writeHead(500, {'Content-Type': "application/json" });
res.end("");
return;
}
var params = {
FunctionName: 'myfunc',
InvocationType: "RequestResponse",
Payload: '{"data1": "' + data1 + '", "data2": "' + data2 + '"}',
LogType : 'None'
};
lambda.invoke(params, function(err, data) {
if (err) {
console.log(err, err.stack);
} else {
var result = JSON.parse(data.Payload);
res.writeHead(200, {'Content-Type': "application/json" });
res.end(result.body);
}
});
}).listen(8080);
如何快速调用Lambda函数?
答案 0 :(得分:0)
API网关具有CloudFront的优势,这就是为什么它总是比从外部主机调用lambda更快的原因。 如果将nodejs脚本部署到同一区域和同一vpc /子网(如果已配置)中的lambda,则它应比API Gateway更快。