【问题标题】:Error when initiating a subscription in AWS AppSync console在 AWS AppSync 控制台中启动订阅时出错
【发布时间】:2021-11-05 12:56:28
【问题描述】:

在测试 AppSync 文档中的实时订阅示例时,我遇到了由 AWS UI 控制台中的订阅请求产生的错误。带有看起来像 AppSync 自己的缩小代码的引用 CDN。启用“日志”复选框没有任何区别:

error@https://d2i3s4ccv6vp01.cloudfront.net/<long hash>/main.js:135:942826
d@https://d2i3s4ccv6vp01.cloudfront.net/<long hash>/main.js:203:1070719
m@https://d2i3s4ccv6vp01.cloudfront.net/<long hash>/main.js:203:1071063
value@https://d2i3s4ccv6vp01.cloudfront.net/<long hash>/main.js:203:1072146
N</n.prototype._handleIncomingSubscriptionMessage@https://d2i3s4ccv6vp01.cloudfront.net/<long hash>/main.js:135:741694

我的架构(简化,希望这是一个最小的工作示例):

type Post {
    id: ID!
    content: String
}

type Mutation {
  addPost(id: ID!, content: String): Post!
}

type Subscription {
  newPost: Post!
  @aws_subscribe(mutations: ["addPost"])
}

schema {
    mutation: Mutation
    subscription: Subscription
}

我通过打开两个 AWS 控制台窗口来测试订阅,其中包含 AppSync 查询编辑器。第一个选项卡将启动订阅并等待数据:

subscription MySubscription {
  newPost {
    content
    id
  }
}

在第二个选项卡中,我会触发一个突变,并观察显示在第一个选项卡日志中的数据:

mutation MyMutation {
  addPost(id: "id1", content: "cont1") {
    content
    id
  }
}

请注意,架构中没有明确的身份验证指令,但我在应用程序中使用 Cognito 用户池,因此在运行订阅和变异查询之前,我必须使用该方法登录两个选项卡。

【问题讨论】:

    标签: aws-appsync


    【解决方案1】:

    看来这个错误的罪魁祸首是使用所需响应类型的订阅定义:

    type Subscription {
      newPost: Post!
      @aws_subscribe(mutations: ["addPost"])
    }
    

    删除上面的! 可以解决问题。

    AppSync 的“Real-Time Data”文档页面忽略的另一件事是,在测试这些示例时,您必须为突变创建数据源和解析器。数据源应该是"None" type,并使用简单的“直通”VTL 模板进行请求和响应映射(请求:{"version": "2018-05-29","payload": $util.toJson($context.arguments)},响应:$util.toJson($context.result)),但它需要存在(请参阅57610072) .

    【讨论】:

      猜你喜欢
      • 2019-03-05
      • 2019-05-23
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      • 2019-09-16
      • 2019-06-15
      • 2019-12-27
      相关资源
      最近更新 更多