我有一个API网关与lambda集成。当我点击rest API时,我注意到日志有时会进入lambda的现有日志流,有时它会创建单独的日志流。那么aws如何决定何时创建新的日志流呢?我的假设是,对于每个API请求,将启动一个单独的lambda容器来执行lambda函数,因此日志也将转到新的日志流。但事实并非如此。
TL;DR,当lambda函数重用执行环境时,日志将转到现有的日志流。冷启动总是创建一个新的执行环境,日志将转到一个新的日志流。
Lambda函数的每个实例都有一个专用的日志流。如果函数扩展,每个并发实例都有自己的日志流。每次获取执行环境并为响应调用创建新环境时,都会生成一个新的日志流。
裁判:https://docs.aws.amazon.com/lambda/latest/operatorguide/log-structure.html
如果请求在短时间内到来,lambda有时可能重用相同的容器,在这种情况下,可能在相同的日志流中包含日志。