Amazon DynamoDB グローバルテーブルからのストリームを処理する AWS Lambda トリガーを作成したいと考えています。
解決方法
DynamoDB グローバルテーブルは、複数のリージョンにまたがる単一アカウントのレプリカのコレクションです。グローバルテーブルは、DynamoDB Streams を使用して異なるリージョン間でデータをレプリケートします。グローバルテーブルのレプリカを作成すると、ストリームがデフォルトで作成されます。レプリカに対する変更は、DynamoDB Streams を使用して 1 秒以内に同じグローバルテーブル内の他のすべてのレプリカにレプリケートされます。
注: 任意の 1 つのリージョンのいずれかのグローバルテーブルレプリカに 1 つのコンシューマーがあるだけで、すべての項目の変更レコードを取得できます。
次の手順を実行して、グローバルテーブルレプリカからのストリームを処理するように AWS Lambda トリガーを設定できます。
- AWSLambdaDynamoDBExecutionRole に必要な AWS Identity and Access Management (IAM) の許可があることを確認してください。
注: デフォルトでは、AWSLambdaDynamoDBExecutionRole IAM ポリシーには、Lambda が Amazon Simple Notification Service (Amazon SNS) などの他のサービスと通信するための許可がありません。これは、Lambda ターゲットに基づいて、必要な追加の許可を追加する必要があることを意味します。
- ブループリント dynamodb-process-stream を使用して Lambda 関数を作成します。ストリームデータを処理する要件に応じて Lambda コードを変更できます。
- Lambda 関数を正常に作成したら、DynamoDB コンソールを開き、グローバルテーブルレプリカを選択します。[Exports and streams] (エクスポートとストリーム) タブで、[Create trigger] (トリガーを作成) を選択します。その後、前のステップで作成した Lambda 関数を選択します。トリガーの作成後にトリガーがアクティブ化されるように、必ず [Enable trigger] (トリガーを有効にする) を選択してください。
これで、Lambda 関数がグローバルテーブルレプリカのトリガーとして設定されました。レプリカに対するすべての変更はストリームによってキャプチャされ、トリガーが呼び出されます。
関連情報
DynamoDB Streams と AWS Lambda のトリガー