AppSync 始终以 "Failed to Fetch" 响应并且日志不显示任何内容

AppSync always responds with "Failed to Fetch" and logs don't show anything

我有一个连接到 DynamoDB table 的 AppSync API 并且两者都是使用 CF 模板部署的,但是当我向特定解析器发出请求时,它总是挂起然后失败 "Failed to fetch"。我已经使用 IAM Policy Simulator 验证连接到 API 的角色足以 运行 requestMappingTemplate:

中指定的扫描
{
   "version": "2017-02-28",
   "operation": "Scan",
   "limit": 500
}

我还在控制台中使用虚拟数据验证了以下 responseMappingTemplate 是否有效:

#set($uniqueStates = [])
    #foreach($item in $ctx.result.items)
        #set($found = false)
        #foreach($state in $uniqueStates)
            #if(!$found && $item.state == $state.name)
                #set($found = true)
                $util.qr($state.institutions.add({"name": "$item.name", "id": "$item.id"}))
            #end
        #end
        #if(!$found)
         $util.qr($uniqueStates.add({"name":"$item.state","institutions":[{"name": "$item.name", "id": "$item.id"}]}))
        #end
    #end
{
  "states": $util.toJson($uniqueStates)
}

我还按照说明设置了一个日志记录角色并将其附加到 API。它将成功地为可通过 cloudwatch 访问的内省查询创建日志,并将日志级别设置为 ERROR。

当我为我的 API 转到 AppSync 控制台时,所有设置都按预期显示,但是当我从控制台(或其他任何地方),它挂起并响应 "Failed to fetch"。日志部分也没有显示任何内容。我正在撕扯我的头发试图找出原因。提前感谢您的帮助!

您为 API 启用了哪些身份验证设置?另外,您的响应映​​射模板中是否有一行在评估模板后输出有效负载?像 $util.toJson($uniqueStates)?

原来我的问题是我从响应映射模板返回的数据与架构不匹配,所以它静默失败并导致超时错误。很容易修复,但很难诊断。我经历的调试过程是创建一个新的 AppSync API 专门用于一个示例端点,并逐步使其与我对失败的端点所做的一切相同。

我遇到了类似的问题,Amazon 支持帮助我解决了这个问题。我在这里添加它是为了帮助其他有类似“获取失败”响应的人。

事实证明,我在 lambda 数据源使用的角色中缺少必需的信任策略。将以下信任策略添加到角色后,我的问题就消失了。

{ "效果": "允许", “主要的”: { “服务”:“appsync.amazonaws.com” }, “行动”:“sts:AssumeRole” }