AWS Amplify普通用户访问listXbiis权限错误排查与解决
问题原因与修复方案
错误原因
- Amplify权限配置残留:仅注释Xbiis类型后执行
amplify push,Amplify不会彻底清理后端关联的Resolver、IAM角色策略或AppSync资源规则。之前配置的"仅WebAppAdmin组操作+公共只读"权限可能仍在生效,拦截了普通用户的请求。 - Resolver未正确更新:重新启用Xbiis并配置private权限时,Amplify可能没有完全覆盖旧的Resolver逻辑,导致查询时仍沿用旧的权限校验规则。
- 权限规则冲突:旧的分组权限、公共访问策略与新的private权限存在冲突,AppSync优先执行了残留的旧规则,拒绝了普通用户的访问请求。
修复步骤
彻底清理后重新部署
- 直接删除
schema.graphql中Xbiis类型的所有定义(不要只注释),执行amplify push,确认后端完全移除该类型的所有关联资源。 - 重新添加Xbiis类型并配置正确的@auth规则:
type Xbiis @model @auth(rules: [{ allow: private }]) { id: ID! # 你的其他字段定义 } - 再次执行
amplify push,让Amplify重新生成所有Resolver和权限配置。
- 直接删除
手动校验AppSync配置
- 登录AWS控制台,进入目标AppSync API。
- 查看
Queries下的listXbiisResolver,确认其权限逻辑是验证用户已登录(而非仅允许WebAppAdmin组)。 - 进入
Settings->Authorization,检查并删除残留的公共访问或分组限制的资源策略。
检查IAM角色权限
- 打开IAM控制台,找到项目对应的Auth角色(命名格式通常为
amplify-<项目名>-<环境>-authRole)。 - 查看该角色的权限策略,确保包含允许已认证用户操作Xbiis的语句,同时移除旧的仅WebAppAdmin组的权限限制。
- 打开IAM控制台,找到项目对应的Auth角色(命名格式通常为
清除客户端缓存
- 清除Web应用的本地存储(LocalStorage/SessionStorage),避免客户端缓存旧的API schema或权限信息。
- 重启应用并使用普通用户重新登录,测试
listXbiis查询是否正常。
内容的提问来源于stack exchange,提问作者Raystorm
相关产品推荐
相关产品推荐

