Lambda进行的REST调用通常非常慢

时间:2018-11-17 15:42:08

标签: node.js rest amazon-web-services aws-lambda runtime

我不确定这个问题是否正确,还是更适合超级用户。但是,由于我认为我的代码可能做错了什么,所以我在这里尝试。

我创建了一个小的代理lambda函数来调用我的REST API。我正在使用node.js和请求包。这是我的代码:

exports.handler = function (request, context) {
    require('request').post({url: 'https://example.com/foo/bar', json:request, timeout:1000}, function(error, response, body){
        if(error) {
            console.log("Something went wrong:\n" + JSON.stringify(error, null, 2));
            context.succeed({failed:true})
        } else {
            console.log("Returning remote response:\n" + JSON.stringify(body, null, 2));
            context.succeed(body);
        }
    });

    console.log("Forwarding request to own backend:\n" + JSON.stringify(request, null, 2));
};

这确实没什么特别,但是我认为应该在1000ms之后取消请求。但是我经常看到由于3000毫秒的超时而取消了执行。我将其增加到30000ms,它开始工作。有时,lambda在500毫秒内被执行,但下一次需要3100毫秒。我不理解为什么会这样。请赐教。

1 个答案:

答案 0 :(得分:1)

这可能来自正常行为,即冷启动

  

使用AWS Lambda时,可以配置函数的容器   花费> 5秒。这使得无法保证<1秒   对事件的响应,例如API网关,DynamoDB,CloudWatch,S3,   等

这是无服务器的一个不错的article,它是什么,以及如何处理它。