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

如何获取Cognito发送SMS消息所使用的SNS主题ARN

问题解答

1. 为什么查询不到SMS相关的SNS主题ARN

AWS Cognito发送验证短信的默认逻辑,是直接调用SNS的点对点短信发送能力,不需要预先在你的账号下创建SNS主题,也不会自动生成对应的主题资源,所以你在控制台、CLI里检索不到相关主题是正常现象。
只有当你手动在Cognito用户池配置中指定了自定义SNS主题作为SMS发送通道时,才会用到你自行创建的主题ARN,默认配置下不存在这类专属主题。

2. 如何对Cognito的IAM角色做最小权限限制

不需要通过SNS主题ARN限制权限,你可以通过IAM策略的条件字段实现权限收敛,以下是可用的最小权限策略示例:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sns:Publish",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "sns:SMSType": "Transactional"
                }
            }
        }
    ]
}

说明:

  • sns:SMSType 是SNS的专用条件键,值设为Transactional对应Cognito发送身份验证类短信的场景,避免该角色被用于发送营销类(Promotional)短信
  • 如果你还需要进一步限制短信的发送范围,可以追加StringLike条件匹配接收方号码前缀,比如仅允许发送给中国内地号码可以添加条件:
    "StringLike": {
        "sns:Endpoint": "+86*"
    }
    

3. 如果你确实需要使用指定SNS主题发送短信

可以按以下步骤操作:

  • 自行在SNS控制台创建专用的SMS主题,记录其ARN
  • 进入Cognito用户池的消息定制配置页,找到SMS发送配置项,选择使用自定义SNS主题,填入你创建的主题ARN
  • 此时就可以将IAM策略的Resource字段修改为你创建的主题ARN,移除通配符即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:15:06