JDBC コネクタを使用した Aurora DSQL クラスターへの接続
JDBC 用 Aurora DSQL コネクタ
JDBC 用 Aurora DSQL コネクタは PostgreSQL JDBC ドライバー
PostgreSQL JDBC ドライバーと組み合わせて、JDBC 用 Aurora DSQL コネクタは Aurora DSQL の IAM ベースの認証を有効にします。AWS Identity and Access Management
コネクタについて
Aurora DSQL は、PostgreSQL 互換アプリケーションに高可用性とスケーラビリティを提供する分散 SQL データベースサービスです。Aurora DSQL には、既存の JDBC ドライバーがネイティブにサポートしていない時間制限付きトークンを使用した IAM ベースの認証が必要です。
JDBC 用 Aurora DSQL コネクタの主な考え方は、IAM トークン生成を処理する PostgreSQL JDBC ドライバーの上に認証レイヤーを追加することです。これにより、ユーザーは既存の 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 コネクタを使用すると、以下の方法で IAM 認証を有効にしながら、既存の PostgreSQL ワークフローを引き続き使用できます。
-
自動トークン生成: IAM トークンは AWS 認証情報を使用して自動的に生成されます
-
シームレスな統合: 既存の JDBC 接続パターンで動作します
-
AWS 認証情報のサポート: さまざまな AWS 認証情報プロバイダー (デフォルト、プロファイルベースなど) をサポートします。
接続プーリングでの JDBC 用 Aurora DSQL コネクタの使用
JDBC 用 Aurora DSQL コネクタは、HikariCP などの接続プーリングライブラリで動作します。コネクタは、接続の確立中に IAM トークンの生成を処理し、接続プールが正常に動作できるようにします。
主な特徴
- 自動トークンの生成
-
IAM トークンは AWS 認証情報を使用して自動的に生成されます。
- シームレスな統合
-
ワークフローの変更を必要とせずに、既存の JDBC 接続パターンと連携します。
- AWS 認証情報のサポート
-
さまざまな AWS 認証情報プロバイダー (デフォルト、プロファイルベースなど) をサポートします。
- 接続プーリングの互換性
-
HikariCP などの接続プーリングライブラリとシームレスに連携します。
前提条件
開始する前に、以下の前提条件を満たしていることを確認してください。
-
Java 開発キット (JDK) をインストールします。バージョンが 17 以上であることを確認します。
-
アプリケーションが Aurora DSQL に接続できるように、適切な IAM アクセス許可を設定します。
-
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 での認証トークンの生成」を参照してください。
- profile
-
指定されたプロファイル名を使用したトークン生成用の ProfileCredentialsProvider をインスタンス化するために使用されます。
- リージョン
-
Aurora DSQL 接続の AWS リージョン。これは省略可能です。指定された場合、URL から抽出されたリージョンは上書きされます。
- データベース
-
接続するデータベース名。デフォルトは
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 コネクタレポジトリ