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

AWS Amplify AppSync IAM 401错误求助:GraphQL请求失败

解决GraphQLError: Request failed with status code 401(AWS Amplify + AppSync)

遇到401错误基本都是权限配置不匹配导致的,结合你的操作流程和代码,咱们一步步排查:

1. 先确认IAM角色的API访问权限

Amplify CLI自动配置时会生成两个关键IAM角色:

  • 用于API操作的amplify-<你的项目名>-<环境名>-<数字>-apiRole
  • Cognito身份池对应的未认证角色和认证角色

你需要在IAM控制台检查这些角色是否附加了允许访问AppSync API的策略:

  • 策略里需要包含appsync:GraphQL动作,资源指向你的AppSync API的ARN(格式类似arn:aws:appsync:<区域>:<账号ID>:apis/<API ID>/*)
  • 如果是给未认证用户访问,要确保身份池的未认证角色有这个权限

2. 检查GraphQL Schema的权限规则

默认情况下,Amplify的@model类型不会开放公共访问权限。你需要在schema.graphql里给Keyword类型添加@auth指令,明确允许访问的主体:

type Keyword @model @auth(rules: [{ allow: public }]) {
  id: ID!
  name: String!
}

如果只允许认证用户访问,就改成{ allow: private },然后重新部署API(amplify push)。

3. 验证AppSync解析器是否正常

虽然401不是解析器缺失的典型错误,但还是要确认:

  • 登录AppSync控制台,找到你的API,进入解析器页面
  • 检查Query类型下的listKeyword解析器是否存在,并且数据源关联的是对应的DynamoDB表
  • 如果解析器缺失,重新执行amplify push让Amplify自动生成

4. 确认前端配置的正确性

检查aws-exports.js里的关键配置:

  • aws_appsync_authenticationType:如果是IAM,Amplify会自动从Cognito身份池获取临时凭证,确保身份池配置正常
  • aws_appsync_graphqlEndpoint和aws_appsync_region是否和你的AppSync API一致

快速测试方法

直接在AppSync控制台的查询页面,选择IAM认证方式,执行你的ListKeywords查询:

  • 如果控制台也返回401:说明后端权限配置有问题,回到步骤1和2排查
  • 如果控制台能成功返回数据:说明前端获取凭证的流程有问题,检查Amplify初始化是否正确,或者是否有Cognito身份池的配置遗漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:12:34