我有一個定義簡單GET的AWS網關API。我用它來觸發一個Lambda。使用請求映射我接受查詢參數並創建一個json對象來給予Lambda。這裏是我的映射使用VTL超時的AWS網關API映射
#set ($myMap = $input.params().get("querystring"))
{
#foreach($paramName in $myMap.keySet())
"$paramName" : "$util.escapeJavaScript($myMap.get($paramName))"
#if($foreach.hasNext),#end
#end
}
我新的VTL和亞馬遜網關API,它看來我犯了一個錯誤是導致這種情況永遠不會完成。我嘗試了很多變化,但如果我曾經引用$myMap.get($key)
它不會完成。我究竟做錯了什麼?我喜歡理解。對於同樣產出的建議也值得歡迎。
UPDATE
如果我刪除「{」和「}」,則不再超時!現在我不知道爲什麼那麼重要,它不是我想要的格式,而是有趣的小技巧,可以深入到底。
更新2
簡化了邏輯和它的上面所反映的相同的問題。我還發現,如果在json中放置一個屬性來打開另一個對象,則該邏輯起作用。這很糟糕。
{
"data": {
#foreach($paramName in $myMap.keySet())
"$paramName" : "$util.escapeJavaScript($myMap.get($paramName))"
#if($foreach.hasNext),#end
#end
}
}
感謝您的回覆Vor!我知道執行時間會有限制。這完全有道理!沒有意義的是爲什麼這會導致它運行超過10秒鐘。這會在沒有嘗試添加引號的情況下運行。我認爲這裏有一個開發人員問題,那就是我,不瞭解VTL語法的某些部分,或者VTL/AWXS問題不能處理這種情況。但我對這個問題感到困惑。 – Nexeh