如何在Next.js中延长Amplify的超时时间?(504错误)
解决AWS Amplify部署NextJS应用中App Script API 504超时问题
从你提供的请求时长截图来看,请求耗时超过20秒,最终触发504网关超时错误。结合你的场景(无法缩短App Script计算耗时),可通过以下方案解决:
调整Lambda函数超时时间
你的Next.js API路由在Amplify上默认以Lambda函数运行,默认超时仅3秒,远低于你的20-30秒需求:- 打开项目根目录下
amplify/backend/function/<你的API路由函数名>文件夹中的template.json - 找到
Timeout字段,将其值修改为30(单位:秒,Lambda最大支持900秒,可根据实际耗时调整) - 执行
amplify push重新部署函数
- 打开项目根目录下
修改API Gateway集成超时
若你通过Amplify API(REST/GraphQL)对接App Script,底层API Gateway的默认集成超时可能不足:- REST API:最大支持30秒集成超时,登录AWS控制台进入API Gateway服务,找到对应API的集成配置项,将超时时间调整至30秒
- HTTP API:最大仅支持29秒集成超时,若你的函数耗时接近30秒,建议切换为REST API以获得更长超时窗口
切换为异步处理模式
若计算耗时超过30秒,API Gateway的最大超时限制无法覆盖,需改用异步流程:- 让Next.js API路由接收请求后立即返回
202 Accepted状态码,同时触发后台Lambda异步执行App Script计算 - 借助AWS SQS队列管理任务,确保计算任务不受网关超时影响
- 计算完成后,通过前端轮询、WebSocket推送或邮件等方式通知用户结果
- 让Next.js API路由接收请求后立即返回
检查Amplify托管代理超时
在Amplify控制台进入你的应用,依次点击应用设置 > 托管 > 高级设置,查看是否有反向代理超时配置,若存在则调整至匹配你的请求耗时
内容的提问来源于stack exchange,提问作者Joshua Ochia
相关产品推荐
相关产品推荐

