はじめに
AWS Cognitoでは、管理者がユーザーアカウントを新規作成すると一時パスワードを発行し、ユーザーの初回ログイン時にパスワード変更をさせることができます。
(参考: Creating User Accounts as Administrator)
一時パスワードが記載された招待メッセージをSMSまたはEメールでユーザーに通知できるのですが、気づかぬ内にメールが迷惑メールとして扱われてしまうといったように招待メッセージの再送が必要になるケースがあります。
今回はこのユーザーアカウントを新規作成時の招待メッセージを再送する方法についてまとめました。
今回やりたいこと
管理者がユーザーアカウントを新規作成した際に送信される招待メッセージの再送
今回はJavaScriptでユーザーアカウントを招待メッセージの再送をしたいので、aws-sdkを利用します。(aws-cliでの対応はこちらをご参照ください)
対応方法
aws-sdkのCognitoIdentityServiceProvider.adminCreateUser
を利用します。
こちらのapiはユーザープールに新規ユーザーを作成するときに利用されるのですが、paramのMessageAction
にRESEND
を指定すると招待メッセージの再送が行えます。
(参考: CognitoIdentityServiceProvider.adminCreateUser)
サンプルコード
const params = {
UserPoolId: userPoolId /* 必須 */,
Username: userName, /* 必須 */
DesiredDeliveryMediums: ['EMAIL'],/* 通知方法 */
ForceAliasCreation: true,/* エイリアス利用時のみ必要 */
MessageAction: 'RESEND', /* 再送のため'RESEND'にする */
TemporaryPassword: password, /* 再発行時の一時パスワード */
};
try {
const res = await cognitoServiceProvider.adminCreateUser(params).promise();
return res;
} catch (err) {
console.log(err, err.stack)
}
まとめ
ユーザーを作成するapiでparamを変更するだけで「メッセージの再送」と「一時パスワードの再発行」ができるというのに気づかず最初つまづいたのと、aws-sdkを利用した事例があまり見つからなかったので、今回の対応内容をまとめました。
同じような点でつまずいた方の助けになれば幸いです。