闲置时,带有 Lambda 的 API 网关在第一次调用时返回 404?

Posted

技术标签:

【中文标题】闲置时,带有 Lambda 的 API 网关在第一次调用时返回 404?【英文标题】:API Gateway with Lambda returns 404 on first call when left idle? 【发布时间】:2019-04-14 16:09:04 【问题描述】:

我已经使用 API 网关和 Lambda 构建了一个 API。我注意到,当闲置时(通常是几个小时),它会在 first 调用时失败。有没有其他人遇到过这个问题?

我是否应该对我的 API 调用实施重试,或者是否有一些我遗漏的 Lambda 配置?

[INFO]  2019-04-15T03:18:58.263Z    SUCCESS: Connection to RDS mysql instance succeeded

这是在 CloudWatch 中为我的 Lambda 函数记录的唯一行。

【问题讨论】:

请分享确切的错误字符串/堆栈跟踪。 404 响应可能来自您的 Lambda 函数。检查您的 Lambda 中的 CloudWatch 日志,看看您是否可以找出您的代码响应 404 的原因。 【参考方案1】:

我发现如果由于cold starts 而处于空闲状态,AWS Lambda 调用函数的时间将比平时更长。

我收到的错误是由于 Lambda 花费的时间比我定义的 http 请求返回响应的超时时间长。

我已按照建议从我的 Lambda 函数中删除了 VPC,以缩短冷启动时间,此后我没有遇到任何 Lambda 冷启动问题。

【讨论】:

以上是关于闲置时,带有 Lambda 的 API 网关在第一次调用时返回 404?的主要内容,如果未能解决你的问题,请参考以下文章

带有 Cognito 的 AWS Lambda API 网关 - 如何使用 IdentityId 访问和更新 UserPool 属性?

发布带有“https://”的字符串时,API 网关返回 Forbidden

如何将响应放在 websocket api 网关后面的单独 lambda 中?

来自 API 网关 VS kinesis Streams 的 Lambda

cloudfront的默认缓存策略是啥(当常规lambda运行由api网关调用时)

使用代理集成时,API 网关和 Lambda 出现 CORS 错误**仅**