如何从AWS Parameter Store获取数据库信息至Spring Boot服务以测试连接
从AWS Parameter Store取数据库信息并测试连接的实现方案
1. 添加AWS SDK依赖
在你的Spring Boot项目中,添加AWS Systems Manager的依赖(仅测试环境使用即可):
Maven(pom.xml)
<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>ssm</artifactId> <version>2.20.0</version> <!-- 替换为最新稳定版本 --> <scope>test</scope> </dependency>
Gradle(build.gradle)
testImplementation 'software.amazon.awssdk:ssm:2.20.0'
2. 编写Parameter Store参数获取工具
写一个简单的工具类,用来从AWS Parameter Store拉取加密/未加密的参数:
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.ssm.SsmClient; import software.amazon.awssdk.services.ssm.model.GetParameterRequest; import software.amazon.awssdk.services.ssm.model.GetParameterResponse; public class AwsParamStoreHelper { // 初始化SSM客户端,替换为你的AWS区域 private static final SsmClient SSM_CLIENT = SsmClient.builder() .region(Region.US_EAST_1) .build(); public static String getParam(String paramName) { GetParameterRequest request = GetParameterRequest.builder() .name(paramName) .withDecryption(true) // 若参数是加密存储(如密码),必须开启此选项 .build(); GetParameterResponse response = SSM_CLIENT.getParameter(request); return response.parameter().value(); } }
3. 改造测试代码,传入参数
把参数获取逻辑和你的数据库连接测试代码结合:
import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; public class DbConnectionTest { public static void main(String[] args) { // 替换为你在Parameter Store中存储的参数路径 String dbUrl = AwsParamStoreHelper.getParam("/my-service/db/url"); String dbUser = AwsParamStoreHelper.getParam("/my-service/db/username"); String dbPwd = AwsParamStoreHelper.getParam("/my-service/db/password"); HikariConfig config = new HikariConfig(); config.setJdbcUrl(dbUrl); config.setUsername(dbUser); config.setPassword(dbPwd); // 使用try-with-resources自动关闭资源 try (HikariDataSource ds = new HikariDataSource(config); Connection conn = ds.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT COUNT(*) FROM users")) { if (rs.next()) { int count = rs.getInt(1); System.out.println("用户数量: " + count); } } catch (Exception e) { e.printStackTrace(); } } }
4. 配置测试环境的AWS权限
测试代码运行的环境(本地/CI机器/云实例)需要具备访问Parameter Store的权限:
- 本地开发:在
~/.aws/credentials文件中配置有权限的AWS账号密钥 - 云环境(如EC2/ECS):给实例/任务附加IAM角色,包含以下权限策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:GetParameter", "Resource": [ "arn:aws:ssm:你的区域:你的账号ID:parameter/my-service/db/url", "arn:aws:ssm:你的区域:你的账号ID:parameter/my-service/db/username", "arn:aws:ssm:你的区域:你的账号ID:parameter/my-service/db/password" ] } ] }
内容的提问来源于stack exchange,提问作者Musaddiq M
相关产品推荐
相关产品推荐

