无法将大型 graphql 模式上传到 aws appsync

Posted

技术标签:

【中文标题】无法将大型 graphql 模式上传到 aws appsync【英文标题】:Unable to upload large graphql schema to aws appsync 【发布时间】:2018-08-25 10:51:47 【问题描述】:

我正在尝试将我的 graphql 架构上传到 aws appsync。我的 graphql 架构将近 5000 行。我尝试使用 cli 和 gui 上传。

(1.) 使用 cli 时,我不断收到错误消息“无法解析架构文档 - 确保它是有效的 SDL 格式文档。”

(2.) 使用 gui 时,我的 graphql 架构中所有联合中的管道(例如 union UnionType = Type1 | Type2 | Type3 )被替换为空格,导致语法错误。通过手动替换空格解决此问题后,选项卡变得无响应,需要被终止。

我尝试从 cli 上传一个带有 union 的小型 graphql 架构,并且成功。但是,从 gui 来看,它导致了在联合中用空格替换管道的相同错误。

我需要使用 aws cli 和 aws 控制台来帮助理解这种行为。

【问题讨论】:

你的架构有多大? 就文件大小而言,134KB。就行数而言,5600行以上。 至于第 1 点,这是服务无法解析的模式的“全部捕获”消息。你能分享一个请求ID、相对时间戳和你调用的区域吗?我可以进一步调查。 这里有同样的问题。有什么解决办法吗? 我们最终使用了github.com/sid88in/serverless-appsync-plugin,因为它为我们提供了在 serverless.yaml 文件中添加 graphql 解析器和所有内容的灵活性。这简化了我们的构建过程,因为无论如何我们都在使用无服务器 【参考方案1】:

事实证明,在我们的例子中,问题在于存在定义在 out 模式 (DynamoDB reserved words) 中的保留键,即使我们根本没有使用 Dynamo。

【讨论】:

查询算不算?我在保留列表中看到单词 QUERY,但文档使用类型 Query docs.aws.amazon.com/cdk/api/latest/docs/aws-appsync-readme.html【参考方案2】:

我遇到了类似的问题,AppSync 不允许只使用一个 # 符号将任何 cmets 放入其中。

确保没有只有一个 # 的 cmets 并使用双尖 ## 无论如何,它碰巧有一些 AppSync 尚不支持的无效格式或语法。

【讨论】:

以上是关于无法将大型 graphql 模式上传到 aws appsync的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 GraphQL 和 Apollo 将文件上传到 Strapi

如何处理 AWS 中的大型 WAR 文件?

在iOS Swift中不使用AWS SDK在Amazon S3存储桶中上传的背景图像(背景模式)

无法使用模式 r 打开:fopen():AWS Elastic Beanstalk

aws amplify appsync 中的 Graphql 突变错误

从 iOS 客户端上传文件到 GraphQL