Amazon Cognito
開発者ガイド

Lambda トリガーを使用したユーザープールワークフローのカスタマイズ

AWS Lambda 関数を作成し、この関数をユーザーのサインアップ、確認、サインイン (認証) などのユーザープールオペレーションでトリガーできます。この場合、Lambda トリガーを使用します。認証チャレンジの追加、ユーザーの移行、検証メッセージのカスタマイズを行うことができます。

以下の表は、可能ないくつかのカスタマイズをまとめたものです。

ユーザープールフロー オペレーション 説明

カスタム認証フロー

認証チャレンジの定義 カスタム認証フローでの次のチャレンジを決定する
認証チャレンジの作成 カスタム認証フローでのチャレンジを作成する
認証チャレンジレスポンスの確認 カスタム認証フローでのレスポンスが正しいかどうかを判断する
認証イベント 認証前 Lambda トリガー サインインリクエストを承認または拒否するカスタム検証
認証後 Lambda トリガー カスタム分析用のイベントログ記録
トークン生成前 Lambda トリガー トークンクレームを拡張または抑制する
サインアップ サインアップ前 Lambda トリガー サインアップリクエストを承認または拒否するカスタム検証
確認後 Lambda トリガー カスタム分析用のカスタムウェルカムメッセージまたはイベントログ記録
ユーザー移行 Lambda トリガー 既存のユーザーディレクトリからユーザープールにユーザーを移行する
メッセージ カスタムメッセージ Lambda トリガー メッセージの高度なカスタマイズとローカライズ
トークンの作成 トークン生成前 Lambda トリガー ID トークンの属性を追加または削除する

重要な考慮事項

Lambda 関数の使用を開始する前に、次の情報を考慮することが重要です。

  • Amazon Cognito は Lambda 関数を同期的に呼び出します。Lambda 関数は、呼び出されると 5 秒以内に応答します。応答しない場合は、Amazon Cognito は呼び出しを再試行します。試行が 3 回失敗すると、関数はタイムアウトします。この 5 秒のタイムアウト値は変更できません。詳細については、「Lambda プログラミングモデル」を参照してください。

  • AWS Lambda トリガーを削除した場合は、ユーザープール内の対応するトリガーを更新する必要があります。たとえば、認証後トリガーを削除した場合は、ユーザープール内の対応する認証後トリガーを [なし] に設定する必要があります。

  • Lambda トリガーによってスローされたエラーは、エンドユーザーが Amazon Cognito でホストされた UI を使用している場合、コールバック URL でクエリパラメータとして直接表示されます。推奨されるベストプラクティスとして、エンドユーザー向けエラーが Lambda トリガーからスローされ、機密情報またはデバッグ情報が Lambda トリガー自体に記録される必要があります。

ユーザープールの Lambda トリガーの追加

コンソールを使用してユーザープールの Lambda トリガーを追加するには

  1. Lambda コンソールを使用して Lambda 関数を作成します。Lambda 関数の詳細については、「AWS Lambda Developer Guide」を参照してください。

  2. Amazon Cognito コンソールに移動し、[ユーザープールの管理] を選択します。

  3. リストから既存のユーザープールを選択するか、ユーザープールを作成します。

  4. ユーザープールで、ナビゲーションバーの [トリガー] タブを選択します。

  5. [サインアップ前] や [認証前] などの Lambda トリガーを選択し、[Lambda 関数] ドロップダウンリストから Lambda 関数を選択します。

  6. [Save changes] を選択します。

  7. Lambda コンソールで CloudWatch を使用して Lambda 関数のログを記録できます。詳細については、「Lambda の CloudWatch Logs へのアクセス」を参照してください。

ユーザープールの Lambda トリガーイベント

Amazon Cognito は Lambda 関数にイベント情報を渡し、関数は同じイベントオブジェクトを、変更があった場合はレスポンスに含めて、Amazon Cognito に戻します。次のイベントは、Lambda トリガーの一般的なパラメータを示しています。

JSON
JSON
{ "version": number, "triggerSource": "string", "region": AWSRegion, "userPoolId": "string", "userName": "string", "callerContext": { "awsSdkVersion": "string", "clientId": "string" }, "request": { "userAttributes": { "string": "string", .... } }, "response": {} }

ユーザープールの Lambda トリガーの一般的なパラメータ

バージョン

Lambda 関数のバージョン番号。

triggerSource

Lambda 関数をトリガーしたイベントの名前。各 triggerSource の説明については、「ユーザープールの Lambda トリガーのソース」を参照してください。

リージョン

AWS リージョン (AWSRegion インスタンス)。

userPoolId

ユーザープールの ID。

ユーザー名

現在のユーザーの名前。

callerContext

以下の変数で構成された呼び出し元コンテキスト。

awsSdkVersion

AWS SDK のバージョン番号。

clientId

ユーザープールに関連付けられたクライアントの ID。

リクエスト

Amazon Cognito サービスからのリクエスト。このリクエストには以下の変数を含める必要があります。

userAttributes

ユーザー属性を表す 1 つ以上の名前 - 値ペア。各ペアは "名前": "" という形式になります。

レスポンス

Lambda トリガーからのレスポンス。レスポンスで返されるパラメータは、トリガーイベントによって異なります。

ユーザープールの Lambda トリガーのソース

このセクションでは、各 Amazon Cognito Lambda triggerSource パラメータとそのトリガーイベントについて説明します。

サインアップ、確認、およびサインイン (認証) トリガー

トリガー triggerSource 値 トリガーイベント
サインアップ前 PreSignUp_SignUp サインアップ前.
サインアップ前 PreSignUp_AdminCreateUser 管理者が新しいユーザーを作成するときのサインアップ前
確認後 PostConfirmation_ConfirmSignUp サインアップの確認後。
確認後 PostConfirmation_ConfirmForgotPassword パスワードを忘れた場合の確認後。
認証前 PreAuthentication_Authentication 認証前.
認証後 PostAuthentication_Authentication 認証後.

カスタム認証チャレンジトリガー

トリガー triggerSource 値 トリガーイベント
認証チャレンジの定義 DefineAuthChallenge_Authentication 認証チャレンジの定義.
認証チャレンジの作成 CreateAuthChallenge_Authentication 認証チャレンジの作成.
認証チャレンジの検証。 VerifyAuthChallengeResponse_Authentication 認証チャレンジレスポンスの確認.

トークン生成前トリガー

トリガー triggerSource 値 トリガーイベント
トークン生成前 TokenGeneration_HostedAuth 認証時に Amazon Cognito でホストされた UI のサインインページから呼び出されます。
トークン生成前 TokenGeneration_Authentication ユーザー認証フローが完了した後に呼び出されます。
トークン生成前 TokenGeneration_NewPasswordChallenge 管理者によってユーザーが作成された後に呼び出されます。このフローは、ユーザーが一時パスワードを変更する必要があるときに呼び出されます。
トークン生成前 TokenGeneration_AuthenticateDevice ユーザーデバイスの認証の終了時に呼び出されます。
トークン生成前 TokenGeneration_RefreshTokens ユーザーが ID およびアクセスのトークンを更新しようとしたときに呼び出されます。

移行ユーザートリガー

トリガー triggerSource 値 トリガーイベント
ユーザー移行 UserMigration_Authentication サインイン時のユーザー移行
ユーザー移行 UserMigration_ForgotPassword パスワードを忘れた場合のフロー実行時のユーザー移行

カスタムメッセージトリガー

トリガー triggerSource 値 トリガーイベント
カスタムメッセージ CustomMessage_SignUp カスタムメッセージ - サインアップ後に確認コードを送信するため.
カスタムメッセージ CustomMessage_AdminCreateUser カスタムメッセージ – 新規ユーザーに一時パスワードを送信するため.
カスタムメッセージ CustomMessage_ResendCode カスタムメッセージ – 既存ユーザーに確認コードを再送するため.
カスタムメッセージ CustomMessage_ForgotPassword カスタムメッセージ - 忘れたパスワードのリクエスト用の確認コードを送信するため.
カスタムメッセージ CustomMessage_UpdateUserAttribute カスタムメッセージ - ユーザーの E メールまたは電話番号が変更されると、このトリガーは検証コードをそのユーザーに自動的に送信します。他の属性には使用できません。
カスタムメッセージ CustomMessage_VerifyUserAttribute カスタムメッセージ – ユーザーが手動で新しい E メールや電話番号の認証コードをリクエストすると、このトリガーからユーザーに認証コードが送信されます。
カスタムメッセージ CustomMessage_Authentication カスタムメッセージ - 認証時に MFA コードを送信するため.