【问题标题】:Using multiple authorization types with AWS AppSync GraphQL APIs通过 AWS AppSync GraphQL API 使用多种授权类型
【发布时间】: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

我希望 createBlogupdateBlogdeleteBlog 具有授权类型 @aws_iam。 我希望getBloglistBlogs 拥有我的默认授权类型@aws_cognito_user_pools

如何在我的schema.graphql 中定义它? 我无法直接在突变/查询上设置授权类型,因为它们没有在我的schema.graphql 文件中定义。

我可以直接在云中生成的完整模式 (AWS AppSync > API Name > Schema) 中设置身份验证类型,因为这里所有查询/突变都已定义。但是每次我运行amplify push 时都会重写此架构。

一定有更好的办法吗?

【问题讨论】:

    标签: amazon-web-services graphql aws-amplify aws-appsync


    【解决方案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"])
    }
    
    

    【讨论】:

      猜你喜欢
      • 2018-12-13
      • 1970-01-01
      • 2021-09-23
      • 2018-07-04
      • 2022-01-24
      • 1970-01-01
      • 2020-11-12
      • 2017-04-13
      • 2020-08-20
      相关资源
      最近更新 更多