1

我试图将AWS API GatewayAWS Lambda集成,因为我试图通过GET方法执行lambda函数,并且总是我的函数返回的是无效参数,所以我非常困惑。如何通过GET方法将API网关与Lambda集成

{“errorMessage”:“Error - Invalid Group ID - undefined - alexa id: undefined”} |

发生这种情况是因为参数未到达函数,并且idgrupo变量是<=0

我想在这个表格URL执行lambda函数:

domain.execute-api.us-east-1.amazonaws.com/prod/chkneopairtoken?idgrupo=3823&clientId={321356-6666-4745}&keypair=90809276 

在我的lambda函数我做它:

var idgrupo = event.idgrupo; 
var alexaClientId = event.clientId; 
var keypair = event.keypair; 

if (idgrupo > 0){ 

} else{ 
     console.log("Error - Invalid Group ID - " + idgrupo + " - alexa id: " + alexaClientId + " - "); 
     //callback(null, "Error - Invalid Group ID - " + idgrupo + " - alexa id: " + alexaClientId); 
     context.fail("Error - Invalid Group ID - " + idgrupo + " - alexa id: " + alexaClientId); 
    } 

是否有可能做我在做什么? 我认为它不是API网关和AWS Lambda之间的集成错误,因为该函数返回我的自定义错误消息,并且我认为它是传输参数错误。

+0

这听起来像你有没有映射到您的API网关映射模板请求参数,因此它们无法使用您的Lambda函数。 –

+0

我明白了,但我会将它映射到“方法请求”或“集成请求”中?你有什么样的例子来展示我吗?谢谢 –

回答

1

回到你的资源GET的“合并请求”,在“身体映射模板”

  1. 选择了推荐的选项为“请求体直通”
  2. 添加映射模板(点击行动“添加绘图模板”)
  3. 写“APPLI阳离子/ JSON”为内容类型
  4. 添加这个模板

{ 
    "idgrupo" : "$input.params('idgrupo')", 
    "clientId" : "$input.params('clientId')", 
    "keypair" : "$input.params('keypair')" 
} 
0

在您的API网关控制台的“集成请求”下的“映射模板”部分中,为您提交的内容类型创建一个模板,然后选择“方法请求传递”。这会将所有内容传递给Lambda函数。

然后在你的lambda函数的代码,你需要通过event.params.idgrupo引用的URL参数值,event.params.clientId