我注意到,在某些情况下,在我更新 Lamda 函数和 RDS 数据后,Lamda 会使用旧数据
形成 rds connection.pool。
例如。
V1 of function is uploaded to lambda via cli
V1 is tested @ lambda aws.web.console and returns data as expected
V1 is called from api.gateway and returns v1 data as expected
V2 of function is uploaded to lambda via cli
V2 data is changed on RDS
V2 is tested @ lambda aws.web.console and returns V2 data as expected
V2 is called from api.gateway and returns data as **V1**
等待函数变冷
V2 is called from api.gateway and returns V2 data as expected
看来,
- 测试函数时,aws.web.console 始终调用新容器和新的 connection.pools
- 来自 api.gateway 的调用似乎使用了具有旧缓存的先前容器或具有旧缓存的新容器?
所以我的问题是如何强制终止 Lambda 函数,使其变冷并在下一次调用时完全重新启动?
最佳答案
更新(2018 年 5 月 22 日):截至撰写本文时,使用新容器的唯一方法是重新部署代码。 OP 的问题是通过更改其代码来解决的,如下面的答案所示,因此不再需要重新部署代码。
似乎您正在将 lambda 的结果存储在处理程序之外。在这种情况下,它将容易被容器重用。
在处理程序外部声明的任何内容都将在调用之间共享,因此请确保在处理程序函数内部声明/初始化特定于该调用(例如请求)的变量。
关于aws-lambda - 如何杀死 LAMBDA 热容器以刷新 RDS Connection.pool 中的所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46157196/