【问题标题】:AWS lambda execution fails only first time I run it with 'customer function error'AWS lambda 执行仅在我第一次使用“客户函数错误”运行时失败
【发布时间】:2019-05-11 06:41:59
【问题描述】:

我通过 API 网关触发了一个 lambda 函数,一切正常,除了我在给定日期第一次触发它失败的一个例外。

奇怪的是,lambda 函数日志没有显示任何错误。我得到了我通常的START 日志语句,然后是触发器的请求和上下文,然后在 5 秒后,它意外结束。

当我查看 API 网关日志时,这是它返回的错误:

由于客户函数错误,Lambda 执行失败,状态为 200:2018-12-10T11:00:31.208Z cc233168-fc9n-11fc-a05a-577bb4sd2b2ccc 任务在 5.01 秒后超时。

有没有人遇到过类似的问题?什么是客户功能错误,我该如何解决?

【问题讨论】:

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


    【解决方案1】:

    在不了解您正在使用的后台代码的情况下,我将其称为冷启动。冷启动发生在您的函数很长时间没有被调用的第一个请求中。如果您发现错误消息显示“5.01 秒后超时。这是默认设置。您可以增加超时时间。

    或者,您可以考虑通过减少冷启动的长度reference 来减少冷启动的影响:

    1. 通过使用不会导致长时间冷启动的语言编写 Lambda 函数  -  即 Node.js、Python 或 Go
    2. 为处理用户请求的关键路径上的函数选择更高的内存设置(即用户必须等待响应的任何内容,包括中间 API)
    3. 优化函数的依赖关系和包大小

    您还可以在每个特定间隔后通过 Cloud Watch 放置一个 cron 作业以通过 PING 调用您的 API 来探索

    【讨论】:

    • 还有其他原因吗?我在负载测试期间看到了这一点,并且只是在几分钟后,所以我严重怀疑这是由于冷启动(除非它是新缩放的 Lambda 的冷启动)。
    • 注意:如果您使用无服务器框架部署 Lambda,则默认超时为 6 秒,因此您会看到“任务在 6.01 秒后超时”。在 API 网关日志中。
    猜你喜欢
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 2014-07-05
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多