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

双独立App共享DynamoDB实现AWS AppSync聊天订阅可行性咨询

跨应用聊天订阅实现方案(双Cognito+双AppSync+共享DynamoDB场景)

完全可行,核心是依托共享DynamoDB作为消息数据的统一存储层,让两个AppSync API能共同操作并订阅该库的变更。以下是具体实现建议:

1. 统一DynamoDB消息表设计

  • 设计包含发送方完整身份标识(用户池ID+用户ID,比如senderFullId: "userPoolA|user123")、接收方完整身份标识、消息内容、发送时间的消息表,用复合主键(如recipientFullId作为分区键,timestamp作为排序键)优化查询效率。
  • 给两个AppSync的服务角色配置该表的读写及流订阅权限,确保API能正常操作数据。

2. 配置双AppSync的订阅触发器

  • 分别为两个AppSync API创建相同的订阅字段,比如onNewMessage(recipientFullId: ID!),触发器选择DynamoDB流并关联共享消息表。
  • 设置精准的过滤规则:仅推送匹配recipientFullId的消息,避免无效推送,可在AppSync订阅解析器中配置过滤条件。

3. 跨用户池身份处理

  • 在AppSync的突变解析器(如sendMessage)中,通过$context.identity.userPoolId和$context.identity.sub拼接出当前用户的完整身份标识,写入消息表的senderFullId和recipientFullId字段,避免不同用户池的用户ID重复导致身份混淆。

4. 消息收发逻辑落地

  • 发送消息:客户端/管理端调用各自AppSync API的sendMessage突变,将消息写入共享DynamoDB表,同时携带自身的完整身份标识。
  • 接收订阅:两个App的客户端分别订阅各自AppSync API的onNewMessage,传入自己的完整身份标识作为接收方参数,当DynamoDB表有匹配的新消息时,AppSync会通过WebSocket推送给订阅用户。

5. 权限控制强化

  • 在AppSync字段级别配置权限规则:限制用户仅能订阅以自己完整身份标识为接收方的消息,同时禁止用户读取不属于自己的消息,通过DynamoDB查询条件+AppSync权限规则双重校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:01:09