我是AWS的新手,还在学习。我只尝试了一个月。
我已经找了好几天了,还没有找到一个正确的、更合适的解决方案。因此,如果有人能给我一个示例代码,提供一些正确方向的指针或指南,那就太好了。
我创建了一个AWS RDS MySQL示例和一个数据库。我已将“IAM DB认证已启用”配置为“是”。
根据AWS文档创建了IAM角色和策略。
最后,我有一个使用Tomcat的EC2示例,其中部署并运行了我的Java/Spring应用程序。我能够使用数据库凭据(如数据库用户名,密码,数据库URL等)成功访问MySQL数据库。所以我知道现在一切都安排妥当了。
有人能帮助我知道如何使用spring-jdbc和AWS IAM Authentication(我在上面创建的IAM角色)从我的Java/Spring应用程序连接到这个数据库吗?
我在某个地方读到,我的应用环境中需要证书文件或证书捆绑文件,并且我需要生成一个token来连接到数据库。但我不知道如何把它放在一起。
任何帮助都将受到高度赞赏。
谢谢
3条答案
按热度按时间bzzcjhmw1#
我最近遇到了类似的问题。
这就是我所做的:
您可以找到完整的分步指南here。
顺便说一句,Spring Cloud AWS JDBC提供了一些额外的好处,比如读取副本或故障转移支持,并且您只需提供RDS示例的示例ID,而不是完整的规范端点。
polhcujo2#
更新至2023年!
现在,使用AWS JDBC Driver for MySQL对IAM数据库身份验证的支持,可以更轻松地实现这一点。我使用Sping Boot 3和spring-boot-starter-jdbc测试了这个配置。
添加以下依赖项:
将以下内容添加到application.yml:
它应该只是工作!
驱动程序使用AWS default credentials provider chain,因此请确保您具有策略凭据,允许在任何运行应用程序的位置访问IAM DB。要配置故障转移支持,请查看此处的文档。希望这个更新能帮助到其他人!
*这是使用MariaDB驱动程序的旧方法-请参阅上面的更新!
我知道这是一个老问题,但经过一些搜索,我发现一个非常简单的方法,你现在可以使用MariaDB驱动程序来做到这一点。在2.5版本中,他们向驱动程序添加了AWS IAM credential plugin。它将自动处理令牌的生成、缓存和刷新。
我已经使用Sping Boot 2.3和默认的HikariCP连接池进行了测试,在这些设置下,它对我来说工作得很好:
下载rds-combined-ca-bundle.pem并将其放在
src/main/resources
中,以便您可以通过SSL连接。在类路径上还需要这些依赖项:
该驱动程序使用标准
DefaultAWSCredentialsProviderChain
,因此请确保您具有允许IAM DB访问的策略凭据,无论您在何处运行应用程序。另外,如果您想要像@markusgulden在他的回答中提到的那样的故障转移支持,您可以使用这里描述的
aurora
模式。您的端点将如下所示jdbc:mariadb:aurora://host/db?credentialType=AWS-IAM&useSsl&serverSslCert=classpath:rds-combined-ca-bundle.pem
希望这对其他人有帮助-我在网上找到的大多数例子都涉及自定义代码,后台线程等-但是使用新的驱动程序功能要容易得多!
jljoyd4f3#
我建议使用这个库来替换HikariDatasource。其他一切都像正常一样。