Postman调用AWS SNS发送JSON消息报400错误求助
解决AWS SNS POST请求发送JSON消息报400错误的方案
必须添加MessageStructure参数
AWS SNS要识别JSON格式的多协议消息,必须显式设置MessageStructure参数为json,这是最容易忽略的关键项。如果没加这个参数,SNS会把你传入的JSON文本当作普通消息处理,进而触发语法错误。规范Message参数的JSON格式
确保Message里的JSON严格符合语法:- 所有字符串和键名必须用双引号包裹,不能用单引号
- 末尾不能有多余的逗号
示例正确格式:{"default": "默认消息", "sms": "短信专属内容"}
根据Postman的请求格式调整参数
- 若使用
form-data发送请求:
直接在Message字段填入JSON字符串(无需转义双引号),同时新增MessageStructure字段,值设为json。 - 若使用
rawJSON格式发送请求:
整个请求体要嵌套正确,Message里的JSON需要转义双引号,示例如下:{ "TopicArn": "arn:aws:sns:us-east-1:123456789012:your-topic", "Message": "{\"default\": \"default\"}", "MessageStructure": "json" }
- 若使用
其他检查项
- 确认
TopicArn完全正确,无区域、账号ID或主题名的拼写错误 - 验证AWS凭证拥有该SNS主题的
Publish权限(既然普通消息能发送,此项大概率没问题) - 检查请求头的
Content-Type:form-data格式无需手动设置;raw JSON格式需设为application/json
- 确认
内容的提问来源于stack exchange,提问作者Gilad
相关产品推荐
相关产品推荐

