node.js – 来自Lambda的REST调用通常非常慢

我不确定这里的问题是否正确,或者更适合超级用户.但是,因为我认为我的代码可能有问题,所以我在这里尝试一下.

我创建了一个小代理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后取消.但我经常看到执行因3000ms的超时而被取消.我将它增加到30000ms并开始工作.有时lambda在500ms内被执行但是接下来需要3100ms.我不会解释为什么会这样.请赐教.

最佳答案 它可能来自一个叫做冷启动的正常行为

When using AWS Lambda, provisioning of your function’s container can
take >5 seconds. That makes it impossible to guarantee <1 second
responses to events such as API Gateway, DynamoDB, CloudWatch, S3,
etc.

这是一个很好的article从无服务器是什么,以及如何处理它.

点赞