Aurora DSQL用のJDBCコネクターをSpring Bootに組み込んでみた
1. はじめに
ITアーキテクトを務めています松本と申します。
Aurora DSQL Connector for JDBCというAurora DSQL用のJDBCコネクターがリリースされました。Java以外ではNode.jsやPython用のコネクターも発表されています。今まではAurora DSQLにアクセスするには自前でトークンを取得する処理を実装する必要がありました。また、トークンをリフレッシュする処理も必要でした。
Aurora DSQL Connector for JDBCでは、Aurora DSQLにアクセスする際のトークン処理を自動で行ってくれるので、アプリケーションの実装に集中できます。
従来のAuroraにはAdvanced JDBC Wrapperというラッパーがあるのですが、
それとは別になっております。
2. Aurora DSQLとは?
Aurora DSQLはAWSが提供している分散SQLデータベースです。
サーバーレスデータベースであり、PostgreSQL互換で、強い整合性を有しております。
ただし、通常のRDBと異なり楽観的同時実行制御になっているなど、単純に置き換えることはできないことに注意が必要です。
従来のAuroraと異なり、アクセスするにはトークンを取得する必要があります。トークンを取得するためにはIAMで許可されている必要があります。
3. Aurora DSQL Connector for JDBCとは?
Aurora DSQL Connector for JDBCは、Aurora DSQLに接続するためのJDBCのライブラリです。HikariCPとも連携でき、簡単にSpring Bootに組み込むことができます。
IAMロール等にAurora DSQLのトークンを取得する権限を付与しておけば、
あとはapplication.propertiesに設定を加えるとアクセスできます。
4. サンプルアプリケーションの作成
これからAurora DSQLとSpring Bootを利用して、Aurora DSQL Connector for JDBCのテストアプリケーションを作成します。
前提
- java 24
- Spring Boot 4.0.0
- Spring Data
- Spring Initializrで初期構築
- Gradleを利用
- Aurora DSQLのクラスタは事前に構築(名前は「sample」にしています)
- Aurora DSQLはパブリックアクセスができる状態
- AWSのリージョンはap-northeast-1
- AWS CLIでアクセスキーの設定やIAMポリシーの設定が完了済み
4-1. Aurora DSQLにテーブルを作成してテストデータを登録
Aurora DSQLにテスト用のテーブルを作成します。
Aurora DSQLでQuery Editorが利用できるようになったので、これを使ってテーブルの構築とテストデータを入力します。
Query Editorを開いて以下のDDLを流します。
CREATE TABLE public.book (
id uuid PRIMARY KEY,
title varchar(255)
);

テーブルが出来上がったので、以下のinsert文でテストデータを登録します。
INSERT INTO public.book
(id, title)
VALUES
('0f3a1c54-6b1e-4c2b-9f5a-9f3bc2c7c0a1', 'サンプルタイトル1'),
('1a92f2d7-3c54-4c8e-8d7b-2b7f5b2d9e33', 'サンプルタイトル2')
;

試しにselect文を投げてみましょう。

無事にデータが登録されていることを確認できました。
次は、Spring Bootの作成に移ります。
4-2. Spring Bootに組み込む
Spring BootにAurora DSQL Connector for JDBC組み込んでみましょう。
Web APIを作成して、Aurora DSQLのデータを返却するようにします。
URLとしては「/book/{id}」を叩いて、オブジェクトを取得できるようにします。
依存関係
Gradleのdependenciesは以下の通りでした。「software.amazon.dsql:aurora-dsql-jdbc-connector」の部分が今回のメイントピックです。lombokは必要に応じて追加してください。
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-webmvc'
implementation 'software.amazon.dsql:aurora-dsql-jdbc-connector:1.3.0'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
application.propertiesの設定
application.propertiesに接続文字列を追加します。
通常のJDBCドライバーと同じプロパティを利用していることがわかるかと思います。
spring.datasource.url=jdbc:aws-dsql:postgresql://{Aurora DSQLクラスターのID}.dsql.ap-northeast-1.on.aws:5432/postgres?user=admin
spring.datasource.driver-class-name=software.amazon.dsql.jdbc.DSQLConnector
設定項目としては以上であとは通常のSpring Bootと同じです。つまり、トークンを取得する処理を記載する必要がありません。
javaの実装に移ります。実装の一部としてRepositoryクラスは以下のようになっております。
ControllerやServiceクラスは割愛しております。
@Repository
public interface BookRepository extends JpaRepository<Book, Long> {
@Query(value = "SELECT * FROM book WHERE id = :id", nativeQuery = true)
Book findBookById(@Param("id") UUID id);
}
あとはローカルPC上でSpring Bootを立ち上げて、
curlコマンド利用し「/book/{id}」を叩いてみましょう。

無事取得することができました。
5. まとめ
Aurora DSQLに簡単にアクセスできるJDBCがリリースされました。
トークン取得処理を実装することなく、Aurora DSQLにアクセスできるため、
アプリケーションのコアの部分に注力することができます。
今後はAurora DSQL Connector for JDBCを利用してAurora DSQLのアプリケーションを実装していきたいと思います。
Discussion