You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 00:15:35