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

Amplify API订阅授权失败问题求助

问题解决指南:Cognito授权下的AppSync订阅未授权错误

Cognito用户池完全支持AppSync订阅,你的错误是典型的权限配置缺失或代码细节问题,以下是具体排查和解决步骤:

1. 检查GraphQL Schema的订阅权限规则

确保你的Project类型对应的订阅操作配置了正确的@auth规则,且明确包含subscribe操作。例如:

type Project @model @auth(rules: [
  // 根据业务需求选择合适的规则,比如允许认证用户订阅
  { allow: private, operations: [read, update, subscribe] },
  // 或者仅允许资源所有者订阅
  { allow: owner, operations: [read, update, subscribe] }
]) {
  id: ID!
  name: String!
  // 其他字段定义
}

注意:如果@auth规则的operations数组里没有显式添加subscribe,即使读/写权限正常,订阅也会被拒绝。

2. 重新部署Amplify API

修改Schema后,必须重新推送配置到云端:

amplify push api

部署完成后,确认AppSync控制台的权限规则已同步更新。

3. 核对代码中的订阅操作

你提到需求是"新增条目时触发",但代码里用了onUpdateProject(更新触发),应该替换为onCreateProject(新增触发),避免因操作类型不匹配导致的权限问题:

const subscription = API.graphql({
  query: subscriptions.onCreateProject,
  authMode: "AMAZON_COGNITO_USER_POOLS"
}).subscribe({
  next: ({ provider, value }) => console.log({ provider, value }),
  error: error => console.warn(error)
});

4. 验证AppSync控制台配置

登录AWS控制台进入AppSync服务,检查以下内容:

  • Schema标签:确认Project类型的@auth规则包含subscribe操作;
  • Settings标签:确认Authorization modes已启用Amazon Cognito user pool,且关联的是你的目标用户池;
  • Subscriptions标签:查看对应订阅字段(如onCreateProject)的权限是否正确绑定了Cognito授权。

5. 确认用户权限有效性

确保当前登录的Cognito用户满足@auth规则的要求:

  • 如果是owner规则,用户必须是该Project的创建者;
  • 如果是private规则,用户必须已通过Cognito认证(你的代码已指定authMode,这部分通常没问题,但可通过Auth.currentAuthenticatedUser()验证用户登录状态)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 11:15:37