【发布时间】:2020-04-19 15:14:08
【问题描述】:
我使用 Cognito 用户池作为默认身份验证方法。我还将 iam 用于我的 lambda 后端。我在 lambda 函数中为一些自定义解析器使用 aws appsync 客户端。
假设我有一个基本如下所示的 User 对象类型:
type User {
id: ID!
displayName: String!
}
我想做什么:
- 允许对象所有者的完全读/写访问权限。
- 允许 lambda 函数(带有 iam)完全读/写访问权限。
- 允许通过 cognito 用户池进行身份验证但不是对象所有者的用户进行只读访问。
我一直在使用@auth 指令进行挑选和刺激,试图获得我正在寻找的结果,但没有任何效果。我查看了AWS GraphQL Transform Docs 的文档,似乎有点困惑。
这是我尝试过的:
type User
@model
@auth(rules: [
{ allow: owner, operations: [create, update, delete] }
{ allow: private, provider: iam, operations: [update, delete] }
]) {
id: ID!
displayName: String!
}
据我了解,通过从 @auth 指令中的操作列表中删除读取,可以删除对 get 和 list 查询的检查。我究竟做错了什么?我如何达到我想要的结果?
编辑:澄清一下,我已经启用了多种授权类型。 (默认情况下 cognito 用户池和 lambda 解析器的 iam)。我的问题是:如何使用 @auth 指令来获得预期的结果?
【问题讨论】: