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

使用AWS Amplify Gen 2调用HTTP API时遇InvalidApiName错误求助

排查Next.js服务端Amplify Gen2 POST请求InvalidApiName错误

以下是针对该错误的分步排查方案:

1. 严格匹配API名称与amplify_outputs.json配置

API名称是大小写敏感的,必须和amplify_outputs.json中自定义API的apiName字段完全一致,包括大小写、连字符、下划线等细节:

  • 示例:若amplify_outputs.json中为"apiName": "UserProfileApi",代码中调用时不能写成"userprofileapi"或"UserprofileApi"。
  • 核对amplify_outputs.json的自定义API结构,确认apiName字段存在且拼写无误。

2. 验证服务端Amplify初始化配置

在Next.js服务端函数/Server Actions中,必须将对应API的完整配置传入configureAmplify:

'use server';
import { configureAmplify } from '@/amplify/server';
import outputs from '@/amplify_outputs.json';
import { API } from 'aws-amplify';

export async function sendData(payload) {
  // 确保传入目标API的完整配置节点
  configureAmplify({ API: outputs.custom.UserProfileApi });
  try {
    // 第一个参数必须是amplify_outputs中定义的apiName
    const res = await API.post('UserProfileApi', '/submit', { body: payload });
    return res;
  } catch (err) {
    console.error(err);
    throw err;
  }
}
  • 禁止遗漏API配置传入,或误传其他API的配置节点。

3. 检查API.post()的参数格式

调用API.post()时,第一个参数必须是API名称,而非API端点URL或API ID:

  • 错误写法:await API.post('https://xxxx.execute-api.us-east-1.amazonaws.com', '/submit', { body: data })
  • 正确写法:await API.post('UserProfileApi', '/submit', { body: data })

4. 确认授权模式与服务端配置匹配

根据你的API授权类型,确保服务端配置包含对应参数:

  • API Key授权:检查amplify_outputs.json中的apiKey字段是否在初始化时传入,且未过期。
  • IAM授权:确认Next.js服务端运行的角色(如Vercel Serverless函数角色、ECS任务角色等)拥有调用该HTTP API的IAM权限(例如execute-api:Invoke)。
  • Cognito用户池授权:服务端调用时需确保传入有效的用户凭证(若需认证),或API允许未认证访问(若适用)。

5. 排查Server Actions的上下文问题

  • 确保在每个Server Action函数内部初始化Amplify,不要依赖全局初始化(避免跨请求的配置污染)。
  • 检查是否有环境变量覆盖了amplify_outputs的配置,比如在Vercel等平台设置的同名环境变量导致配置被替换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:32:42