首页 > 解决方案 > AppSync 始终以“获取失败”作为响应,并且日志不显示任何内容

问题描述

我有一个连接到 DynamoDB 表的 AppSync API,并且两者都使用 CF 模板进行部署,但是当我向特定解析器发出请求时,它总是挂起,然后因“无法获取”而失败。我已经使用 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 控制台时,所有设置都按原样显示,但是当我从控制台(或其他任何地方)执行有效查询(由查询构建控制台中的便捷工具验证)时,它挂起并响应“获取失败”。日志部分也没有显示任何内容。我正在撕扯我的头发试图找出原因。提前感谢您的帮助!

标签: amazon-web-servicesaws-appsync

解决方案


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


推荐阅读