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

能否通过编程方式将手机号从AWS SNS退订?

编程实现AWS SNS手机号退订的方法

要通过代码实现AWS SNS手机号退订,核心是使用SNS的Unsubscribe API,但前提是你需要获取目标手机号对应的订阅ARN。以下是具体步骤和代码示例:

步骤1:获取目标手机号的订阅ARN

因为Unsubscribe需要订阅ARN作为参数,你需要先通过ListSubscriptionsByTopic接口遍历目标主题下的订阅,筛选出对应手机号的ARN:

import boto3

# 初始化SNS客户端
sns_client = boto3.client('sns', region_name='your-region')

# 替换为你的主题ARN和目标手机号(E.164格式,带国家码)
target_topic_arn = 'arn:aws:sns:us-east-1:123456789012:your-topic-name'
target_phone = '+1234567890'

subscription_arn = None

# 遍历主题下的所有订阅
response = sns_client.list_subscriptions_by_topic(TopicArn=target_topic_arn)
for sub in response['Subscriptions']:
    if sub['Endpoint'] == target_phone and sub['Protocol'] == 'sms':
        subscription_arn = sub['SubscriptionArn']
        break

# 处理分页(如果订阅数量超过100条)
while 'NextToken' in response and not subscription_arn:
    response = sns_client.list_subscriptions_by_topic(
        TopicArn=target_topic_arn,
        NextToken=response['NextToken']
    )
    for sub in response['Subscriptions']:
        if sub['Endpoint'] == target_phone and sub['Protocol'] == 'sms':
            subscription_arn = sub['SubscriptionArn']
            break

步骤2:调用Unsubscribe完成退订

拿到订阅ARN后,直接调用unsubscribe方法即可:

if subscription_arn:
    sns_client.unsubscribe(SubscriptionArn=subscription_arn)
    print(f"手机号 {target_phone} 已成功退订")
else:
    print(f"未找到手机号 {target_phone} 在主题 {target_topic_arn} 下的有效订阅")

注意事项

  • 手机号必须严格遵循E.164格式(例如+1234567890),否则无法匹配到订阅
  • 如果目标手机号已经处于退订状态,调用Unsubscribe不会返回错误,但也不会产生任何变更
  • 确保执行代码的IAM角色拥有sns:ListSubscriptionsByTopic和sns:Unsubscribe的权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:40:39