Как проверить, действителен ли токен RDS? - PullRequest
1 голос
/ 16 октября 2019

Я настраиваю программу Java, которая получает токен RDS для AWS и использует его для подключения к базе данных MySql, размещенной на RDS.

Это код для получения токена.

        RdsIamAuthTokenGenerator generator = RdsIamAuthTokenGenerator.builder()
            .credentials(creds)
            .region(region)
            .build();

        String authToken = generator.getAuthToken(
            GetIamAuthTokenRequest.builder()
            .hostname(hostName)
            .port(Integer.parseInt(port))
            .userName(username)
            .build()); 

Проблема в том, что он всегда генерирует токен, даже если пользователь IAM не имеет разрешения на доступ к этому ресурсу или если пользовательили имя хоста или имя пользователя недопустимы или не существуют.

Это приводит к ошибке MySql при попытке доступа к базе данных. Обычно выдает это исключение.

java.sql.SQLException: Access denied for user 'username' (using password: YES)

Я хотел бы выдать и пропустить более подходящее и описательное исключение. Есть ли способ проверить, является ли токен RDS действительным, прежде чем пытаться подключиться к базе данных? Если да, то можете ли вы найти причину, по которой он недействителен? (т. е. пользователь не имеет правильных разрешений или ресурс не существует)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...