DB
概要
DB レイヤーは infrastructure/liquibase_migrate/template.yaml で Aurora DSQL クラスターを作成し、changelog.xml と changes/*.sql でスキーマを適用する構成です。
アプリケーション本体は Rust Lambda から IAM 認証トークンを使って接続し、ORM には SeaORM を使用します。
参照ソース
| パス |
内容 |
infrastructure/liquibase_migrate/template.yaml |
Aurora DSQL クラスター定義 |
infrastructure/liquibase_migrate/changelog.xml |
Liquibase の変更セット一覧 |
infrastructure/liquibase_migrate/changes/*.sql |
テーブル・インデックス作成 SQL |
infrastructure/sea_orm/src/entity/*.rs |
スキーマから生成された SeaORM エンティティ |
api/lambda/src/main.rs |
DSQL 接続と問い合わせ CRUD |
構成要素
| 要素 |
役割 |
| Aurora DSQL |
アプリケーションデータの保存先 |
| Liquibase |
スキーマ変更の適用管理 |
| SeaORM |
Rust API から使う型安全な DB アクセス層 |
| GitHub Actions |
DSQL デプロイ、マイグレーション実行、SeaORM 再生成を自動化 |
現在のスキーマ概要
| テーブル |
用途 |
状態 |
inquiries |
問い合わせ本体 |
API から利用中 |
users |
将来のアプリ内ユーザー情報保持候補 |
現時点では未接続 |
databasechangelog / databasechangeloglock |
Liquibase 管理テーブル |
SeaORM 生成対象に含まれる |
テーブル定義の詳細は DB スキーマと ORM を参照してください。
マイグレーションと ORM の流れ
db_migrate.yaml が Aurora DSQL クラスターをデプロイします。
- 同 workflow の
migrate ジョブが Liquibase を使って changelog.xml を適用します。
generate_sea_orm.yaml が DSQL に接続し、infrastructure/sea_orm/src/entity/ を再生成します。
- API は生成済み
sea_orm_entities クレートを参照してクエリを実行します。
実装上のポイント
- DSQL 接続情報は CloudFormation Export の
DSQLClusterEndpoint から他ワークフローや API に引き渡されます。
- API は毎回 IAM ベースの一時トークンを生成し、
postgres://admin:<token>@... 形式で接続します。
inquiries には email と created_at のインデックスがあり、ユーザー別一覧取得と時系列ソートを補助します。
users テーブルは存在しますが、Cognito 認証とまだ統合されていません。
関連ページ