首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用VTL超时的AWS网关API映射

使用VTL超时的AWS网关API映射
EN

Stack Overflow用户
提问于 2016-04-01 14:41:04
回答 3查看 789关注 0票数 2

我有一个AWS网关API,它定义了一个简单的GET。我用它来触发兰博达。使用请求映射,我使用查询参数并创建一个json对象来给Lambda。这是我的地图

代码语言:javascript
复制
#set ($myMap = $input.params().get("querystring"))

{
    #foreach($paramName in $myMap.keySet() )
    "$paramName" : "$util.escapeJavaScript($myMap.get($paramName))"
        #if($foreach.hasNext),#end
    #end
}

我对VTL和很陌生,似乎我犯了一个错误,这是因为这件事永远不会完成。我已经尝试了许多变体,但如果我曾经引用$myMap.get($key),它是不会完成的。我做错什么了?我喜欢理解。同样的产出建议也欢迎。

更新

如果我删除"{“和"}”,这将不再超时!现在我不知道这为什么重要,这不是我想要的格式,但有趣的小贴士来了解这一点。

更新2

用同样的问题简化了逻辑及其在上面的反映。我还发现,如果在打开另一个对象的json中放置一个属性,则逻辑可以工作。这太可怕了。

代码语言:javascript
复制
{

    "data": {
    #foreach($paramName in $myMap.keySet() )
    "$paramName" : "$util.escapeJavaScript($myMap.get($paramName))"
        #if($foreach.hasNext),#end
    #end
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-01 19:45:16

如前所述,网关api有10秒的限制。在我的例子中,所发生的事情是,当我得到正确的格式时,我的lambda就会执行,而不会抛出异常。这个逻辑花费的时间比10秒还要长。当测试REST时,使这种情况变得非常混乱的是AWS输出。在大多数情况下,您将得到一个包含三个部分“响应主体”、“标题”和“日志”的页面。您可以查看这个日志部分,看看您的VTL模板是如何完成的。您可以将输入、输出和调用与Lambda进行比较。很适合调试。

在超时的情况下,日志部分不会被填充。只是我在最初的问题中贴出的回应体。Lambda似乎也没有在CloudWatch中创建任何日志。这给人的印象是,API和请求映射的设置发生了错误,这是致命的,甚至连Lambda都没有调用。

另一个有趣的发现是,在我第一次直接测试lambda之后,它不再超时。从本质上说,“启动泵”之后,兰达的请求在一半时间内得到了回应。在质数之后,我可以很好地使用Gateway API。

票数 0
EN

Stack Overflow用户

发布于 2016-04-01 20:39:41

您在问题中提供的第一个映射模板(粘贴在下面)运行良好。

代码语言:javascript
复制
#set ($myMap = $input.params().get("querystring"))

{
    #foreach($paramName in $myMap.keySet() )
        "$paramName" : "$util.escapeJavaScript($myMap.get($paramName))"
        #if($foreach.hasNext),#end
    #end
}

如果你仍然看到那个映射的超时,我们可以进行更多的分析。您可以使用API网关论坛和发送私人消息与您的API和电话详细信息。

API控制台中的TestInvoke特性有10秒的时间限制。由于Lambda函数可能有一个冷启动,有时它可能需要更长的时间。因此,在实际调用中(在部署API之后),我们将触发Lambda冷启动的调用的时间限制增加到30秒。

票数 1
EN

Stack Overflow用户

发布于 2016-04-01 14:57:11

不幸的是,你一切都做对了。

到今天为止,有一个非常严格的限制,如果请求花费的时间超过10秒,它就会超时。

下面是您可以跟踪的官方AWS线程以进行更新:https://forums.aws.amazon.com/thread.jspa?threadID=205424

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36359199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档