Amazon web services 通过SDK调用Lambda的速度比API网关慢

Amazon web services 通过SDK调用Lambda的速度比API网关慢,amazon-web-services,aws-lambda,aws-sdk,aws-api-gateway,Amazon Web Services,Aws Lambda,Aws Sdk,Aws Api Gateway,我有这样的设置: 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 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);
浏览器->API网关->Lambda:87毫秒

浏览器->Node.js脚本->AWS SDK->Lambda:163毫秒

如果我通过API网关调用Lambda函数,那么响应时间就可以了

如果我通过AWS SDK调用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函数?

API网关具有CloudFront的优势,这就是为什么它总是比从外部主机调用Lambda更快的原因。
如果将nodejs脚本部署到同一区域和同一vpc/子网(如果已配置)中的lambda,则它应该比API网关更快

调用lamda.invoke的函数的AWS凭据存储在哪里?查找凭据需要时间。@JohnHanley将AWS凭据存储在~/.AWS/credentials中。但是,aws的文档说“凭证应位于~/.aws/credentials中”