You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在AWS Amplify上调用带查询参数的NextJS内部API时出现503错误

解决NextJS内部API在AWS Amplify上的503错误

以下是针对问题的排查和解决方向:

  • 检查静态资源的打包配置
    当API路由读取本地JSON文件时,需确保该文件在Amplify部署时被正确包含到Lambda函数包中。打开项目根目录的amplify.yml文件,确认build阶段的配置包含目标JSON文件:

    version: 1
    frontend:
      phases:
        build:
          commands:
            - npm run build
      artifacts:
        baseDirectory: .next
        files:
          - '**/*'
          - 'path/to/your/json/file.json' # 替换为你的JSON文件路径
    

    同时可在next.config.js中添加配置,确保资源打包合规:

    module.exports = {
      output: 'standalone',
    };
    
  • 查看Lambda函数日志定位错误
    前往AWS控制台找到Amplify部署对应的Lambda函数,查看CloudWatch日志:

    1. 进入Lambda服务,筛选与你的NextJS API相关的函数(命名通常包含项目名或amplify-nextjs-api)
    2. 检查日志中是否有具体报错,比如ENOENT: no such file or directory(JSON文件未找到)
    3. 确认Lambda执行角色拥有基础文件系统访问权限(默认角色已包含,需避免被自定义策略限制)
  • 标准化请求参数编码
    直接拼接查询参数可能因特殊字符导致请求路径无效,改用URLSearchParams处理:

    const params = new URLSearchParams({ q: query });
    const response = await fetch(`/api/search?${params}`, {
      method: "GET",
      headers: {
        'Content-Type': 'application/json',
      },
    });
    const res = await response.json();
    
  • 验证CloudFront行为配置
    登录CloudFront控制台,找到Amplify关联的分发:

    • 确认/api/*路径的行为设置为转发所有请求到源站,而非缓存静态资源
    • 若启用了Lambda@Edge,检查其配置是否未拦截或错误修改API请求
  • 检查版本兼容性
    确认NextJS版本与Amplify服务兼容:

    • 升级Amplify CLI到最新版本:npm install -g @aws-amplify/cli
    • 若使用NextJS 13+的App Router模式,需确保Amplify已支持该模式的API路由部署(2023年中之后的Amplify版本已支持)

内容的提问来源于stack exchange,提问作者Nithur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 14:57:22