Laravel 用の DynamoDB パッケージを探していて、 監査ログを DynamoDB に直接保存するためのドライバがあったので覚え書き。
infinitypaul/laravel-dynamodb-auditing: DynamoDB driver for Laravel Auditing package https://github.com/infinitypaul/laravel-dynamodb-auditing
時間と共に増殖する監査ログの保存先としては DynamoDB は非常に適しているように思えます。
infinitypaul/laravel-dynamodb-auditing とは?(要約)
Laravel Auditing パッケージの「監査ログ(Audit)」保存先として DynamoDB を使えるようにするドライバです。
通常、Laravel Auditing は MySQL/PostgreSQL などの RDB に audit レコードを保存しますが、 このモジュールを導入すると 高速・スケーラブルな DynamoDB に監査イベントを保存できるようになります。
このモジュールが提供する主な機能
(1) Audit データの DynamoDB 保存
- モデルの更新・削除・作成の履歴を DynamoDB テーブルに保存。
- DynamoDB のテーブルスキーマは専用の partition_key と sort_key を持つ構造。
(2) 読み込み・検索にも対応
- Audit レコードを DynamoDB から取得可能。
- Laravel Auditing の API(audits() など)をそのまま利用できる。
(3) Laravel Auditing との完全互換
- Audit ドライバとして DynamoDB を追加するだけで利用可能。
- 監査対象モデル側の設定(use \OwenIt\Auditing\Auditable; など)は従来と同じ。
使うときのイメージ
(1) Composer インストール
composer require infinitypaul/laravel-dynamodb-auditing
(2) Audit ドライバを設定に追加
// config/audit.php
'driver' => 'dynamodb',
(3) DynamoDB テーブルを作成(CloudFormation/手動などで)
必要なキー例:
- audit_id(PK)
- created_at(SK)
(4) モデルに Auditable を付与するだけで DynamoDB に監査ログが記録される
どんな人に向いている?
- 大量のアクティビティログを高速に保存したい
- RDB に監査ログで負荷をかけたくない
- 低コストでほぼ無限にログを保存したい
- サーバーレス構成にしたい(Aurora等を使わない)
→ 特に 高トラフィックな Web API / SaaS / IoT 系 にはメリットが大きいです。
まとめ
laravel-dynamodb-auditing は
- Laravel Auditing の保存先を DynamoDB に置き換えるドライバ
- RDB に依存せずスケーラブルな監査ログ管理ができる
- 既存の Auditing 設定・コードを崩さずに導入可能
という、ログの高速保存と可用性を重視する Laravel アプリ向けの拡張ドライバです。