Tob*_*sen 5 java amazon-web-services amazon-rds amazon-iam
我正在寻找一个 Java 数据库连接池,允许我对 Aurora MySQL 使用 AWS IAM 数据库身份验证。该池应该能够在 Tomcat context.xml 文件中工作。
我研究过 Tomcat DBCP、dbcp2、HikariCP 和 c3p0。但它们似乎都假设用户名和密码在应用程序启动时已知,并且在应用程序的生命周期中不会更改。
对于 IAM 数据库身份验证,凭证每 15 分钟更改一次,因此池需要在创建新连接时向 AWS IAM 请求新凭证(凭证可以缓存几分钟)。
这是在任何 Java 连接池中实现的吗?或者您知道如何让它发挥作用吗?
我最近遇到了同样的问题......我使用 HikariCP 连接池,直到现在它还不支持这一点。幸运的是我找到了一个使用这个工具的 PR:
https://github.com/brettwooldridge/HikariCP/pull/1335
我建议您创建一个项目分支并使用它,直到官方存储库接受此 PR。
我的实现:
public DataSource setup() throws Exception {
Supplier<String> passwordSupplier = () -> {
return this.generateAuthToken(host, port, user);
};
com.zaxxer.hikari.HikariDataSource dataSource = new com.zaxxer.hikari.HikariDataSource();
dataSource.setPasswordSupplier(passwordSupplier); ...
Run Code Online (Sandbox Code Playgroud)
将其包含在您的池配置中非常重要:
dataSource.setMaxLifetime(15 * 60 * 1000);
Run Code Online (Sandbox Code Playgroud)
因为您的池连接在 RDS Iam Auth 下的存活时间不能超过 15 分钟
祝你好运。
| 归档时间: |
|
| 查看次数: |
2969 次 |
| 最近记录: |