データベース ・
DynamoDB Streams とは?テーブル変更ストリームと Lambda 連携
DynamoDB Streams は テーブルのアイテム変更(INSERT / UPDATE / DELETE)をリアルタイムで記録するストリーム機能。Lambda トリガー・Kinesis 連携で、変更を起点にした処理(通知・派生データ生成・監査)を実装できる。 ---
DynamoDB のアイテム変更を時系列で記録するストリーム機能。Lambda 連携でリアクティブ処理を実現。
1. 概要(端的に)
DynamoDB Streams は テーブルのアイテム変更(INSERT / UPDATE / DELETE)をリアルタイムで記録するストリーム機能。Lambda トリガー・Kinesis 連携で、変更を起点にした処理(通知・派生データ生成・監査)を実装できる。
2. 何ができるか
- 変更ログ記録:24 時間保持
- Lambda トリガー:自動的に Lambda 起動
- Kinesis Data Streams 連携:Kinesis で長期保管・複数コンシューマ
- 4 つのビュータイプ:KEYS_ONLY / NEW_IMAGE / OLD_IMAGE / NEW_AND_OLD_IMAGES
- 順序保証:パーティションキー単位で順序保持
- 少なくとも 1 回配信
ビュータイプ
| タイプ | 内容 |
|---|---|
| KEYS_ONLY | キー情報のみ |
| NEW_IMAGE | 変更後の全属性 |
| OLD_IMAGE | 変更前の全属性 |
| NEW_AND_OLD_IMAGES | 変更前後両方 |
3. 特徴
| 観点 | 特徴 |
|---|---|
| 保持期間 | 24 時間 |
| 追加料金 | 1 リクエストあたり $0.02/100 万(KEYS_ONLY 以外) |
| 順序 | パーティション単位で保証 |
| 配信 | 少なくとも 1 回 |
| 遅延 | 通常数秒以内 |
4. 仕組み
DynamoDB Streams は テーブル変更を時系列レコードとして記録するエンドポイント。Lambda などのコンシューマがポーリングして処理する。
動作の流れ
- テーブルで Streams 有効化(ビュータイプ選択)
- アイテム変更(PUT/UPDATE/DELETE)
- Stream にレコード追加
- Lambda がポーリング
- 関数実行(バッチサイズ = 1〜1,000)
Lambda 連携
DynamoDB テーブル変更
↓ Streams
Lambda が処理
↓ 例
- メール通知
- 別テーブルへの派生データ書き込み
- 監査ログ記録
- 検索インデックス更新
Kinesis Data Streams 連携
DynamoDB Streams より 長期保管(最大 365 日)・複数コンシューマ・大規模処理 が必要なら、Kinesis Data Streams への連携も可能。
5. ユースケース
ユースケース 1:データ変更通知
ユーザーデータ更新時に通知メール送信。
ユースケース 2:派生データ生成
注文データ作成時に集計テーブル更新。
ユースケース 3:監査ログ
重要テーブルの変更履歴を別保管先に記録。
ユースケース 4:検索インデックス更新
DynamoDB → OpenSearch / ElasticSearch への自動同期。
ユースケース 5:マイクロサービス間連携
DB の変更をイベントとして他サービスに伝播(イベント駆動アーキテクチャ)。
6. 関連用語
- DynamoDB — Streams の基盤
- Lambda — 主要コンシューマ
- Kinesis-Data-Streams — 高度なストリーム連携
7. 関連サイト
AWS 公式
参考
🎓 試験での出題傾向
| 試験 | 重要度 | 主な出題パターン |
|---|---|---|
| CLF | 低 | 出題稀 |
| SAA | 中 | イベント駆動設計 |
| DVA | 高 | Lambda トリガー実装、ビュータイプ選定 |
| SOA | 中 | 運用・モニタリング |