在AWS lambda中运行函数时,使用环境变量来控制设置是很常见的。但是,当通过API网关调用Lambda时,您有“阶段变量”。与之抗争。
我的问题是:当从API网关调用时,是一个范围到特定API网关阶段的AWS Lambda实例,这样我可以依赖不在调用之间更改的阶段。实际上,每个API' stage'得到它自己的实例池,根据阶段变量回收?
我可能希望依赖此行为的示例:
创建与表的连接 - 每个阶段的表名都不同,所以如果我在第一次使用时创建连接,我最终会使用第一个调用者阶段上下文。当我在不同的API网关阶段进行呼叫时会发生什么?
改变环境的JWT密钥。
我的 gut 感觉是,如果API网关有两个版本/阶段的部署引用完全相同的函数verison,则lambda管理的函数实例可以互换地接收来自两个阶段的调用,并且我不打算缓存上下文并请求正在处理的信息(阶段变量)变量。
那里有很多AWS API Gateway / Lambda的东西,但是找不到这个问题的明确答案。
答案 0 :(得分:1)
你没错,单个Lambda函数版本将拥有一个完全独立的实例池。不同的API网关阶段甚至不同的API都可以调用相同的函数,这对Lambda中的实例池没有影响。
因此,您正在进行的任何函数内缓存都不应使用只有特定API和/或阶段才能访问缓存数据的假设。