Lambda で DynamoDB レコードを処理する - AWS Lambda

Lambda で DynamoDB レコードを処理する

イベントソースマッピングを作成し、ストリームから Lambda 関数にレコードを送信するように Lambda に通知します。複数のイベントソースマッピングを作成することで、複数の Lambda 関数で同じデータを処理したり、1 つの関数で複数のストリームの項目を処理したりできます。

DynamoDB ストリームから読み取るように関数を設定するには、「AWSLambdaDynamoDBExecutionRole」 AWS 管理ポリシーを実行ロールにアタッチし、[DynamoDB] トリガーを作成します。

アクセス許可を追加してトリガーを作成するには
  1. Lambda コンソールの関数ページを開きます。

  2. 関数の名前を選択します。

  3. [Configuration] (設定) タブを開き、次に [Permissions] (アクセス許可) をクリックします。

  4. [実行ロール] で、実行ロールのリンクを選択します。このリンクを選択すると、IAM コンソールでロールが開きます。

    実行ロールのリンク
  5. [アクセス許可を追加][ポリシーをアタッチ] の順に選択します。

    IAM コンソールでポリシーのアタッチ
  6. [検索] フィールドに AWSLambdaDynamoDBExecutionRole を入力します。実行ロールにポリシーを追加 関数が DynamoDB ストリームから読み取るために必要な許可を含む AWS 管理ポリシーです。このポリシーの詳細については、「AWS 管理ポリシーリファレンス」の「AWSLambdaDynamoDBExecutionRole」を参照してください。

  7. Lambda コンソールの関数に戻ります。[関数の概要] で [トリガーを追加] をクリックします。

    Lambda コンソールの関数の概要セクション
  8. トリガーのタイプを選択します。

  9. 必須のオプションを設定し、[Add] (追加) を選択します。

Lambda は、DynamoDB イベントソースの次のオプションをサポートしています。

イベントソースオプション
  • DynamoDB テーブル - レコードの読み取り元の DynamoDB テーブル。

  • バッチサイズ - 各バッチで関数に送信されるレコードの数。最大 10,000。Lambda は、イベントの合計サイズが同期呼び出しのペイロード上限 (6 MB) を超えない限り、バッチ内のすべてのレコードを単一の呼び出しで関数に渡します。

  • バッチウィンドウ - 関数を呼び出す前にレコードを収集する最大時間(秒数)を指定します。

  • 開始位置 - 新規レコードのみ、または既存のすべてのレコードを処理します。

    • 最新 - ストリームに追加された新しいレコードを処理します。

    • 水平トリム - ストリーム内のすべてのレコードを処理します。

    既存のレコードを処理した後、関数に戻り、新しいレコードの処理が続行されます。

  • [障害発生時の宛先] — 処理できないレコードの標準 SQS キューまたは標準 SNS トピックです。Lambda は、古すぎる、または再試行回数の上限に達したレコードのバッチを廃棄すると、バッチに関する詳細をキューまたはトピックに送信します。

  • 再試行回数 - 関数がエラーを返したときに Lambda が再試行する回数の上限です。これは、バッチが関数に到達しなかったサービスエラーやスロットルには適用されません。

  • レコードの最大有効期間 — Lambda が関数に送信するレコードの最大経過時間。

  • エラー発生時のバッチ分割 — 関数がエラーを返した場合、再試行する前にバッチを 2 つに分割します。元のバッチサイズ設定は変更されません。

  • シャードごとの同時バッチ — 同じシャードからの複数のバッチを同時に処理します。

  • 有効 - イベントソースマッピングを有効にするには、true に設定します。レコードの処理を停止するには、false に設定します。Lambda は、処理された最新のレコードを追跡し、マッピングが再度有効になるとその時点から処理を再開します。

注記

DynamoDB トリガーの一部として Lambda によって呼び出される GetRecords API コールに対しては、料金は発生しません。

後でイベントソース設定を管理するには、デザイナーでトリガーを選択します。