AWS lambda是否存储全局变量?

Jag*_*row 7 javascript node.js aws-lambda

我创建了简单的增量计数器,如下所示.

global.counter = 0;
exports.handler = (event, context, callback) => {
    // TODO implement
    callback(null, ++global.counter);
};
Run Code Online (Sandbox Code Playgroud)

每当我测试这个函数时,我都会按预期增加值.

这是正确的方法还是我需要在云数据库中存储计数器?

Tho*_* L. 17

当您第一次调用Lambda函数时,AWS会在后台引导容器.

当你打电话给你lambda函数几次,你MIGHT得到相同的容器,以优化运行时间和设置延迟.

您不能依赖此行为,但您必须意识到它存在.

对于全局变量,如果需要在Lambda中运行逻辑,它应该为多个函数同时调用相同的代码,因此应该锁定在lambda代码(DB或缓存)之外的某个地方.

问候,

  • 是否可以控制容器的启动顺序?如果在容器启动期间仅调用一次外部 API 或 IAM,那就太好了。谢谢! (2认同)

tip*_*chi 5

我遇到了同样的问题,我最终使用 AWS Elasticache 服务 (Memcached) 来存储 (key,value) 对。它快速,非常易于使用(至少来自 python)并且可靠。

否则我完全同意 Thomas 的观点,您应该意识到它可能会导致问题,但不要相信这个“​​功能”。