Aws Лямбда java Функция alwasys возвращает 200 - PullRequest
0 голосов
/ 08 января 2020

Я aws лямбда с Java для создания одной функциональности, а также ответ интеграции для обработки пользовательских сопоставлений. вот код лямбды.

    @Override
    public LoginResponse handleRequest(LoginRequest request, Context ctx) {
        LambdaLogger logger = ctx.getLogger();

        LoginResponse response = new LoginResponse();
        if (StringUtils.isNullOrEmpty(request.getUsername())) {
            response.setErrorMessage("Invalid Username!!");
            return response;
        }

        String domainName = request.getUsername().substring(request.getUsername().indexOf('@') + 1);
        log.info("Domain name [{}] : ", domainName);
        Item itm = findDomainName(domainName);
        if(null == itm) {
            response.setErrorMessage("Invalid Username!!");
            throw new RuntimeException("Error Message");
        }
}

поэтому здесь я понимаю, что когда система сгенерирует исключение RuntimeException, тогда aws обработает это как внутреннюю ошибку сервера с кодом состояния 500, и она выполнит сопоставление с шаблоном. Но его возвращение всегда 200. Как мы можем вернуть 500 или какой-то другой код состояния, чтобы он мог отображаться с шаблоном ответа интеграции, используя java.

Спасибо

1 Ответ

0 голосов
/ 08 января 2020

Эта проблема была решена сейчас, и это было действительно просто исправить.

Просто сгенерируйте любое пользовательское исключение или исключение времени выполнения с кодом ошибки.

if(null == itm) {
    throw new UserNotFoundException(ExceptionErrorCode.INTERNAL_SERVER_ERROR);
}

или

try {
    result = signIn(request.getUsername(), request.getPassword(), userPoolId, clientId);
}catch(NotAuthorizedException e) {
    throw new UserNotFoundException(ExceptionErrorCode.UN_AUTHORIZED);
}

, а затем сопоставьте эти коды ошибки в ответ API-интеграции. Это то, что нам нужно сделать, чтобы отправить пользовательское сообщение / код ошибки от лямбды.

Спасибо

enter image description here

...