如何检查RDS令牌是否有效

时间:2019-10-16 18:42:45

标签: java amazon-web-services amazon-iam aws-java-sdk

我正在设置一个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令牌是否有效?如果是这样,您能得到它无效的原因吗? (即用户没有正确的权限或资源不存在)

或者,在生成无效令牌之前引发异常的方法也是可以接受的。

0 个答案:

没有答案