Cognitoで電話番号・メールアドレス変更時、前の値を保持できるようになりました

2022.06.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。データアナリティクス事業本部 サービスソリューション部の北川です。

今回は、Cognitoで新しく追加された「属性変更の確認」を試してみたいと思います。この機能によって、メールアドレスや電話番号変更時に変更前の値を保持できるようになります。

Cognitoでメールアドレス変更時の問題

Cognitoでは、メールアドレスの変更(updateUserAttributes)を実行すると、コード検証を行う前に、実行したタイミングでメールアドレスが切り替わってしまうという問題がありました。

Github上でも、かなり前からこの問題に対して議論されていたようです。

内容を見て分かる通り、今回、その問題を解消するための機能が追加されました。

属性の変更の確認というタイトルの新しいセクションがAmazonCognitoコンソールに追加されました。この機能をアクティブにすると、更新が保留されているときに、電子メールアドレスの元の値または電話番号の属性値をアクティブに保つことができます。

試してみた

以前の場合

updateUserAttributesを使用して、メールアドレスを変更する際の挙動

changeEmailを押した(updateUserAttributesを実行した)段階で、メールアドレスが変更されています。これは、コード検証前なので、理想の動作ではありません。

コンソールで確認しても、メールアドレスが変更されているのが確認できます。

変更確認の有効化

コンソールからCognitoに移動し、変更したいユーザープールを選択します。

「サインアップエクスペリエンス」に移動し、「属性検証とユーザーアカウントの確認」の編集を選択します。

属性変更の確認の「未完了の更新があるときに元の属性値をアクティブに保つ - 推奨」にチェックを入れ有効化します。

属性値は検証したい値を任意で指定します。今回は、Eメールアドレスを選択します。

動作確認

changeEmailを押しても、前回のメールアドレスのままになっています。

コンソール上で確認しても、変更がされていません。

メールアドレスの変更時に前の値を保持することができました。

まとめ

今回は、Cognitoのユーザーロックの解消についてまとめてみました。「属性変更の確認」機能のおかげで、自らコードを追記しなければならなかった問題が解決され、Cognitoが使いやすくなったのではと思います。

自分自身はCognitoを使った経験がほとんどなかったので、良いタイミングでイシューが解決されて本当にラッキーでした(検証を始める2日前あたりに、追加されたようでした)。

ではまた。