Cognito Email Restriction - knpy/yuka-app GitHub Wiki
特定のメールアドレスのみがサインアップできるように制限するLambda関数の設定。
exports.handler = async (event) => {
console.log('Pre-sign-up trigger event:', JSON.stringify(event, null, 2));
// 許可されたメールアドレスのリスト
const allowedEmails = [
'[email protected]',
// 必要に応じて追加
];
const userEmail = event.request.userAttributes.email;
if (!allowedEmails.includes(userEmail)) {
throw new Error(`アクセスが許可されていないメールアドレスです: ${userEmail}`);
}
// 許可されている場合はそのまま通す
return event;
};
-
Function name:
cognito-pre-signup-email-restriction
- Runtime: Node.js 18.x
- Handler: index.handler
基本のLambda実行権限に加えて、必要に応じてCloudWatch Logsの権限を付与。
- Cognito User Pool コンソールにアクセス
- User pool properties → Lambda triggers
- Pre sign-up に作成したLambda関数を設定
- テスト用の許可されたメールアドレスでサインアップテスト
- 許可されていないメールアドレスでのサインアップ拒否をテスト
Lambda関数で環境変数を使用して許可メールアドレスを管理:
const allowedEmails = process.env.ALLOWED_EMAILS ?
process.env.ALLOWED_EMAILS.split(',').map(email => email.trim()) :
['[email protected]'];
環境変数 ALLOWED_EMAILS
に以下のように設定:
-
Lambda関数が実行されない
- User Poolのトリガー設定を確認
- Lambda関数の権限設定を確認
-
エラーメッセージが表示されない
- CloudWatch Logsでエラーログを確認
- エラーメッセージの形式を確認
-
許可されたユーザーもブロックされる
- メールアドレスの大文字小文字を確認
- 空白文字の確認
- 許可メールアドレスのリストは環境変数で管理
- CloudWatch Logsでの機密情報ログ出力に注意
- 定期的な許可リストの見直し