CognitoではAdminUpdateUserAttributesでサーバサイドからユーザの属性を変更できるが、実は検証が必要な属性(Email属性など)は上記コマンドを実行してからCognitoのユーザプールを見ても、Emailが追加・変更されていないように見える。
TypeScriptでCognitoユーザの属性を変更する方法

属性変更時に送信された6桁の認証コードをUIで入力して初めて検証OKになり、ユーザプールにも属性が表示されるようになる。

どういうことかというと、実は内部的にemail_verifiedという属性があり、ここにtrueが設定されないとemail属性は有効にならない。
aws-cliではどう見えるのか
-
認証前
$ aws cognito-idp list-users --user-pool-id ap-northeast-1_xxxxxx { "Username": "9674DFA4-51DF-4D67-98E0-CBAD79D0E889", "Attributes": [ { "Name": "sub", "Value": "0BF17B9A-E362-48B0-A8AF-3AFBA6C0486C" } ], "UserCreateDate": "2024-01-25T10:19:17.949000+09:00", "UserLastModifiedDate": "2024-01-25T10:21:44.216000+09:00", "Enabled": true, "UserStatus": "CONFIRMED" }, -
認証後
{ "Username": "9674DFA4-51DF-4D67-98E0-CBAD79D0E889", "Attributes": [ { "Name": "sub", "Value": "0BF17B9A-E362-48B0-A8AF-3AFBA6C0486C" }, { "Name": "email_verified", "Value": "true" }, { "Name": "email", "Value": "example@gmail.com" } ], "UserCreateDate": "2024-01-25T10:19:17.949000+09:00", "UserLastModifiedDate": "2024-01-25T10:26:03.312000+09:00", "Enabled": true, "UserStatus": "CONFIRMED" },検証されるとemailとemail_verified属性が同時に追加されるもよう。