【问题标题】:Handle timeout in AWS API Gateway在 AWS API Gateway 中处理超时
【发布时间】:2016-05-13 23:00:55
【问题描述】:

我正在处理一个项目,我正在使用 lambda 函数同时连接到关系数据库和 DynamoDB。要访问该函数,我使用的是 API Gateway,但我发现了一个问题:由于创建了两个数据库连接,我用 Java 编写的 lambda 函数需要 10 多秒才能启动。

我知道 API Gateway 超时为 10 秒,执行我的函数的时间不到 1 秒,这不是问题,但问题是它何时必须启动。 我想知道如何捕捉这个超时异常并通知用户他需要重新开始请求。

有没有办法在不迁移到 Node.js 或直接访问 lambda 函数的情况下做到这一点?

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-api-gateway


    【解决方案1】:

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

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

    通过 API Gateway 的第一次调用可能会超时,但后续调用将在容器的生命周期内重用连接。

    另一个技巧是创建一个计划函数来定期调用您的函数以保持容器“温暖”。

    干杯, 瑞恩

    【讨论】:

    • 我已经在处理程序之外初始化数据库连接。我将实现预定的功能来保暖我的功能,但我仍然担心一个真正的用户激活该功能并且他会超时。问题是我不知道如何捕获该错误并通知用户,有没有办法这样做?
    • 超时将表现为带有特定错误消息的 504 错误。您当然可以在应用程序中捕获这些类型的响应,然后根据需要重试或显示错误消息。
    猜你喜欢
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 2019-01-20
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    相关资源
    最近更新 更多