• Amazon DynamoDBでAWS Labmdaを使用する
  • AWS LambdaとDynamoDB Streamsを連携する手順
  • DynamoDBとLambdaを連携させるユースケース

 

Amazon DynamoDBでAWS Lambdaを使用する

DynamoDBのStream機能を利用して、DynamoDBに対して行われた追加・更新・削除などの変更履歴を記録して、以下のような機能を実現する際には、DynamoDBに書き込み等がされた際に都度ある処理を実行させたいことが多くあります。
・クロスリージョンレプリケーション
・ゲームやSNS等のユーザの集計、分析などのための非同期集計
・ユーザが新しい写真をアップロードするとともに、友人のモバイルデバイスに自動的に通知する等

その処理の実現方法として便利なのが、DynamoDBのテーブルに対してLambda関数をトリガーとして設定する方法です。以下の仕組みでDynamoDBのレコード更新に対応してLambda関数が実行されます。
1. カスタムアプリケーションによって DynamoDB テーブルが更新
2. Amazon DynamoDB は項目の更新をストリームに発行
3. AWS Lambda はストリームをポーリングし、ストリームで新しいレコードを検出すると Lambda 関数を呼び出す
4. AWS Lambda は、Lambda 関数の作成時に指定した実行ロールを引き受けることにより、Lambda 関数を実行

 

 

AWS LambdaとDynamoDB Streamsを連携する手順

1. Lambda関数を作成
DynamoDB イベントを処理するために使用する Lambda 関数のサンプルコードが、さまざまな言語で提供されています。いずれかの言語を選択し、該当する手順に従ってデプロイパッケージを作成します(Lambda関数を作成して設定します)。Lambda 関数を作成したら、サンプルの DynamoDB イベントデータを使用し、その関数を手動で呼び出してテストしておきます。

2. DynamoDBストリームを作成し、それをLambda関数と関連づける

・ストリームが有効になった Amazon DynamoDB テーブルを作成
・AWS Lambda でイベントソースマッピングを作成
このイベントソースのマッピングは、DynamoDB ストリームを Lambda関数と関連付けます。このイベントソースのマッピングを作成すると、AWS Lambda はストリームのポーリングを開始します。
・エンドツーエンドエクスペリエンスのテスト
テーブルの更新を実行すると、DynamoDB はイベントレコードをストリームに書き込みます。ストリームをポーリングしている AWS Lambda は、ストリームで新しいレコードを検出し、イベントを Lambda 関数に渡して、ユーザーに代わって関数を実行することをテストして確認すればOKです。

 

 

 

DynamoDBとLambdaを連携させるユースケース

■DynamoDB Cross-region Replication
DBの内容を離れた場所にある複数のデータセンターにあるDBにコピーをいつも保持するというCross-region Replicationには、下記のようなニーズがあります。
・Disaster Recovery : 大地震などによりデータセンターに障害が発生した場合にでも、もうひとつのリージョンのDBに切り替えて機能提供を続けることを可能にする
・エッジ機能: いくつもの地域に拠点を多展開している大企業の場合、それぞれの拠点に近いデータセンターのDBへアクセスすることにより、一箇所のデータセンターへアクセスが集中する場合よりも高速なデータアクセスを提供することを可能とする

■DBへの書き込みに応じて値チェックをしつつ別テーブルを更新・プッシュ通知等を実施
DynamoDBの更新状況の監査ログをS3に保存する、ゲームのランキング集計を非同期に実施するなど、DBへの書き込みタイミングに、その都度、値チェックを行ったり、データのコピーを保存するなどの処理を実行させたいことがあります。

 

 

 

本サイト上に掲載されているまとめ記事が、毎週ステップメールで受け取ることもできます。

 

参考文献