You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过一个AppSync向另一个AppSync发送AWSJSON类型的JSON数据?

解决AppSync跨端点调用中AWSJSON字段的解析问题

问题核心

从一个AppSync向另一个AppSync的GraphQL端点发起请求时,data字段(类型为AWSJSON)的序列化与转义处理错误,导致查询解析失败或类型不匹配。

正确解决方案

修正后的VTL请求映射模板

{
  "version": "2018-05-29",
  "method": "POST",
  "resourcePath": "/graphql",
  "params": {
    "body": {
      "query": "mutation MyMutation { createcase(input: {caseid: \"$ctx.args.input.caseid\", subjectid: \"$ctx.args.input.subjectid\", data: \"$util.escapeJavaScript($util.toJson($ctx.args.input.data))\"}) { caseid subjectid data } }"
    },
    "headers": {
      "Authorization": "$ctx.request.headers.Authorization",
      "Content-Type": "application/json"
    }
  }
}

关键修正点

  1. 修正GraphQL字段名:
    原模板错误使用输入类型名CreatecaseInput作为mutation字段,实际schema定义的mutation字段是createcase,这是导致查询解析失败的核心原因之一。

  2. 正确处理AWSJSON序列化:

    • $util.toJson($ctx.args.input.data):将AppSync自动解析后的data对象转回JSON字符串
    • $util.escapeJavaScript():转义字符串中的双引号,避免破坏外层JSON结构,确保生成的GraphQL查询字符串合法
  3. 符合GraphQL语法规范:
    移除了参数名input周围的单引号,GraphQL参数名不需要引号包裹。

错误原因分析

  1. 字段名错误:所有尝试的模板均误用输入类型名作为mutation字段,直接触发MalformedHttpRequestException。
  2. 引号转义失效:未对嵌套JSON字符串的双引号做转义处理,导致外层JSON结构被破坏(如格式2、4、5的语法错误)。
  3. 类型不匹配:直接传入对象或未转义的字符串,不符合AWSJSON类型需要传入转义后JSON字符串的要求(如格式1、3的类型验证错误)。

内容的提问来源于stack exchange,提问作者user20942942

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 07:40:30