サインアップ前の Lambda トリガー
セルフサービスのサインアップオプションがあるユーザープールでサインアッププロセスをカスタマイズする場合があります。サインアップ前トリガーの一般的な用途は、新規ユーザーのカスタム分析と記録の実行、セキュリティとガバナンスの基準の適用、またはサードパーティー IdP から統合されたユーザープロファイルへのユーザーのリンクです。また、検証と確認を受ける必要がない信頼されたユーザーが存在する場合もあります。
Amazon Cognito は、新しいローカルユーザーやフェデレーションユーザーをサインアップする直前に、サインアップ前の Lambda 関数をアクティブにします。サインアッププロセスの一環として、この関数を使用してカスタムロジックでのサインインイベントの分析や、新しいユーザーの変更または拒否ができます。
トピック
サインアップ前の Lambda フロー
クライアントのサインアップフロー
サーバーのサインアップフロー
リクエストには、クライアントからの検証データが含まれます。このデータは、ユーザープールの SignUp と AdminCreateUser の API メソッドに渡された ValidationData
値に基づきます。
サインアップ前の Lambda トリガーのパラメータ
Amazon Cognito がこの Lambda 関数に渡すリクエストは、以下のパラメータと Amazon Cognito がすべてのリクエストに追加する共通パラメータを組み合わせたものです。
サインアップ前のリクエストパラメータ
- userAttributes
-
ユーザー属性を表す 1 つ以上の名前 - 値ペア。属性名はキーです。
- validationData
-
新しいユーザーの作成リクエストでアプリケーションから Amazon Cognito に渡したユーザー属性データを示す 1 つ以上のキーと値のペアです。この情報を AdminCreateUser API リクエストまたは SignUp API リクエストの ValidationData パラメータで Lambda 関数に送信します。
Amazon Cognito は、ValidationData データを、作成したユーザーの属性として設定しません。ValidationData は、サインアップ前 Lambda トリガーのためにユーザーが提供する一時的なユーザー情報です。
- clientMetadata
-
サインアップ前のトリガーに指定する Lambda 関数へのカスタム入力として提供できる 1 つ、または複数のキー/値ペア。このデータは、AdminCreateUser、AdminRespondToAuthChallenge、ForgotPassword、および SignUp の API アクションで ClientMetadata パラメータを使用することによって Lambda 関数に渡すことができます。
サインアップ前のレスポンスパラメータ
ユーザーを自動的に確認する場合は、レスポンスで autoConfirmUser
を true
に設定できます。autoVerifyEmail
を true
に設定してユーザーの E メールを自動検証できます。autoVerifyPhone
を true
に設定してユーザーの電話番号を自動検証できます。
注記
サインアップ前 Lambda 関数が AdminCreateUser
API によってトリガーされる場合、レスポンスパラメータの autoVerifyPhone
、autoVerifyEmail
、および autoConfirmUser
は Amazon Cognito によって無視されます。
- autoConfirmUser
-
ユーザーを自動的に確認する場合は
true
に、それ以外の場合はfalse
に設定します。 - autoVerifyEmail
-
true
に設定すると、サインアップしたユーザーの E メールアドレスを検証済みとして設定します。それ以外の場合はfalse
です。autoVerifyEmail
がtrue
に設定されている場合、email
属性は有効な null 以外の値である必要があります。それ以外の場合はエラーが発生し、ユーザーがサインアップを完了できません。email
属性がエイリアスとして選択されている場合、autoVerifyEmail
が設定されていると、ユーザーの E メールアドレスのエイリアスが自動的に作成されます。その E メールアドレスのエイリアスが既に存在している場合は、エイリアスは新規ユーザーに移動され、以前のユーザーの E メールアドレスは未検証としてマークされます。詳細については、「ログイン属性のカスタマイズ」を参照してください。 - autoVerifyPhone
-
true
に設定すると、サインアップしたユーザーの電話番号を検証済みとして設定します。それ以外の場合はfalse
です。autoVerifyPhone
がtrue
に設定されている場合、phone_number
属性は有効な null 以外の値である必要があります。それ以外の場合はエラーが発生し、ユーザーがサインアップを完了できません。phone_number
属性がエイリアスとして選択されている場合、autoVerifyPhone
が設定されていると、ユーザーの電話番号のエイリアスが自動的に作成されます。その電話番号のエイリアスが既に存在している場合、エイリアスは新規ユーザーに移動され、以前のユーザーの電話番号は未検証としてマークされます。詳細については、「ログイン属性のカスタマイズ」を参照してください。
サインアップのチュートリアル
サインアップ前の Lambda 関数は、ユーザーのサインアップ前にトリガーされます。JavaScript、Android、および iOS に関する以下の Amazon Cognito サインアップチュートリアルを参照してください。
プラットフォーム | チュートリアル |
---|---|
JavaScript ID SDK | JavaScript でのユーザーのサインアップ |
Android ID SDK | Android でのユーザーのサインアップ |
iOS ID SDK | iOS でのユーザーのサインアップ |
サインアップ前の例: 登録済みドメインのユーザーを自動確認する
サインアップ前の Lambda トリガーを使用して、ユーザープールにサインアップする新しいユーザーを検証するためのカスタムロジックを追加できます。これは、新しいユーザーにサインアップする方法を示すサンプルの JavaScript プログラムです。これは認証の一環としてサインアップ前の Lambda トリガーを呼び出します。
以下は、ユーザープールサインアップ前の Lambda トリガーを使用してサインアップ直前に呼び出されるサンプル Lambda トリガーです。これは、カスタム属性の [custom:domain] を使用して特定の E メールドメインからの新しいユーザーを自動的に確認します。このカスタムドメインに属していない新しいユーザーは、ユーザープールには追加されますが、自動的には確認されません。
Amazon Cognito は Lambda 関数にイベント情報を渡します。関数はレスポンスで、同じイベントオブジェクトを変更と共に Amazon Cognito に返します。Lambda コンソールで、Lambda トリガーに関連するデータを使用したテストイベントをセットアップできます。以下は、このコードサンプルのテストイベントです。
サインアップ前の例: すべてのユーザーを自動確認して自動検証する
次の例では、すべてのユーザーを確認し、ユーザーの email
属性と phone_number
属性を検証済みとして設定します (属性が存在する場合)。また、エイリアシングが有効になっている場合は、自動検証が設定されていると、phone_number
および email
にエイリアスが作成されます。
注記
同じ電話番号のエイリアスが既に存在している場合は、エイリアスは新規ユーザーに移動され、以前のユーザーの phone_number
は未検証としてマークされます。E メールアドレスの場合も同様です。これを防ぐには、ユーザープール ListUsers API を使用して既存のユーザーの中に、新しいユーザーの電話番号や E メールアドレスをエイリアスとして既に使用しているユーザーがいないかどうかを確認します。
Amazon Cognito は Lambda 関数にイベント情報を渡します。関数はレスポンスで、同じイベントオブジェクトを変更と共に Amazon Cognito に返します。Lambda コンソールで、Lambda トリガーに関連するデータを使用したテストイベントをセットアップできます。以下は、このコードサンプルのテストイベントです。
サインアップ前の例:ユーザー名が 5 文字未満の場合にサインアップを拒否する
次の例は、サインアップリクエストのユーザー名の長さを調べます。次の例は、ユーザーが 5 文字未満の名前を入力した場合、エラーを返します。
Amazon Cognito は Lambda 関数にイベント情報を渡します。関数はレスポンスで、同じイベントオブジェクトを変更と共に Amazon Cognito に返します。Lambda コンソールで、Lambda トリガーに関連するデータを使用したテストイベントをセットアップできます。以下は、このコードサンプルのテストイベントです。