Amazon web services 对组数据的AppSync GraphQL订阅

Amazon web services 对组数据的AppSync GraphQL订阅,amazon-web-services,graphql,aws-appsync,Amazon Web Services,Graphql,Aws Appsync,我已经为我的GraphQL查询和突变实现了AWS Lambda授权层,这样,当用户是特定DynamoDB表项所属组的成员时,用户只能向该表项读/写数据,这是使用groupId分区键和itemId的排序键实现的。因此,该表可以有许多具有公共groupId的ItemId,也可以有许多不同的groupId。这一切都按预期进行 现在,我希望能够将此组授权扩展到我的实时GraphQL订阅。我观察到未经参数化的订阅向所有用户广播。我需要一个约束订阅事件的解决方案,以便所有组成员和仅组成员接收包含相应grou

我已经为我的GraphQL查询和突变实现了AWS Lambda授权层,这样,当用户是特定DynamoDB表项所属组的成员时,用户只能向该表项读/写数据,这是使用groupId分区键和itemId的排序键实现的。因此,该表可以有许多具有公共groupId的ItemId,也可以有许多不同的groupId。这一切都按预期进行

现在,我希望能够将此组授权扩展到我的实时GraphQL订阅。我观察到未经参数化的订阅向所有用户广播。我需要一个约束订阅事件的解决方案,以便所有组成员和仅组成员接收包含相应groupID键的表数据上的突变的订阅事件。作为许多组的成员的用户将收到其所属的所有组的订阅事件

组和组成员是动态的,通过应用程序业务逻辑创建组和添加成员

我观察了大量的AWS授权技术,静态和动态。我见过一些参数化订阅和订阅解析程序的示例,它们的目标是只订阅一个项目,但我看不到任何适合我特定“多组”需求的内容

我正在使用AWS Amplify API进行客户端GraphQL调用。我观察到Apollo有一个subscribeToMore(),它可能对这个场景很有帮助,但我现在更愿意避免返工,以使我的UI适合Apollo 2的渲染道具模式


有什么想法吗?

您可以执行以下操作,以使用AppSync启用此用例

  • 向订阅添加“groupId”参数
  • 将订阅解析程序附加到订阅
  • 在订阅冲突解决程序的请求映射模板中,查询用户表以确定调用者有权访问哪些组
  • 在订阅响应映射模板中,将订阅“groupId”参数与从用户表查询中检索到的组列表进行交叉检查。如果调用者试图订阅未授权的组,则拒绝请求
  • 确保您的变体返回groupId字段,以便AppSync的订阅可以正确路由您的邮件
  • 然后,您可以让客户机多次订阅,对于他们想要通知的每个组订阅一次

    以下是订阅授权文档,其中包含一个与您类似的示例: