我有一个包含 nextjs 的系统,与 fastapi 通信,与 Edgedb 通信,与 aurora 通信。为了节省成本,我想在 lambda 函数上运行这三个服务。我知道冷启动的局限性。
在我的用例中,如果调用fastapi lambda,它肯定会与数据库通信,这意味着edgedb lambda也将被调用,并且在大多数情况下,如果调用nextjs lambda,它将命中fastapi lambda。
是否有一种机制告诉API网关,如果调用nextjs lambda,它也应该唤醒其他两个,以避免三个连续的冷启动?
为了避免 lambda 函数中的冷启动,您可以使用 Lambda SnapStart,它将捕获 lambda 函数中发生的初始化的快照和缓存并重用,而不是每次都进行初始化。
https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html
按照此处提供的步骤激活, https://docs.aws.amazon.com/lambda/latest/dg/snapstart-activate.html
但目前 Lambda SnapStart 支持的环境很少,
Java 11 及更高版本的 Java 托管运行时。其他托管运行时(例如nodejs20.x和python3.12),仅操作系统运行时。