AWS SNS消息过滤配置异常求助:带过滤规则的SQS未收消息
排查SNS订阅过滤策略不生效的关键点
- 检查消息属性的数据类型匹配性:SNS消息属性区分类型(String、Number、Binary等),过滤策略仅匹配同类型的属性值。比如你在控制台发消息时,必须把
SensorName的类型设为String,如果误选了Binary或其他类型,过滤规则会失效。 - 确认过滤策略的JSON格式与拼写:
- 确保所有引号是英文半角引号,没有中文符号;
- 检查键名大小写完全一致(SNS过滤策略大小写敏感),比如
SensorName不能写成sensorName; - 用CLI命令验证订阅的实际生效策略:
查看返回的aws sns get-subscription-attributes --subscription-arn <你的带过滤的订阅ARN>FilterPolicy字段是否和你配置的{"SensorName":["test"]}完全一致。
- 验证消息属性的键值是否完全匹配:在控制台发布消息时,确认消息属性的键是
SensorName,值是test,没有多余的空格或特殊字符。 - 排查订阅配置的生效状态:有时候控制台配置后可能存在短暂延迟,建议删除带过滤的订阅重新创建,配置后等待1-2分钟再测试。
- 确认SQS权限配置:虽然无过滤的订阅能收到消息,但仍需检查带过滤的SQS的权限策略,确保允许对应的SNS主题向其发送消息(权限策略中需包含
sqs:SendMessage动作,资源为该SQS的ARN,主体为SNS主题的ARN)。
内容的提问来源于stack exchange,提问作者beedrill
相关产品推荐
相关产品推荐

