结合使用多种授权类型和AWS AppSync GraphQL API

问题描述

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

我希望createBlogupdateBlogdeleteBlog具有授权类型@aws_iam。 我希望getBloglistBlogs拥有默认的授权类型@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"])
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...