AppSync始终以“无法提取”进行响应,并且日志不显示任何内容

时间:2018-07-23 10:45:50

标签: amazon-web-services aws-appsync

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我遇到了类似的问题,亚马逊的支持帮助我解决了这个问题。我将其添加到此处以帮助其他具有类似“无法获取”响应的人。

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

{ “效果”:“允许”, “校长”:{ “服务”:“ appsync.amazonaws.com” }, “动作”:“ sts:AssumeRole” }