You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Cognito(SNS)为何无法发送用户属性验证消息?

排查Cognito验证短信未发送问题的步骤

1. 查看SNS消息失败的具体原因

  • 登录AWS SNS控制台,进入「短信」板块,点击「已发送消息」,找到那3条失败的记录,查看状态和状态原因列,这里会直接显示失败的具体原因(比如号码未在沙盒验证、格式不符合要求、运营商拦截等)。
  • 沙盒模式下,仅已验证的电话号码能接收SNS短信,务必确认目标用户的手机号已添加到SNS沙盒的「已验证电话号码」列表中,且状态为「已验证」。

2. 检查Cognito用户池的SNS集成配置

  • 进入Cognito用户池控制台,查看「消息自定义」中的短信配置,确认关联的SNS服务角色具备足够权限(至少允许Cognito调用SNS的Publish接口发送短信)。
  • 检查短信签名内容,沙盒模式下签名有严格限制,避免使用特殊字符、过长内容或不符合运营商规范的签名。

3. 通过CloudTrail日志追踪请求细节

  • 打开AWS CloudTrail控制台,筛选事件源为cognito-idp.amazonaws.com和sns.amazonaws.com,定位到对应时间点的VerifyUserAttribute和Publish事件:
    • 确认Cognito调用SNS时传递的电话号码是否为标准E.164格式(如+1234567890,不能包含空格、括号、短横线等);
    • 查看SNS的Publish事件响应,若存在InvalidParameter、MessageRejected等错误码,可根据错误信息定位问题。

4. 验证代码中的参数与权限

  • 检查Node.js代码中verifyUserAttribute接口的参数:确保AttributeName准确为phone_number,传入的手机号严格符合E.164格式;
  • 确认代码使用的AWS凭证(credentials)所属区域与Cognito、SNS的区域一致,且具备调用cognito-idp:VerifyUserAttribute和sns:Publish的权限。

5. 排除终端或运营商层面的问题

  • 使用另一个已验证的沙盒号码测试短信发送,排查目标号码是否存在运营商屏蔽、手机短信拦截等问题;
  • 检查手机的垃圾短信过滤设置,确认验证码短信未被归类到垃圾短信文件夹。

内容的提问来源于stack exchange,提问作者Damon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:23:12