Lambda @ edge中的速度修复或替代方法

时间:2019-04-25 10:10:07

标签: amazon-web-services aws-sdk-nodejs aws-lambda-edge

我在客户端请求上运行了lambda @ edge。我正在将邮件放入SQS,由另一个lambda处理。

我的脚本在更新后的第一次运行时间非常长-经常经历5秒的硬超时,这不是很好的用户体验。

其中大部分正在加载AWS开发工具包,持续时间超过2.5秒

var timerstart = new Date();
var timercheck = new Date();
console.log("Time check: 0");

const AWS = require('aws-sdk');

timercheck = new Date();
console.log("Time check - AWS sdk loaded: ", timercheck - timerstart);

我也在加载https

const https = require('https');

第一次运行大约需要120毫秒。

许多后续运行完全在毫秒以下完成,很少超过5毫秒。

是否还有其他人遇到过这个问题-并希望找到解决该问题的方法?我没有通过googlefu找到任何东西。了解第一次运行和后续运行之间的差异将很有帮助。

疯狂的想法

@jogold导致一些有趣的阅读。

出于某种原因,我认为将需求放在出口之外会很有趣。

发件人:

'use strict';
exports.handler = async (event, context, callback) => {
    const AWS = require('aws-sdk');
    //... stuff

收件人:

'use strict';
const AWS = require('aws-sdk');
exports.handler = async (event, context, callback) => {
    //... stuff

现在,在几次(非常确定的)冷启动过程中,第一次检查已降低到大约300ms。也许这只是其他所有人都知道的东西,而我对NodeJS的了解还有些不足,但是如果其他任何人来寻找Lambda @ Edge执行时间的问题,那就开始吧。

1 个答案:

答案 0 :(得分:1)

这称为冷启动

看看Everything you need to know about cold starts in AWS Lambda

如果很关键,应该考虑预热功能。