Go 向けの Amazon Aurora DSQL コネクターもリリースされたので使ってみた
いわさです。
Aurora DSQL はある程度の PostgreSQL 互換があるのですが、接続の部分は DSQL の API を呼び出して認証トークンを取得する必要があったり、ちょっと面倒です。
それらを簡素化するために Aurora DSQL では一部のランタイム・ドライバ向けにコネクタが用意されています。
上記ブログに記載されているように、これまで JDBC、Python、Node.js がサポートされていたのですが、先日 Go 用の DSQL コネクタも提供されるようになりました。
このコネクタは Go 向けの PostgreSQL ドライバをラップしたもので、基本的な使い方は pgx を踏襲しつつ透過的に IAM 認証が行えるようになっています。
使ってみたので紹介します。
pgx についてはこちらです。
やってみる
事前に適当な DSQL クラスターを東京リージョンへ用意しておきます。

github.com/awslabs/aurora-dsql-connectors/go/pgx/dsqlのインポートを追加し、dsql.Connectで接続を行います。
dsql.NewPoolで接続プールの構成も可能です。
前提として Go 1.24 以上が必要となります。
package main
import (
"context"
"fmt"
"log"
"github.com/awslabs/aurora-dsql-connectors/go/pgx/dsql"
)
func main() {
ctx := context.Background()
clusterEndpoint := "7btr4ocrgfn43elxeq7iyjvvnm.dsql.ap-northeast-1.on.aws"
fmt.Printf("接続先: %s\n", clusterEndpoint)
conn, err := dsql.Connect(ctx, dsql.Config{
Host: clusterEndpoint,
Profile: "hoge"
})
if err != nil {
log.Fatalf("接続エラー: %v", err)
}
defer conn.Close(ctx)
var result int
var timestamp string
err = conn.QueryRow(ctx, "SELECT 1 as test, current_timestamp::text as now").Scan(&result, ×tamp)
if err != nil {
log.Fatalf("クエリエラー: %v", err)
}
fmt.Printf("\nクエリ結果: test=%d, now=%s\n", result, timestamp)
var version string
err = conn.QueryRow(ctx, "SELECT version()").Scan(&version)
if err != nil {
log.Fatalf("バージョン取得エラー: %v", err)
}
fmt.Printf("\nPostgreSQL バージョン:\n%s\n", version)
fmt.Println("\n接続をクローズしました")
}
資格情報などは通常の AWS SDK for Go と同じで、環境変数あるいはプロファイルの指定など一通りサポートされています。
接続先は DSQL コンソールから取得したクラスターエンドポイントを使用しましたが、他にもクラスターIDとリージョンを指定した設定も可能です。
実行してみましょう。
% GOTOOLCHAIN=auto go run hoge.go
接続先: 7btr4ocrgfn43elxeq7iyjvvnm.dsql.ap-northeast-1.on.aws
クエリ結果: test=1, now=2026-02-20 04:28:36.826222+00
PostgreSQL バージョン:
PostgreSQL 16
接続をクローズしました
無事接続してバージョンを取得することが出来ましたね。
なお、ドライバーのドキュメントページは以下のリポジトリに用意されています。
接続プールを使う場合やクロスアカウントアクセスを行う場合などの高度なシナリオについても上記ドキュメントに記載されているので実装時の参考にしてください。
さいごに
本日は Go 向けの Amazon Aurora DSQL コネクターもリリースされたので使ってみました。
面倒だった認証周りの実装が楽になるので Go + PostgreSQL を使っている方はこれを気にぜひ Aurora DSQL も評価してみてください。







