データベース

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 などのコンシューマがポーリングして処理する。

動作の流れ

  1. テーブルで Streams 有効化(ビュータイプ選択)
  2. アイテム変更(PUT/UPDATE/DELETE)
  3. Stream にレコード追加
  4. Lambda がポーリング
  5. 関数実行(バッチサイズ = 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. 関連用語


7. 関連サイト

AWS 公式

参考


🎓 試験での出題傾向

試験重要度主な出題パターン
CLF出題稀
SAAイベント駆動設計
DVALambda トリガー実装、ビュータイプ選定
SOA運用・モニタリング