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

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

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

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

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

カスタム認証フロー

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

重要な考慮事項

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

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

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

  • カスタム送信者の Lambda トリガーを除き、Lambda トリガーによってスローされたエラーは、エンドユーザーが Amazon Cognito のホストされた UI を使用している場合、コールバック URL のクエリパラメータとしてエンドユーザーに直接表示されます。推奨されるベストプラクティスとして、エンドユーザー向けエラーは Lambda トリガーからスローされ、機密情報またはデバッグ情報は Lambda トリガー自体にログされるようにしてください。

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

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

  1. Lambda コンソールを使用して Lambda 関数を作成します。Lambda 関数の詳細については、AWS Lambda デベロッパーガイドを参照してください。

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

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

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

  5. [Pre sign-up] (サインアップ前) または [Pre authentication] (認証前) などの Lambda トリガーを選択し、[Lambda function] (Lambda 関数) ドロップダウンリストから Lambda 関数を選択します。

  6. [Save changes] (変更を保存) をクリックします。

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

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

Amazon Cognito は Lambda 関数にイベント情報を渡し、Lambda 関数はレスポンスで同じイベントオブジェクトを変更と共に Amazon Cognito に返します。以下のイベントは、Lambda トリガーの一般的なパラメータを示しています。

JSON
{ "version": "string", "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。

userName

現在のユーザーの名前。

callerContext

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

awsSdkVersion

AWS SDK のバージョン番号。

clientId

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

リクエスト

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

userAttributes

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

レスポンス

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

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

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

サインアップ、確認、およびサインイン (認証) トリガー
トリガー triggerSource 値 トリガーイベント
サインアップ前 PreSignUp_SignUp サインアップ前。
サインアップ前 PreSignUp_AdminCreateUser 管理者が新しいユーザーを作成するときのサインアップ前
サインアップ前 PreSignUp_ExternalProvider 外部 ID プロバイダーのサインアップ前。
確認後 PostConfirmation_ConfirmSignUp サインアップの確認後。
確認後 PostConfirmation_ConfirmForgotPassword パスワードを忘れた場合の確認後。
認証前 PreAuthentication_Authentication 認証前.
認証後 PostAuthentication_Authentication 認証後.
カスタム認証チャレンジトリガー
Trigger triggerSource 値 トリガーイベント
認証チャレンジの定義 DefineAuthChallenge_Authentication 認証チャレンジの定義.
認証チャレンジの作成 CreateAuthChallenge_Authentication 認証チャレンジの作成.
認証チャレンジの検証。 VerifyAuthChallengeResponse_Authentication 認証チャレンジレスポンスの確認.
トークン生成前トリガー
Trigger triggerSource 値 トリガーイベント
トークン生成前 TokenGeneration_HostedAuth 認証時に Amazon Cognito のホストされた UI のサインインページから呼び出されます。
トークン生成前 TokenGeneration_Authentication ユーザー認証フローが完了した後に呼び出されます。
トークン生成前 TokenGeneration_NewPasswordChallenge 管理者によってユーザーが作成された後に呼び出されます。このフローは、ユーザーが一時パスワードを変更する必要があるときに呼び出されます。
トークン生成前 TokenGeneration_AuthenticateDevice ユーザーデバイスの認証の終了時に呼び出されます。
トークン生成前 TokenGeneration_RefreshTokens ユーザーが ID およびアクセスのトークンを更新しようとしたときに呼び出されます。
移行ユーザートリガー
Trigger triggerSource 値 トリガーイベント
ユーザー移行 UserMigration_Authentication サインイン時のユーザー移行
ユーザー移行 UserMigration_ForgotPassword パスワードを忘れた場合のフロー実行時のユーザー移行
カスタムメッセージトリガー
Trigger triggerSource 値 トリガーイベント
カスタムメッセージ CustomMessage_SignUp カスタムメッセージ - サインアップ後に確認コードを送信するため.
カスタムメッセージ CustomMessage_AdminCreateUser カスタムメッセージ – 新規ユーザーに一時パスワードを送信するため.
カスタムメッセージ CustomMessage_ResendCode カスタムメッセージ – 既存ユーザーに確認コードを再送するため.
カスタムメッセージ CustomMessage_ForgotPassword カスタムメッセージ - 忘れたパスワードのリクエスト用の確認コードを送信するため.
カスタムメッセージ CustomMessage_UpdateUserAttribute カスタムメッセージ - ユーザーの E メールまたは電話番号が変更されると、このトリガーは検証コードをそのユーザーに自動的に送信します。他の属性には使用できません。
カスタムメッセージ CustomMessage_VerifyUserAttribute カスタムメッセージ – ユーザーが手動で新しい E メールや電話番号の認証コードをリクエストすると、このトリガーからユーザーに認証コードが送信されます。
カスタムメッセージ CustomMessage_Authentication カスタムメッセージ - 認証時に MFA コードを送信するため.