gpt4 book ai didi

amazon-web-services - AppSync GraphQL 订阅组数据

转载 作者:行者123 更新时间:2023-12-04 14:23:45 25 4
gpt4 key购买 nike

我已经为我的 GraphQL 查询和变更实现了一个 AWS Lambda 授权层,这样用户只能读取/写入特定 DynamoDB 表项目的数据,前提是他们是该项目所属组的成员,使用groupId 分区键和 itemId 的排序键。这样该表可以有许多具有共同 groupId 的 itemId,也可以有许多不同的 groupId。这一切都按预期工作。

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

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

我观察了多种 AWS 授权技术,静态的和动态的。我见过参数化订阅和订阅解析器的示例,这些示例仅针对订阅一个项目,但我看不到任何适合我特定“多组”需求的东西。

我正在使用 AWS Amplify API 进行客户端 GraphQL 调用。我观察到 Apollo 有一个 subscribeToMore() 可能对这种情况有帮助,但我目前更愿意远离让我的 UI 适合 Apollo 2 的 Render Props 模式所需的返工。

有什么想法吗?

最佳答案

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

  1. 为您的订阅添加一个“groupId”参数。
  2. 将订阅解析器附加到您的订阅。
  3. 在订阅解析器的请求映射模板中,查询用户表以确定调用者被授权的组。
  4. 在订阅响应映射模板中,将订阅“groupId”参数与您从用户表查询中检索到的组列表进行交叉检查。如果调用者试图订阅他们未被授权的群组,则拒绝该请求。
  5. 确保您的变更返回 groupId 字段,以便 AppSync 的订阅可以正确路由您的消息。

然后您可以让一个客户多次订阅,每个他们想要通知的组订阅一次。

这是订阅授权文档,其中包含一个与您的示例类似的示例:https://docs.aws.amazon.com/appsync/latest/devguide/security-authorization-use-cases.html#real-time-data

关于amazon-web-services - AppSync GraphQL 订阅组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50263341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com