我正在处理一个项目,如果我使用lambda函数同时连接到关系数据库和DynamoDB。为了访问该函数,我使用了API网关,但我发现了一个问题:由于创建了两个数据库连接,用Java编写的lambda函数需要10多秒才能启动。
我知道API网关超时是10秒,执行我的功能不到1秒不是问题,但问题是当它必须启动时。我想知道如何捕捉这个超时异常,并通知用户他需要再次启动请求。
有没有一种方法可以做到这一点,而不必移动到Node.js或直接访问lambda函数?
由于建立与关系数据库的连接的成本非常高,我建议您在Lambda函数的初始化代码中打开连接(在处理程序之外)。
然后,在Lambda容器的生命周期内,数据库连接将在多个调用中重复使用。在Lambda函数处理程序中,您可能希望确保连接处于活动状态且没有超时,并根据需要重新打开。
通过API网关的第一次调用可能会超时,但随后的调用将在容器的生命周期内重用连接。
另一个技巧是创建一个调度函数,定期调用函数以保持容器"温暖"。
干杯,Ryan