在将 aws cdk 与 appsync 一起使用时,如何将突变添加到 graphql 架构并防止部署失败?

Posted

技术标签:

【中文标题】在将 aws cdk 与 appsync 一起使用时,如何将突变添加到 graphql 架构并防止部署失败?【英文标题】:While using aws cdk with appsync, how to add mutation to graphql schema and prevent deployment from failing? 【发布时间】:2020-08-17 01:49:15 【问题描述】:

当我的架构看起来像这样时,aws cdk 部署良好(注意突变已被注释掉):

schema 
  query: Query
  # mutation: Mutation


type AppUser 
  userId: String
  fullName: String


type Query 
  getUser(id: ID!): AppUser
  getUsers: [AppUser]


# type Mutation 
#   addUser(id: ID!, newUser: AppUser!): AppUser!
# 

但是当我取消注释 Mutation 部分时:

schema 
  query: Query
  mutation: Mutation


type AppUser 
  userId: String
  fullName: String


type Query 
  getUser(id: ID!): AppUser
  getUsers: [AppUser]


type Mutation 
  addUser(newUser: AppUser!): AppUser!

cdk 在AWS::AppSync::GraphQLSchema 处失败,并显示以下消息: 架构创建状态失败,详细信息:保存架构时发生内部故障。帮助?

【问题讨论】:

【参考方案1】:

来自 aws cdk 的错误消息非常含糊。问题出在我的 graphql 架构上。 AppUser 类型不能用作 addUser 突变的输入类型。我的解决方案是创建一个与AppUser 具有相同数据结构的新类型,并以input 而不是type 开头。新架构如下所示:

schema 
  query: Query
  mutation: Mutation


type AppUser 
  userId: String
  fullName: String


input NewUser 
  userId: String
  fullName: String


type Query 
  getUser(id: ID!): AppUser
  getUsers: [AppUser]


type Mutation 
  addUser(newUser: NewUser!): AppUser!

【讨论】:

以上是关于在将 aws cdk 与 appsync 一起使用时,如何将突变添加到 graphql 架构并防止部署失败?的主要内容,如果未能解决你的问题,请参考以下文章

AWS-CDK Appsync Codefirst 输入类型

与现有代码管道一起使用的 AWS CDK 管道

aws cdk appsync Schema Creation Status is FAILED with details: 保存架构时发生内部故障

验证 Apollo 客户端以使 AppSync 与 @aws_subscribe 一起使用

Aurora PostgreSQL 可以与 AWS AppSync 一起使用吗?

如何使用 AWS appsync (GraphQL) 禁用自省查询?