AWS Cognito中CustomEmailSender_UpdateUserAttribute何时触发?
CustomEmailSender_UpdateUserAttribute 触发规则
该触发器源不会在所有用户属性更新操作时触发,仅当属性更新操作触发了「邮箱/手机号验证码发送流程」时才会被调用,普通属性更新不会触发。
具体触发场景只有以下两类:
- 调用
update-user-attributes(用户侧)或admin-update-user-attributes(管理员侧)接口修改email/phone_number属性,且Cognito判定需要向新的属性值发送验证码时 - 用户在托管UI的个人资料修改页提交新的邮箱/手机号,触发验证流程时
以下操作无论用什么方式执行,都不会触发该触发器:
- 修改
name、地址、自定义属性等不需要验证的普通属性 - 修改邮箱/手机号时,同步将
email_verified/phone_number_verified参数设为true,直接跳过验证流程 - 仅修改已验证属性的标记位、不修改属性值本身
常见未触发原因排查
你当前其他自定义邮件触发场景正常,说明Lambda基础权限、自定义发送者的全局配置没有问题,未触发基本是以下配置问题:
- 未开启属性变更验证开关
进入Cognito用户池的「属性验证」配置页,确认对应属性(邮箱/手机号)开启了属性值变更时自动发送验证的选项。该开关默认关闭,未开启时修改属性不会触发验证邮件发送流程,自然不会调用Lambda。 - 触发器源配置漏选
进入用户池「触发器」配置页,找到自定义邮件发送器的配置项,确认触发场景列表中已经勾选了「更新用户属性」对应的选项。配置时如果只勾选了创建用户、忘记密码等场景,就会出现其他触发正常、属性更新无日志的现象。 - 接口传参不符合触发条件
测试时如果调用更新属性接口同时传入了email_verified=true/phone_number_verified=true参数,Cognito会直接将新属性标记为已验证,不会生成验证码,也不会触发触发器。测试时只传入新的属性值、不要传已验证标记参数即可正常触发。
最小验证测试方法:确认上述配置开启后,调用
aws cognito-idp admin-update-user-attributes --user-pool-id 你的池ID --username 测试用户名 --user-attributes Name=email,Value=新的测试邮箱,不要携带email_verified参数,即可在Lambda日志中看到对应触发记录。
内容的提问来源于stack exchange,提问作者wwags33
相关产品推荐
相关产品推荐

