如何通过 GET 方法将 API 网关与 Lambda 集成
How can I integrate API Gateway with Lambda through GET method
我在尝试将 AWS API Gateway
与 AWS Lambda
集成时感到非常困惑,因为我试图通过 GET
方法执行 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 Gateway 和 AWS Lambda 之间的集成错误,因为函数 returns 我的自定义错误消息,我认为这是一个传输参数错误。
在您的 API 网关控制台的 "Integration Request" 下,在 "Mapping Template" 部分中,为您要提交的内容类型创建一个模板,然后 select "Method Request passthrough"。这会将所有内容传递给 Lambda 函数。
然后在您的 Lambda 函数代码中,您将需要通过 event.params.idgrupo
、event.params.clientId
等
引用这些 URL 参数值
返回您的资源 GET 的 "Integration Request",在 "Body Mapping Templates"
下
- Select 为 "Request body passthrough"
的推荐选项
- 添加映射模板(点击操作"Add mapping template")
- 内容类型写"application/json"
- 添加此模板
{
"idgrupo" : "$input.params('idgrupo')",
"clientId" : "$input.params('clientId')",
"keypair" : "$input.params('keypair')"
}
我在尝试将 AWS API Gateway
与 AWS Lambda
集成时感到非常困惑,因为我试图通过 GET
方法执行 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 Gateway 和 AWS Lambda 之间的集成错误,因为函数 returns 我的自定义错误消息,我认为这是一个传输参数错误。
在您的 API 网关控制台的 "Integration Request" 下,在 "Mapping Template" 部分中,为您要提交的内容类型创建一个模板,然后 select "Method Request passthrough"。这会将所有内容传递给 Lambda 函数。
然后在您的 Lambda 函数代码中,您将需要通过 event.params.idgrupo
、event.params.clientId
等
返回您的资源 GET 的 "Integration Request",在 "Body Mapping Templates"
下- Select 为 "Request body passthrough" 的推荐选项
- 添加映射模板(点击操作"Add mapping template")
- 内容类型写"application/json"
- 添加此模板
{
"idgrupo" : "$input.params('idgrupo')",
"clientId" : "$input.params('clientId')",
"keypair" : "$input.params('keypair')"
}