调用amazon-cognito-identity-js的resendConfirmationCode成功却未收到短信
解决resendConfirmationCode返回成功但收不到短信的问题
你的代码逻辑没问题,结合注册时能正常收短信、SNS沙箱已验证手机号的情况,建议从以下几个方向排查:
核对Cognito用户池的短信模板配置
登录Cognito控制台,进入你的用户池,找到「消息自定义」→「短信」选项卡,检查验证用户场景的模板:- 确认模板已启用,内容包含
{####}验证码占位符 - 模板内容是否符合SNS短信规范(比如没有违规内容,长度在限制内)
如果模板配置异常,可能导致Cognito返回成功但实际无法发送短信。
- 确认模板已启用,内容包含
查看CloudWatch中的发送日志
进入CloudWatch控制台,找到对应Cognito用户池的日志组(路径通常是aws/cognito/idp/[你的用户池ID]),搜索与resendConfirmationCode或目标手机号相关的日志,查看是否有发送失败的具体错误提示(比如模板未审核、地区发送限制等)。确认用户当前状态
只有状态为UNCONFIRMED的用户,重发验证码操作才会实际触发短信发送。可以通过Cognito控制台查看用户状态,或者调用getUser接口确认。如果用户已经是CONFIRMED或其他状态,接口会返回成功但不会发送短信。检查手机号格式一致性
确认注册时提交的手机号格式(比如是否带国家码+86),与重发时username对应的用户手机号完全一致。Cognito对手机号格式匹配要求严格,格式不一致可能导致短信发送到错误的目的地。排查SNS沙箱的频率限制
SNS沙箱模式下存在发送频率限制,短时间内多次请求可能被限流。尝试间隔5-10分钟后再重新发送,或者完成SNS账号的生产模式切换后测试。
内容的提问来源于stack exchange,提问作者Irfandy J.
相关产品推荐
相关产品推荐

