DynamoDB Streams

DynamoDB テーブルの変更をリアルタイムでキャプチャし、Lambda で処理するイベントソース

AWSイベント駆動

DynamoDB Streams とは

DynamoDB Streams は、DynamoDB テーブルのアイテムの追加・更新・削除をリアルタイムでキャプチャし、Lambda で処理するイベントソースである。CDC (Change Data Capture) の AWS 実装で、テーブルの変更を他のサービスに伝播する。

ユースケース

DynamoDB Streams はテーブルの変更をリアルタイムにキャプチャするため、他のデータストアとの同期や、変更をトリガーとした後続処理に活用できる。イベント駆動アーキテクチャの起点として機能する。

ユースケース説明
検索インデックスの同期DynamoDB → OpenSearch
キャッシュの無効化DynamoDB → Lambda → ElastiCache 削除
集計テーブルの更新注文追加 → 売上集計を更新
通知新規注文 → SNS → メール送信
監査ログ全変更を S3 に保存

アーキテクチャ

DynamoDB テーブルへの書き込みが発生すると、Streams が変更レコードをキャプチャし、Lambda がそれを消費して後続の処理を実行する。Lambda は変更の種類 (INSERT、MODIFY、REMOVE) に応じて処理を分岐できる。

[DynamoDB テーブル][DynamoDB Streams][Lambda][OpenSearch / SNS / S3]

StreamViewType

StreamViewType を以下にまとめる。

タイプ含まれるデータ
KEYS_ONLYキー属性のみ
NEW_IMAGE変更後のアイテム
OLD_IMAGE変更前のアイテム
NEW_AND_OLD_IMAGES変更前後の両方

注意点

注意点を以下にまとめる。

注意点対策
順序保証はパーティションキー内のみ同じキーの変更は順序保証
同一シャードの同時読み取りは 2 プロセスまで超過するとスロットリングされる。消費者を増やすなら Kinesis Data Streams for DynamoDB (シャードあたり 5、拡張ファンアウトで 20) へ切り替える
グローバルテーブルでは同時読み取り 1 が推奨自前のコンシューマーは 1 つに抑える
24 時間でストリームレコードが期限切れ処理が遅延すると消失
冪等性が必要リトライで同じレコードが再送される

実務での活用方法は関連書籍にも詳しい。

この記事は役に立ちましたか?

関連用語

関連する記事