AWS Cognitoとは
AWSでユーザ管理、フェデレーションなどを簡単に実施可能なとても便利なサービスです。
ID連携とかもできるので、今後も色々利用していきたいです。
マネジメントコンソールでのユーザ管理
ユーザ作成、インポート、パスワードリセットなど、基本的なことは
AWSのマネジメントコンソールで実施可能です。
但し、使用可能なユーザをすぐに作成するには、少しステップが必要です。
ユーザの承認
Cognitoのユーザは、以下に記載のとおり、ステータスを持ちます。
https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/signing-up-users-in-your-app.html
マネジメントコンソールでユーザを作成した場合、ここでいう
"Registered(cannot sign in)"
の状態になります。
Cognitoにサインインできるようにするには、いずれかが必要です。
1.Email/TELによる承認
2.管理者による承認
3.LambdaでPreSignupイベントをトリガーとして承認
はい、ということでタイトルにつながります。
「3」を実施することで、マネジメントコンソールでユーザ作成すると同時に、
サインインが可能とすることができます。
どういうことか
マネジメントコンソールでユーザが作成されると、"Pre-Signup"イベントが発生します。
そのイベントをトリガーに、Lambdaが実行されるようにします。
(Cognitoのユーザ作成処理をフックするイメージです)
そして、Lambdaでユーザの承認ステータスを変更することで、
Cognitoはユーザが承認されたと判断し、ユーザがすぐ利用できるようになる、ということです。
Lambdaを作る
では、Lambdaを作ります。
Cognitoで作成されたユーザのイベントデータを変更し、Cognitoに返してやります。
var AWS = require('aws-sdk');
exports.handler = (event, context, callback) => {
var confirm = {
"autoConfirmUser": true, // 承認ステータス変更
"autoVerifyEmail": true // Emailを検証済みとする
};
event.response = confirm;
context.done(null, event);
};
承認ステータスだけでもOKです。
Emailとかも一緒に検証済みにしてしまいたい場合は、一緒にできます。
Cognitoイベントに設定する
Cognitoのユーザープール内で「トリガー」-「サインアップ前」を確認し、
先ほど作成したLambdaを選択します。
以上でOKです。簡単ですね。
これで、Cognitoのユーザ管理が楽になりました。