大多数情况下,这可能是由于映射模板语法中的错误引起的。请注意,当使用Lambda集成时,映射模板是Lambda函数的输入数据(event)的结构。因此,您需要根据Lambda函数的期望结构来编写映射模板。以下是一个示例映射模板,将API网关的POST请求映射到Lambda函数的event对象:
{
"body" : $input.json('$'), // 将HTTP请求体转换为JSON
"httpMethod": "$context.httpMethod",
"headers": {
#foreach($header in $input.params().header.keySet())
"$header": "$util.escapeJavaScript($input.params().header.get($header))" #if($foreach.hasNext),#end
#end
},
#if($input.params().path.size() > 0)
"pathParameters": {
#foreach($pathParamName in $input.params().path.keySet())
"$pathParamName": "$util.escapeJavaScript($input.params().path.get($pathParamName))" #if($foreach.hasNext),#end
#end
},
#end
#if($input.params().querystring.size() > 0)
"queryStringParameters": {
#foreach($queryParamName in $input.params().querystring.keySet())
"$queryParamName": "$util.escapeJavaScript($input.params().querystring.get($queryParamName))" #if($foreach.hasNext),#end
#end
},
#end
"stageVariables": $util.toJson($context.stageVariables)
}
此模板可用于将HTTP请求映射到Lambda函数的event对象,以及将API网关HTTP请求传递给Lambda函数。您需要根据Lambda函数的期望输入模板来修改此模板。如果模板仍然无效,请检查AWS API网关控制台中映射模板的值,以确保其正确。