Поскольку я сам также искал ответ на этот вопрос после столь длительного времени, единственное решение, которое я нашел, которое включало файл спецификации swagger / openapi, использовало этот шаблон сопоставления (это самое короткое, которое я мог придумать):
#set($allParams = $input.params())
{
"body" : $input.json('$'),
#set($pathParams = $allParams.get('path'))
"pathParameters" : {
#foreach($paramName in $pathParams.keySet())
"$paramName" : "$util.escapeJavaScript($pathParams.get($paramName))"
#if($foreach.hasNext),#end
#end
},
#set($queryParams = $allParams.get('querystring'))
"queryString" : {
#foreach($paramName in $queryParams.keySet())
"$paramName" : "$util.escapeJavaScript($queryParams.get($paramName))"
#if($foreach.hasNext),#end
#end
}
}
В пути спецификации, к которому мы хотим применить его:
paths:
/your-path:
x-amazon-apigateway-integration:
credentials: "arn:aws:iam::xxx:role/yyy"
uri: "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:zzz:function:qqq/invocations"
responses:
default:
statusCode: 200
passthroughBehavior: never
httpMethod: POST
requestTemplates:
application/json: "#set($allParams = $input.params())\n {\n \
\ \"body\" : $input.json('$'),\n #set($pathParams = $allParams.get('path'))\n\
\ \"pathParameters\" : {\n #foreach($paramName\
\ in $pathParams.keySet())\n \"$paramName\" : \"$util.escapeJavaScript($pathParams.get($paramName))\"\
\n #if($foreach.hasNext),#end\n #end\n\
\ },\n #set($queryParams = $allParams.get('querystring'))\n\
\ \"queryString\" : {\n #foreach($paramName\
\ in $queryParams.keySet())\n \"$paramName\" : \"$util.escapeJavaScript($queryParams.get($paramName))\"\
\n #if($foreach.hasNext),#end\n #end\n\
\ }\n }"
type: aws
К сожалению, это очень громоздко для меня, и я просто решил использовать стандартную интеграцию прокси сдля проверки запроса установлено все:
x-amazon-apigateway-request-validators: {
all: {
validateRequestBody: true,
validateRequestParameters: true
}
}
x-amazon-apigateway-request-validator: all