使用Java连接池的AWS IAM数据库身份验证

问题描述 投票:0回答:1

我正在寻找一个Java数据库连接池,允许我为我的Aurora MySQL使用AWS IAM数据库身份验证。该池应该能够工作Tomcat context.xml文件。

我看过Tomcat DBCP,dbcp2,HikariCP和c3p0。但他们似乎都认为用户名和密码在应用程序启动时是已知的,并且在应用程序的生命周期中不会改变。

对于IAM数据库身份验证,凭据每15分钟更改一次,因此每当创建新连接时,池都需要向AWS IAM请求新凭据(凭证可以缓存几分钟)。

这是在任何Java连接池中实现的吗?或者您对如何使其发挥作用有所了解?

java amazon-web-services amazon-rds amazon-iam
1个回答
0
投票

我最近遇到了同样的问题....我使用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); ...

在您的池配置中包含以下内容非常重要:

dataSource.setMaxLifetime(15 * 60 * 1000); 

因为您的游泳池连接使用RDS Iam Auth不能超过15分钟

祝好运。

© www.soinside.com 2019 - 2024. All rights reserved.