【问题标题】:Lambda invoke via SDK is slower than API Gateway通过 SDK 调用 Lambda 比 API Gateway 慢
【发布时间】:2019-01-07 19:41:26
【问题描述】:

我有这样的设置:

浏览器 -> API 网关 -> Lambda:87 毫秒

浏览器 -> Node.js 脚本 -> AWS 开发工具包 -> Lambda:163 毫秒

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

【问题讨论】:

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

标签: amazon-web-services aws-lambda aws-sdk aws-api-gateway


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 2019-04-17
    • 2019-02-14
    • 1970-01-01
    • 2017-02-15
    • 2018-11-09
    相关资源
    最近更新 更多