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

求助:在AWS SNS POST请求中使用MessageAttributes自定义Sender ID的正确语法

嗨,我来帮你搞定AWS SNS自定义Sender ID的问题!针对德国手机号的情况,确实支持自定义发送方ID,下面给你详细的正确语法和示例:

正确的AWS SNS POST请求配置(自定义Sender ID)

不管你是用原生HTTP POST请求还是AWS SDK,核心都是正确设置MessageAttributes里的AWS.SNS.SMS.SenderID参数,具体如下:

1. 原生表单格式POST请求(curl示例)

这是最直接的测试方式,把下面的参数替换成你自己的信息就行:

curl -X POST https://sns.eu-central-1.amazonaws.com/ \
  -d "Action=Publish" \
  -d "Version=2010-03-31" \
  -d "PhoneNumber=+49XXXXXXXXXX" \ # 替换成目标德国手机号,格式要带国家码
  -d "Message=你的短信内容" \
  -d "MessageAttributes.entry.1.Name=AWS.SNS.SMS.SenderID" \
  -d "MessageAttributes.entry.1.Value.DataType=String" \
  -d "MessageAttributes.entry.1.Value.StringValue=你的SenderID" \ # 最多11个字符,只能是字母、数字或空格
  -d "AWS_ACCESS_KEY_ID=你的AWS访问密钥ID" \
  -d "AWS_SECRET_ACCESS_KEY=你的AWS秘密访问密钥"

2. JSON格式POST请求(适合SDK或API客户端)

如果你的请求支持JSON体,结构会更清晰:

{
  "Action": "Publish",
  "Version": "2010-03-31",
  "PhoneNumber": "+49XXXXXXXXXX",
  "Message": "你的短信内容",
  "MessageAttributes": {
    "AWS.SNS.SMS.SenderID": {
      "DataType": "String",
      "StringValue": "你的SenderID"
    }
  }
}

3. AWS SDK示例(以Python boto3为例)

如果用SDK开发,代码会更简洁,不用自己处理签名等细节:

import boto3

# 初始化SNS客户端,指定德国所在的法兰克福区域(eu-central-1)
sns_client = boto3.client('sns', region_name='eu-central-1')

response = sns_client.publish(
    PhoneNumber='+49XXXXXXXXXX',
    Message='你的短信内容',
    MessageAttributes={
        'AWS.SNS.SMS.SenderID': {
            'DataType': 'String',
            'StringValue': '你的自定义SenderID'
        }
    }
)

print("短信发送成功,响应信息:", response)

几个关键注意点:

  • Sender ID长度不能超过11个字符,只能包含字母、数字和空格,不能有特殊字符、符号或中文。
  • 一定要请求欧盟法兰克福区域的SNS端点(eu-central-1),因为德国属于这个区域,确保Sender ID能正常生效。
  • 如果是使用TopicArn而不是直接指定PhoneNumber,同样可以在MessageAttributes里设置Sender ID,效果是一样的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:40:36