2016-05-13 128 views
0

我正在使用lambda函数同时连接到关系数据库和DynamoDB的项目。为了访问这个函数,我使用了API网关,但是我发现了一个问题:由于创建了两个数据库连接,用Java编写的我的lambda函数需要超过10秒才能启动。AWS API网关中的句柄超时

我知道API网关超时时间是10秒,这不是执行我的功能的时间少于1秒的问题,但问题在于它必须启动。 我想知道如何捕捉这个超时异常,并通知用户他需要再次启动请求。

有没有办法做到这一点,而不移动到Node.js或直接访问lambda函数?

回答

1

由于与关系数据库建立连接的成本非常高,我鼓励您在Lambda函数的初始化代码(处理程序之外)中打开连接。

然后,数据库连接将在Lambda容器的生命周期的多个调用中重复使用。在您的Lambda函数处理程序中,您可能需要确保连接处于活动状态并且没有超时,并根据需要重新打开。

通过API网关的第一个调用可能会超时,但随后的调用将在容器的生命周期中重新使用连接。

另一个诀窍是创建一个预定的函数来定期调用你的函数来保持容器“温暖”。

干杯, 瑞安

+0

我已经初始化处理程序之外的数据库连接。我将执行预定的功能以保持我的功能温暖,但我仍然担心一个真正的用户激活该功能,他会获得时间。问题是我不知道如何捕捉错误并通知用户,有没有办法这样做? –

+0

超时将显示为具有特定错误消息的504错误。您当然可以在您的应用程序中捕获这些类型的响应,并根据需要重试或显示错误消息。 –