我正在设置一个Java程序,该程序获取AWS的RDS令牌并使用它连接到RDS上托管的MySql数据库。
这是获取令牌的代码。
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用户没有访问该资源的权限,或者该用户或hostName或用户名无效或不存在,它也始终会生成令牌。
在尝试访问数据库时,这将导致MySql错误。通常会引发此异常。
java.sql.SQLException: Access denied for user 'username' (using password: YES)
我想抛出并遗漏一个更合适且更具描述性的异常。在尝试连接数据库之前,有没有办法测试RDS令牌是否有效?如果是这样,您能得到它无效的原因吗? (即用户没有正确的权限或资源不存在)
或者,在生成无效令牌之前引发异常的方法也是可以接受的。