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

如何在AWS AppSync中创建自定义订阅

AWS AppSync 新增自定义订阅操作步骤

1. 更新GraphQL Schema定义

首先在你的AppSync Schema中添加自定义订阅字段,通过@aws_subscribe指令关联触发该订阅的Mutation:

# 自定义订阅定义示例:监听指定群组的新消息
type Subscription {
  onNewGroupMessage(groupId: ID!): Message
  @aws_subscribe(mutations: ["sendGroupMessage"]) # 数组内填入触发订阅的Mutation名称,支持填多个
}

# 需提前定义好对应触发用的Mutation(已存在则无需重复添加)
type Mutation {
  sendGroupMessage(groupId: ID!, content: String!, senderId: ID!): Message
}

# 关联的消息类型示例
type Message {
  id: ID!
  groupId: ID!
  content: String!
  senderId: ID!
  timestamp: AWSDateTime!
}

如果需要服务端自动过滤推送数据,可额外添加@aws_filter指令实现细粒度控制,比如仅给接收人推送私信:

type Subscription {
  onNewDirectMessage: Message
  @aws_subscribe(mutations: ["sendDirectMessage"])
  @aws_filter(filters: { field: "receiverId", operator: "eq", value: "$context.identity.sub" })
}

2. 校验Mutation配置

无需为订阅单独配置Resolver,AppSync会自动处理订阅的分发逻辑,仅需要确保你关联的Mutation已经配置了正常可用的Resolver(数据源可以是DynamoDB、Lambda等),且Mutation执行后返回的字段结构和订阅要求的字段完全匹配,否则订阅不会触发推送。

3. 配置订阅授权规则

根据你使用的授权模式给订阅字段添加对应的权限控制:

  • 若使用Cognito用户池授权,添加@aws_cognito_user_pools指令限制仅登录用户可订阅
  • 若使用IAM授权,添加@aws_iam指令
  • 若使用API Key授权,添加@aws_api_key指令

示例:

type Subscription {
  onNewGroupMessage(groupId: ID!): Message
  @aws_subscribe(mutations: ["sendGroupMessage"])
  @aws_cognito_user_pools
}

4. 部署&测试

  • 保存修改后的Schema,AppSync会自动部署更新
  • 可通过AppSync控制台的「查询」页面测试:先开启订阅监听,再在另一个窗口执行对应Mutation,确认是否能正常收到推送
  • 客户端调用示例(基于AWS Amplify JS):
import { API, graphqlOperation } from 'aws-amplify';

// 开启订阅
const subscription = API.graphql(
  graphqlOperation(`
    subscription OnNewGroupMessage($groupId: ID!) {
      onNewGroupMessage(groupId: $groupId) {
        id
        content
        senderId
        timestamp
      }
    }
  `, { groupId: '目标群组ID' })
).subscribe({
  next: (event) => console.log('收到新消息:', event.value.data.onNewGroupMessage),
  error: (err) => console.error('订阅出错:', err)
});

// 取消订阅调用:subscription.unsubscribe()

注意:订阅的推送Payload是Mutation返回的完整结果,可在客户端订阅的查询语句中指定需要返回的字段减少传输数据量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:15:05