Как правильно разобрать код ошибки из лямбда-ответа в openapi api-gateway - PullRequest
1 голос
/ 19 октября 2019

Я устанавливаю конечную точку для лямбды в 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. Что мне здесь не хватает?

1 Ответ

0 голосов
/ 20 октября 2019

Я понял это. В лямбде нужно сгенерировать ошибку с кодом ответа, который вы хотите разобрать. Если вы просто вернетесь, это предполагает правильное выполнение.

...