ある企業の Cognito ユーザープールでは、ユーザーサインアップ時に企業ドメイン(@example.com)のメールアドレスのみ許可したいと考えています。また、サインアップ承認前にカスタム検証ロジックを実行したいという要件があります。最もサーバーレスな実装方法はどれですか?
- A. Cognito ユーザープールの Pre-SignUp Lambda トリガーを設定し、Lambda 内でメールドメインを検証して不正なドメインの場合は例外をスローする
- B. API Gateway + Lambda でカスタムサインアップエンドポイントを構築し Cognito AdminCreateUser を呼び出す
- C. Cognito ユーザープールのパスワードポリシーにメールドメイン制限を追加する
- D. Cognito ユーザープールのグループ機能を使い、@example.com ドメインのユーザーのみ対象グループに手動追加する
解答と解説を見る
正解: A
Cognito ユーザープールの Pre-SignUp Lambda トリガーはサインアップリクエストが処理される前に Lambda 関数を呼び出します。Lambda 内でメールアドレスのドメインを検証し、許可されないドメインの場合は例外(Error)をスローすることでサインアップをブロックできます。カスタムバリデーションロジックをサーバーレスで実装できる公式の拡張ポイントです。C の Cognito パスワードポリシーはパスワードの形式設定であり、メールドメインのフィルタリングはできません。B の API Gateway + Lambda を構築する方法は機能しますが、Cognito 標準トリガーを使わない過剰な実装で運用負荷が高くなります。D の手動グループ追加は自動検証ではなく、スケールしません。
📚 関連サービスの解説: Amazon Cognito ・ AWS Lambda