aws-lambda - 如何杀死 LAMBDA 热容器以刷新 RDS Connection.pool 中的所有数据

标签 aws-lambda aws-api-gateway

我注意到,在某些情况下,在我更新 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

看来,

  1. 测试函数时,aws.web.console 始终调用新容器和新的 connection.pools
  2. 来自 api.gateway 的调用似乎使用了具有旧缓存的先前容器或具有旧缓存的新容器?

所以我的问题是如何强制终止 Lambda 函数,使其变冷并在下一次调用时完全重新启动?

最佳答案

更新(2018 年 5 月 22 日):截至撰写本文时,使用新容器的唯一方法是重新部署代码。 OP 的问题是通过更改其代码来解决的,如下面的答案所示,因此不再需要重新部署代码。


似乎您正在将 lambda 的结果存储在处理程序之外。在这种情况下,它将容易被容器重用。

在处理程序外部声明的任何内容都将在调用之间共享,因此请确保在处理程序函数内部声明/初始化特定于该调用(例如请求)的变量。

关于aws-lambda - 如何杀死 LAMBDA 热容器以刷新 RDS Connection.pool 中的所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46157196/

相关文章:

amazon-web-services - AWS Lambda 上的 Apollo graphql 服务无法读取 null 的属性 'Accept'

amazon-web-services - 如何从账户 A 中的 Lambda(VPC 中的 Lambda)调用账户 B 中的 AWS Lambda 函数(VPC 中的此 Lambda)

aws-lambda - 当请求无效的 API 网关端点时,返回更友好的响应正文

websocket - 在 AWS ApiGateway 中设置基本的 WebSocket 模拟

amazon-web-services - AWS 匿名无权执行 : execute-api:Invoke on resource. Private API Gateway

amazon-web-services - API网关前面怎么加CloudFront

amazon-web-services - 使用 aws-cli 创建 api-gateway lambda 集成

javascript - 为异步方法创建测试

node.js - 在建立安全 TLS 连接之前,客户端网络套接字已断开 aws lambda nodejs

amazon-web-services - AWS 权限 - 我们是否需要在 Lambda 和 S3 上设置权限