如何通过GET方法集成API网关与Lambda



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

{"errorMessage":"Error - Invalid Group ID - undefined - alexa ID:未定义的"}|

这是因为参数没有到达函数,idgrupo变量是<=0

我试图执行一个lambda函数与URL在这个形式:

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之间的集成错误,因为函数返回我自定义的错误消息,我认为这是一个传输参数错误。

返回到资源GET的"Body Mapping Templates"下的"Integration Request"

  1. 选择"请求体传递"的推荐选项
  2. 添加映射模板(点击"添加映射模板"动作)
  3. 内容类型写"application/json"
  4. 添加模板

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

在您的API Gateway控制台上,在"Integration Request"下,在"Mapping Template"部分,为您要提交的内容类型创建一个模板,然后选择"Method Request passthrough"。这将把所有内容传递给Lambda函数。

然后在Lambda函数代码中,您需要通过event.params.idgrupo, event.params.clientId等引用这些URL参数值

最新更新