通过 AWS AppSync GraphQL API 使用多种授权类型
Posted
技术标签:
【中文标题】通过 AWS AppSync GraphQL API 使用多种授权类型【英文标题】:Using multiple authorization types with AWS AppSync GraphQL APIs 【发布时间】:2020-12-11 10:09:37 【问题描述】:This blog post 展示了如何在 graphql 转换中为模型和字段设置多种授权类型。
假设我有一个@model Blog
type Blog @model
id: ID!
adminUserId: String
name: String!
posts: [Post] @connection(keyName: "byBlog", fields: ["id"])
使用此 shcema 将自动生成以下突变/查询;
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
) 中设置身份验证类型,因为这里所有查询/突变都已定义。但是每次我运行amplify push
时都会重写此架构。
一定有更好的办法吗?
【问题讨论】:
【参考方案1】:仅供参考,我解决了。答案是 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"])
【讨论】:
以上是关于通过 AWS AppSync GraphQL API 使用多种授权类型的主要内容,如果未能解决你的问题,请参考以下文章
通过 AWS AppSync 中的突变更新 GraphQL 数据时出错
如何通过 AWS AppSync 客户端将保存字符串的变量传递给 GraphQL 查询?
我们可以在不使用 GraphQL 的情况下在项目中实施 AWS-Appsync 吗?
如何从命令行向 AWS AppSync 发送 GraphQL 查询?