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

ステップ 3: イベントソースを追加する (DynamoDB ストリームを作成し、それを Lambda 関数と関連付ける)

このセクションでは、以下の作業を行います。

  • ストリームが有効になった Amazon DynamoDB テーブルを作成します。

  • AWS Lambda でイベントソースマッピングを作成します。このイベントソースのマッピングは、DynamoDB ストリームを Lambda関数と関連付けます。このイベントソースのマッピングを作成すると、AWS Lambda はストリームのポーリングを開始します。

  • エンドツーエンドエクスペリエンスをテストします。テーブルの更新を実行すると、DynamoDB はイベントレコードをストリームに書き込みます。ストリームをポーリングしている AWS Lambda は、ストリームで新しいレコードを検出し、イベントを Lambda 関数に渡して、ユーザーに代わって関数を実行します。

ステップ 3.1: ストリームが有効になった DynamoDB テーブルを作成する

ストリームとともにテーブルを作成する手順に従います。

  1. AWS マネジメントコンソール にサインインし、DynamoDB コンソール (https://console.aws.amazon.com/dynamodb/) を開きます。

  2. DynamoDB コンソールで、ストリームを有効にしてテーブルを作成します。テーブルを作成する前に、米国東部(バージニア北部) リージョンが選択されていることを確認します。

    重要

    DynamoDB テーブルは、Lambda 関数を作成したのと同じリージョンで作成する必要があります。このチュートリアルでは、米国東部(バージニア北部) リージョンであることを前提としています。さらに、テーブルと Lambda 関数の両方が、同じ AWS アカウントに属している必要があります。

  3. ストリーム ARN をメモします。次のセクションでストリームを Lambda 関数と関連付ける際に、これが必要になります。

ステップ 3.2: AWS Lambda でイベントソースを追加する

次の AWS CLI create-event-source-mapping コマンドを実行します。コマンドを実行したら、UUID を書き留めてください。この UUID は、イベントソースマッピングを削除するときなど、コマンドでイベントソースマッピングを参照する場合に必要になります。

Copy
$ aws lambda create-event-source-mapping \ --region us-east-1 \ --function-name ProcessDynamoDBStream \ --event-source DynamoDB-stream-arn \ --batch-size 100 \ --starting-position TRIM_HORIZON \ --profile adminuser

注記

これにより、指定された DynamoDB ストリームと Lambda 関数の間にマッピングが作成されます。DynamoDB ストリームを複数の Lambda 関数と関連付け、同じ Lambda 関数を複数のストリームと関連付けることができます。ただし、Lambda 関数は、共有するストリーム用に、読み取りスループットを共有します。

次のコマンドを実行して、イベントソースのマッピングのリストを取得できます。

Copy
$ aws lambda list-event-source-mappings \ --region us-east-1 \ --function-name ProcessDynamoDBStream \ --event-source DynamoDB-stream-arn \ --profile adminuser

このリストでは、作成済みのすべてのイベントソースのマッピングが返され、各マッピングに対して LastProcessingResult などが示されます。問題がある場合、このフィールドは情報メッセージを提供するために使用されます。No records processed (AWS Lambda がポーリングを開始していないか、ストリームにレコードがないことを示す) や、OK (AWS Lambda がストリームから正常にレコードを読み取り、Lambda 関数を呼び出したことを示す) など値は、問題がないことを示しています。問題がある場合は、エラーメッセージが返されます。

ステップ 3.3: セットアップのテスト

すべて完了しました。これで adminuser は次のように設定をテストできます。

  1. DynamoDB コンソールで、テーブルに項目を追加、更新、削除します。DynamoDB はストリームにこれらのアクションのレコードを書き込みます。

  2. AWS Lambda は、ストリームをポーリングし、ストリームの更新を検出すると、ストリームで見つかったイベントデータを渡して Lambda 関数を呼び出します。

  3. 関数が実行され、Amazon CloudWatch でログが作成されます。adminuser は、Amazon CloudWatch コンソールで報告されたログを確認することもできます。