Я устанавливаю конечную точку для лямбды в api-gateway, используя openapi. Эта лямбда должна иметь возможность возвращать 400/500
коды ошибок для внутренних ошибок / неправильных запросов. С этой целью я попытался отформатировать раздел x-amazon-apigateway-integration
документа openapi json для этой конечной точки следующим образом:
"x-amazon-apigateway-integration": {
...
"responses": {
".*statusCode\\\":400.*": {
"statusCode": "400",
"responseTemplates": {
"application/json": "#set ($errorMessageObj = $util.parseJson($input.path('$.errorMessage'))) \n{ \"message\" : \"$errorMessageObj.message\"}"
}
}
}
}
Необработанный вывод из моей лямбды (т.е. до преобразований) выглядит следующим образом:
"{\"statusCode\":400,\"message\":\"Invalid request parameters\"}"
Я ожидаю, что окончательный ответ будет иметь код ошибки 400
, а объект, возвращаемый моему клиенту, будет
{
"message": "Invalid request parameters"
}
Но я получаю полный нетрансформированный ответВозврат объекта с кодом ответа 200 (по умолчанию). Я ссылался на этот aws-blog-post , который в нижней части содержит регулярное выражение, которое я пытаюсь использовать. Он передает regex-parser Так что я не понимаю, почему я все еще получаю ответ по умолчанию. Я использую openapi v3. Что мне здесь не хватает?