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

AppSync控制台操作正常,React前端调用createHobbit提示无权限

解决AWS Amplify前端调用createHobbit突变的授权错误

以下是针对你遇到的Not Authorized to access createHobbit on type Mutation错误的排查和修复步骤:

1. 确认前端用户已完成认证

你的模型用了@auth(rules: [{ allow: owner }]),这要求调用突变的请求必须携带已认证的用户身份:

  • 检查前端代码中是否在调用createHobbit前完成了用户登录,比如执行过Auth.signIn()且登录状态有效。
  • 可以通过以下代码验证当前登录状态:
    const user = await Auth.currentAuthenticatedUser();
    console.log('当前登录用户:', user);
    
    如果返回未登录,必须先完成用户登录再调用突变接口。

2. 验证Amplify配置正确性

  • 确认aws-exports.js文件已正确生成并引入到项目中,该文件包含AppSync和Auth的核心配置,通常在amplify push后自动生成。
  • 若前端使用的认证模式与AppSync默认配置不一致,需在API调用时显式指定:
    const createResponse = await API.graphql({
      query: createHobbit,
      variables: { input: hobbit },
      authMode: 'AMAZON_COGNITO_USER_POOLS' // 匹配你的AppSync授权模式
    });
    

3. 确认Schema变更已同步到云端

如果修改了schema的@auth规则后没执行amplify push,云端的AppSync API不会更新授权逻辑:

  • 执行amplify status检查本地变更是否未同步
  • 执行amplify push将最新schema推送到云端,确保生成的突变操作带正确的授权规则

4. 检查IAM角色权限(若使用IAM认证)

如果前端用IAM作为认证模式,需确保对应的IAM角色有createHobbit的执行权限:

  • 登录AWS控制台进入IAM服务,找到项目的前端Auth角色(通常命名为amplify-<项目名>-<环境>-authRole)
  • 检查附加策略,确认包含以下权限(替换占位符为你的实际信息):
    {
      "Effect": "Allow",
      "Action": ["appsync:GraphQL"],
      "Resource": [
        "arn:aws:appsync:<区域>:<账号ID>:apis/<API ID>/types/Mutation/fields/createHobbit"
      ]
    }
    

5. 核对AppSync控制台的授权配置

  • 进入AppSync控制台,查看API的设置→默认授权模式,确保与前端使用的模式一致
  • 查看Schema选项卡中自动生成的createHobbit突变,确认其授权规则包含owner的正确配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:01:14