メニュー
AWS Lambda
開発者ガイド

Amazon DynamoDB で AWS Lambda を使用する

Amazon DynamoDB テーブルに対して、Lambda 関数をトリガーとして使用できます。トリガーは、DynamoDB テーブルに対して行われた更新に応じて行うカスタムアクションです。トリガーを作成するには、まずテーブルに対して Amazon DynamoDB Streams を有効にします。次に、ストリームに対して発行する更新を処理する Lambda 関数を記述します。

Amazon DynamoDB と AWS Lambda の連携動作については、以下の点に注意してください。

  • ストリームベースモデル – これは、AWS Lambda がストリームをポーリングし、新しいレコードを検出すると、更新イベントをパラメーターとして渡して Lambda 関数を呼び出すモデル (「イベントソースマッピング」を参照) です。

    ストリームベースモデルでは、AWS Lambda にイベントソースマッピングを維持します。イベントソースマッピングには、ストリームから Lambda 関数へのマッピングが記述されています。AWS Lambda では、マッピングを作成するための API (CreateEventSourceMapping) が提供されています。AWS Lambda コンソールを使用してイベントソースのマッピングを作成することもできます。

  • 同期呼び出し – AWS Lambda は、RequestResponse 呼び出しタイプ (同期呼び出し) を使用して Lambda 関数を呼び出します。呼び出しタイプの詳細については、「呼び出しタイプ」を参照してください。

  • イベント構造 – Lambda 関数が受け取るイベントは、AWS Lambda がストリームから読み取るテーブル更新情報です。イベントソースマッピングを設定する際に指定するバッチサイズは、Lambda 関数の呼び出しごとに受け取るレコードの最大数です。

Lambda 関数の呼び出し元と関係なく、ユーザーの代わりに常に AWS Lambda が Lambda 関数を実行します。Lambda 関数で AWS リソースにアクセスする必要がある場合は、それらのリソースにアクセスするためのアクセス権限を付与する必要があります。AWS Lambda に、DynamoDB ストリームをポーリングするアクセス権限も付与する必要があります。AWS Lambda がストリームをポーリングし、ユーザーの代わりに Lambda 関数を実行するために使用できるアクセス権限をすべて IAM ロール (実行ロール) に付与します。このロールを作成した後、Lambda 関数の作成時にこのロールを有効にします。詳細については、「アクセス権限の管理: IAM ロール (実行ロール) を使用する」を参照してください。

次の図はアプリケーションフローを示しています。

  1. カスタムアプリケーションによって DynamoDB テーブルが更新されます。

  2. Amazon DynamoDB は項目の更新をストリームに発行します。

  3. AWS Lambda はストリームをポーリングし、ストリームで新しいレコードを検出すると Lambda 関数を呼び出します。

  4. AWS Lambda は、Lambda 関数の作成時に指定した実行ロールを引き受けることにより、Lambda 関数を実行します。

セットアップの例を説明しているチュートリアルについては、「チュートリアル: Amazon DynamoDB で AWS Lambdaを使用する」を参照してください。