aws cdk appsync 架构创建状态失败,详细信息:保存架构时出现内部故障

55 *_*cri 4 typescript aws-lambda graphql aws-appsync aws-cdk

给定以下 graphql 模式

# graphql/schema.graphql
type AppUser {
  userId: String
  fullName: String
}

type Query {
  getUser(userId: String): AppUser
  getUsers(): [AppUser]
}

type Mutation {
  addUser(user: AppUser!): AppUser
}
Run Code Online (Sandbox Code Playgroud)

以及在 lib/mystack.ts 中定义的以下 cdk 代码:

# graphql/schema.graphql
type AppUser {
  userId: String
  fullName: String
}

type Query {
  getUser(userId: String): AppUser
  getUsers(): [AppUser]
}

type Mutation {
  addUser(user: AppUser!): AppUser
}
Run Code Online (Sandbox Code Playgroud)

我在AWS::AppSync::GraphQLSchema部署阶段收到以下错误消息:

GraphQLApi/架构 (GraphQLApiSchema5937B126) 架构创建状态失败,详细信息:保存架构时发生内部故障。

有没有人遇到过这个错误?我怀疑我的 graphql 模式有问题,但我不知道它是什么。另一个答案提到https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html上的 DynamoDB 保留字可能会导致冲突,即使您不使用 DynamoDB,所以我将User类型重命名为AppSync. 但是,它看起来Query也是一个保留字,但据我了解,这对于 graphql 定义也是必要的。请帮忙。AWS CDK 很难受。

55 *_*cri 14

问题是我的架构不正确。AppUser是一种类型,但我用作addUser突变的输入。您可以使用特殊input关键字定义查询和更改的输入。我最终复制AppUser为:

input AppUserInput {
  userId: String
  fullName: String
}
Run Code Online (Sandbox Code Playgroud)

这解决了问题。

  • 添加注释 - 使用控制台中的 AppSync 架构编辑器 - 我遇到了同样的错误 - 结果 AppSync 无法识别大多数验证器允许的三引号注释。 (5认同)
  • 谢谢,给了我很多帮助。该错误并不是真正的描述性错误。 (3认同)