JDBC コネクタを使用した Aurora DSQL クラスターへの接続 - Amazon Aurora DSQL

JDBC コネクタを使用した Aurora DSQL クラスターへの接続

JDBC 用 Aurora DSQL コネクタは、PostgreSQL JDBC ドライバーの機能を拡張して、アプリケーションが IAM 認証情報を使用して Aurora DSQL で認証できるようにする認証プラグインとして設計されています。コネクタはデータベースに直接接続しませんが、基盤となる PostgreSQL JDBC ドライバー上でシームレスな IAM 認証を提供します。

JDBC 用 Aurora DSQL コネクタは PostgreSQL JDBC ドライバーで動作するように構築されており、Aurora DSQL の IAM 認証要件とシームレスに統合できます。

PostgreSQL JDBC ドライバーと組み合わせて、JDBC 用 Aurora DSQL コネクタは Aurora DSQL の IAM ベースの認証を有効にします。AWS Identity and Access Management (IAM) などの AWS 認証サービスとの密接な統合が導入されました。

コネクタについて

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 などの接続プーリングライブラリとシームレスに連携します。

前提条件

開始する前に、以下の前提条件を満たしていることを確認してください。

  • Aurora DSQL でクラスターを作成します

  • Java 開発キット (JDK) をインストールします。バージョンが 17 以上であることを確認します。

  • アプリケーションが Aurora DSQL に接続できるように、適切な IAM アクセス許可を設定します。

  • AWS 認証情報の設定 (AWS CLI、環境変数、または IAM ロール経由)。

基本的な接続での JDBC 用 Aurora DSQL コネクタの使用

Java アプリケーションで JDBC 用 Aurora DSQL コネクタを使用するには、次の手順に従います。

  1. 以下の依存関係を 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")
  2. 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 コネクタレポジトリ」を参照してください。