翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
サインアップ前の Lambda トリガー
セルフサービスのサインアップオプションがあるユーザープールでサインアッププロセスをカスタマイズすることもできます。サインアップ前トリガーの一般的な用途としては、新規ユーザーのカスタム分析と記録の実行、セキュリティとガバナンスの基準の適用、サードパーティーの IdP から統合されたユーザープロファイル へのユーザーリンクなどがあります。また、検証と確認を受ける必要がない信頼できるユーザーが存在する場合もあります。
Amazon Cognito が新しいローカルユーザーまたはフェデレーティッドユーザーをサインアップする直前に、サインアップ前の Lambda 関数をアクティブ化します。サインアッププロセスの一環として、この関数を使用してカスタムロジックでサインインイベントを分析し、新しいユーザーを変更または拒否できます。
トピック
サインアップ前の Lambda フロー
クライアントのサインアップフロー
サーバーのサインアップフロー
リクエストには、クライアントからの検証データが含まれます。このデータは、ユーザープール SignUp と AdminCreateUser APIメソッドに渡されたValidationData
値から取得されます。
サインアップ前の Lambda トリガーのパラメータ
Amazon Cognito がこの Lambda 関数に渡すリクエストは、以下のパラメータと Amazon Cognito がすべてのリクエストに追加する共通パラメータを組み合わせたものです。
サインアップ前のリクエストパラメータ
- userAttributes
-
ユーザー属性を表す 1 つ以上の名前 - 値ペア。属性名はキーです。
- validationData
-
新しいユーザーの作成リクエストでアプリケーションから Amazon Cognito に渡したユーザー属性データを示す 1 つ以上のキーと値のペアです。AdminCreateUser または SignUpAPIリクエストの ValidationData パラメータでこの情報を Lambda 関数に送信します。
Amazon Cognito は、作成したユーザーの属性として ValidationData データを設定しません。 ValidationData は、サインアップ前の Lambda トリガーのために指定した一時的なユーザー情報です。
- clientMetadata
-
サインアップ前のトリガーに指定する Lambda 関数へのカスタム入力として提供できる 1 つ、または複数のキー/値ペア。このデータを Lambda 関数に渡すには、、AdminCreateUser、AdminRespondToAuthChallenge、ForgotPasswordおよび のAPIアクションで ClientMetadataパラメータを使用しますSignUp。
サインアップ前のレスポンスパラメータ
ユーザーを自動的に確認する場合は、レスポンスで autoConfirmUser
を true
に設定できます。autoVerifyEmail
を true
に設定してユーザーの E メールを自動検証できます。autoVerifyPhone
を true
に設定してユーザーの電話番号を自動検証できます。
注記
事前サインアップ Lambda 関数autoConfirmUser
が によってトリガーされるとautoVerifyPhone
、レスポンスパラメータ autoVerifyEmail
および は Amazon Cognito AdminCreateUser
によって無視されますAPI。
- 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 Identity SDK | Android でのユーザーのサインアップ |
iOS Identity 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 メールアドレスの場合も同様です。これを防ぐために、ユーザープールを使用して、新しいユーザーの電話番号または E メールアドレスをエイリアスとして既に使用している既存のユーザーがいるListUsers APIかどうかを確認することができます。
Amazon Cognito は Lambda 関数にイベント情報を渡します。関数はレスポンスで、同じイベントオブジェクトを変更と共に Amazon Cognito に返します。Lambda コンソールで、Lambda トリガーに関連するデータを使用したテストイベントをセットアップできます。以下は、このコードサンプルのテストイベントです。
サインアップ前の例:ユーザー名が 5 文字未満の場合にサインアップを拒否する
次の例は、サインアップリクエストのユーザー名の長さを調べます。次の例は、ユーザーが 5 文字未満の名前を入力した場合、エラーを返します。
Amazon Cognito は Lambda 関数にイベント情報を渡します。関数はレスポンスで、同じイベントオブジェクトを変更と共に Amazon Cognito に返します。Lambda コンソールで、Lambda トリガーに関連するデータを使用したテストイベントをセットアップできます。以下は、このコードサンプルのテストイベントです。