Lambda で DynamoDB レコードを処理する
イベントソースマッピングを作成し、ストリームから Lambda 関数にレコードを送信するように Lambda に通知します。複数のイベントソースマッピングを作成することで、複数の Lambda 関数で同じデータを処理したり、1 つの関数で複数のストリームの項目を処理したりできます。
DynamoDB ストリームから読み取るように関数を設定するには、「AWSLambdaDynamoDBExecutionRole」 AWS 管理ポリシーを実行ロールにアタッチし、[DynamoDB] トリガーを作成します。
アクセス許可を追加してトリガーを作成するには
Lambda コンソールの関数ページ
を開きます。 -
関数の名前を選択します。
-
[Configuration] (設定) タブを開き、次に [Permissions] (アクセス許可) をクリックします。
-
[実行ロール] で、実行ロールのリンクを選択します。このリンクを選択すると、IAM コンソールでロールが開きます。
-
[アクセス許可を追加]、[ポリシーをアタッチ] の順に選択します。
-
[検索] フィールドに
AWSLambdaDynamoDBExecutionRole
を入力します。実行ロールにポリシーを追加 関数が DynamoDB ストリームから読み取るために必要な許可を含む AWS 管理ポリシーです。このポリシーの詳細については、「AWS 管理ポリシーリファレンス」の「AWSLambdaDynamoDBExecutionRole」を参照してください。 -
Lambda コンソールの関数に戻ります。[関数の概要] で [トリガーを追加] をクリックします。
-
トリガーのタイプを選択します。
-
必須のオプションを設定し、[Add] (追加) を選択します。
Lambda は、DynamoDB イベントソースの次のオプションをサポートしています。
イベントソースオプション
-
DynamoDB テーブル - レコードの読み取り元の DynamoDB テーブル。
-
バッチサイズ - 各バッチで関数に送信されるレコードの数。最大 10,000。Lambda は、イベントの合計サイズが同期呼び出しのペイロード上限 (6 MB) を超えない限り、バッチ内のすべてのレコードを単一の呼び出しで関数に渡します。
バッチウィンドウ - 関数を呼び出す前にレコードを収集する最大時間(秒数)を指定します。
-
開始位置 - 新規レコードのみ、または既存のすべてのレコードを処理します。
-
最新 - ストリームに追加された新しいレコードを処理します。
-
水平トリム - ストリーム内のすべてのレコードを処理します。
既存のレコードを処理した後、関数に戻り、新しいレコードの処理が続行されます。
-
[障害発生時の宛先] — 処理できないレコードの標準 SQS キューまたは標準 SNS トピックです。Lambda は、古すぎる、または再試行回数の上限に達したレコードのバッチを廃棄すると、バッチに関する詳細をキューまたはトピックに送信します。
再試行回数 - 関数がエラーを返したときに Lambda が再試行する回数の上限です。これは、バッチが関数に到達しなかったサービスエラーやスロットルには適用されません。
レコードの最大有効期間 — Lambda が関数に送信するレコードの最大経過時間。
エラー発生時のバッチ分割 — 関数がエラーを返した場合、再試行する前にバッチを 2 つに分割します。元のバッチサイズ設定は変更されません。
シャードごとの同時バッチ — 同じシャードからの複数のバッチを同時に処理します。
-
有効 - イベントソースマッピングを有効にするには、true に設定します。レコードの処理を停止するには、false に設定します。Lambda は、処理された最新のレコードを追跡し、マッピングが再度有効になるとその時点から処理を再開します。
注記
DynamoDB トリガーの一部として Lambda によって呼び出される GetRecords API コールに対しては、料金は発生しません。
後でイベントソース設定を管理するには、デザイナーでトリガーを選択します。