使用 JDBC 连接器连接到 Aurora DSQL 集群
Aurora DSQL Connector for JDBC
适用于 JDBC 的 Aurora DSQL 连接器设计为与 PostgreSQL JDBC 驱动程序
适用于 JDBC 的 Aurora DSQL 连接器与 PostgreSQL JDBC 驱动程序结合使用,为 Aurora DSQL 实现了基于 IAM 的身份验证。该连接器引入了与 AWS Identity and Access Management
关于连接器
Aurora DSQL 是一种分布式 SQL 数据库服务,面向兼容 PostgreSQL 的应用程序提供高可用性和可扩展性。Aurora DSQL 要求使用基于 IAM 的身份验证以及限时令牌,而现有 JDBC 驱动程序本身不支持这种方法。
设计适用于 JDBC 的 Aurora DSQL 连接器的主要理念是,在 PostgreSQL JDBC 驱动程序之上添加一个身份验证层来处理 IAM 令牌生成,使得用户无需更改现有 JDBC 工作流即可连接到 Aurora DSQL。
什么是 Aurora DSQL 身份验证?
在 Aurora DSQL 中,身份验证包括:
-
IAM 身份验证:所有连接都使用基于 IAM 的身份验证和限时令牌
-
令牌生成:使用 AWS 凭证生成身份验证令牌,其生命周期可配置
适用于 JDBC 的 Aurora DSQL 连接器针对这些要求而设计,在建立连接时自动生成 IAM 身份验证令牌。
适用于 JDBC 的 Aurora DSQL 连接器的益处
尽管 Aurora DSQL 提供了与 PostgreSQL 兼容的接口,但现有 PostgreSQL 驱动程序目前不支持 Aurora DSQL 的 IAM 身份验证要求。通过适用于 JDBC 的 Aurora DSQL 连接器,客户可以继续使用现有的 PostgreSQL 工作流,同时通过以下方式启用 IAM 身份验证:
-
自动令牌生成:使用 AWS 凭证自动生成 IAM 令牌
-
无缝集成:适用于现有 JDBC 连接模式
-
AWS 凭证支持:支持各种 AWS 凭证提供方(默认、基于配置文件等)
将适用于 JDBC 的 Aurora DSQL 连接器与连接池结合使用
适用于 JDBC 的 Aurora DSQL 连接器可与 HikariCP 等连接池库结合使用。连接器在建立连接期间处理 IAM 令牌生成,使得连接池可以正常操作。
主要 功能
- 自动令牌生成
-
IAM 令牌使用 AWS 凭证自动生成。
- 无缝集成
-
使用现有 JDBC 连接模式而无需更改工作流。
- AWS 凭证支持
-
支持各种 AWS 凭证提供方(默认、基于配置文件等)。
- 连接池兼容性
-
与 HikariCP 等连接池库无缝结合使用。
先决条件
在开始之前,请确保您已完成以下先决条件:
-
安装 Java 开发工具包(JDK)。请确保您使用的是版本 17 或更高版本。
-
设置适当的 IAM 权限,以允许应用程序连接到 Aurora DSQL。
-
已配置 AWS 凭证(通过 AWS CLI、环境变量或 IAM 角色)。
使用适用于 JDBC 的 Aurora DSQL 连接器
要在 Java 应用程序中使用适用于 JDBC 的 Aurora DSQL 连接器,请按照以下步骤操作:
-
将以下依赖项添加到您的 Maven 项目中。
<dependencies> <!-- Aurora DSQL Connector for JDBC --> <dependency> <groupId>software.amazon.dsql</groupId> <artifactId>aurora-dsql-jdbc-connector</artifactId> <version>1.0.0</version> </dependency> </dependencies>对于 Gradle 项目,请添加此依赖项:
implementation("software.amazon.dsql:aurora-dsql-jdbc-connector:1.0.0") -
使用 AWS DSQL PostgreSQL 连接器格式,创建与 Aurora DSQL 集群的基本连接:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DsqlJdbcConnectorExample { public static void main(String[] args) { // Using AWS DSQL PostgreSQL Connector prefix String jdbcUrl = "jdbc:aws-dsql:postgresql://your-cluster.dsql.us-east-1.on.aws/postgres?user=admin"; try (Connection connection = DriverManager.getConnection(jdbcUrl)) { // Use the connection try (Statement statement = connection.createStatement()) { // Create a table statement.execute("CREATE TABLE IF NOT EXISTS test_table (id UUID PRIMARY KEY DEFAULT gen_random_uuid(), name VARCHAR(100))"); // Insert data statement.execute("INSERT INTO test_table (name) VALUES ('Test Name')"); // Query data try (ResultSet resultSet = statement.executeQuery("SELECT * FROM test_table")) { while (resultSet.next()) { System.out.println("ID: " + resultSet.getInt("id") + ", Name: " + resultSet.getString("name")); } } } } catch (SQLException e) { e.printStackTrace(); } } }
配置属性
适用于 JDBC 的 Aurora DSQL 连接器支持以下连接属性:
- 用户
-
确定连接的用户以及使用的令牌生成方法。示例:
admin - token-duration-secs
-
令牌的有效期长度,以秒为单位。有关令牌限制的更多信息,请参阅在 Amazon Aurora DSQL 中生成身份验证令牌。
- 配置文件
-
用于实例化 ProfileCredentialsProvider,来通过提供的配置文件名称生成令牌。
- region
-
用于 Aurora DSQL 连接的 AWS 区域。这是可选的。提供此项时,将覆盖从 URL 中提取的区域。
- database
-
要连接的数据库的名称。默认值为
postgres。
日志记录
启用日志记录功能,用于对使用 Aurora DSQL JDBC 连接器时可能遇到的任何问题进行故障排除。
该连接器使用 Java 的内置日志记录系统(java.util.logging)。您可以通过创建 logging.properties 文件来配置日志记录级别:
# Set root logger level to INFO for clean output .level = INFO # Show Aurora DSQL Connector for JDBC FINE logs for detailed debugging software.amazon.dsql.level = FINE # Console handler configuration handlers = java.util.logging.ConsoleHandler java.util.logging.ConsoleHandler.level = FINE java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter # Detailed formatter pattern with timestamp and logger name java.util.logging.SimpleFormatter.format = %1$tH:%1$tM:%1$tS.%1$tL [%4$s] %3$s - %5$s%n
示例
有关更全面的示例和使用案例,请参阅适用于 JDBC 的 Aurora DSQL 连接器存储库