问题描述
This blog post显示了如何在graphql转换中为模型和字段设置多种授权类型。
让我说我有一个@model Blog
type Blog @model {
id: ID!
adminUserId: String
name: String!
posts: [Post] @connection(keyName: "byBlog",fields: ["id"])
}
使用这种切屑将自动生成以下突变/查询;
createBlog
updateBlog
deleteBlog
getBlog
listBlogs
我希望createBlog
,updateBlog
和deleteBlog
具有授权类型@aws_iam
。
我希望getBlog
和listBlogs
拥有默认的授权类型@aws_cognito_user_pools
如何在schema.graphql
中定义它?
我无法直接在schema.graphql
文件中未定义突变/查询上设置授权类型。
我能够直接在云(AWS AppSync > API Name > Schema
)中生成的完整模式中设置auth类型,因为这里所有的查询/突变都已定义。但是,每次我运行amplify push
时,都会重写此架构。
必须有更好的方法吗?
解决方法
仅供参考,我已经解决了。答案是auth指令。
此架构将允许cognito(我的默认身份验证)为只读内容,iam可以执行所有操作。这正是我想要的。
type Blog @auth(rules: [{ allow: private,provider: iam,operations: [read,create,update,delete] },{ allow: private,operations: [read] }]) @model {
id: ID!
adminUserId: String
name: String!
posts: [Post] @connection(keyName: "byBlog",fields: ["id"])
}