Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

DynamoDB Lambdaとの連携

More than 3 years have passed since last update.

DynamoDBに関する基本的な内容をまとめてみたものです。DynamoDBに関する、Web上にすでにある解説コンテンツをまとめたサイトの抜粋です。
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への書き込みタイミングに、その都度、値チェックを行ったり、データのコピーを保存するなどの処理を実行させたいことがあります。

uenohara
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away