如何解决 Amazon SNS 中的订阅筛选策略问题?

1 分钟阅读
0

我的 Amazon Simple Notification Service(Amazon SNS)订阅筛选策略不起作用。

解决方法

**重要事项:**对订阅筛选策略的添加或更改最长需要 15 分钟才能生效。

订阅仅在下列条件下接受消息:

  • 当您将筛选策略范围设置为 MessageAttributes 时,筛选策略中的每个属性名称都与一个消息属性名称匹配。对于筛选策略中每个匹配的属性名称,至少有一个属性值与消息属性值匹配。
  • 当您将筛选策略范围设置为 MessageBody 时,筛选策略中的每个属性名称都与一个消息正文属性名称匹配。对于筛选策略中每个匹配的属性名称,至少有一个属性值与消息正文属性值匹配

检查您的筛选策略是否因为消息不包含属性而被拒绝。对于基于属性的消息筛选,请查看 Amazon SNS 的 Amazon CloudWatch 指标中的 NumberOfNotificationsFilteredOut-NoMessageAttributes 指标。

有关详细信息,请参阅 Amazon SNS 消息筛选

有关如何发送带有属性的消息的教程,请参阅使用 AWS 管理控制台向 Amazon SNS 主题发布消息

有关如何使用基于负载的筛选发送消息的教程,请参阅使用平台特定的负载发布

验证发布到您的 Amazon SNS 主题的消息是否符合所需的筛选策略约束

有关约束的完整列表,请参阅筛选策略约束

验证您的订阅筛选策略是否根据基于属性的筛选或基于负载的筛选进行了正确的配置

如果消息包含 MessageAttributes 字段,则任何设置了 FilterPolicy 的主题订阅都可以选择性地接受或拒绝该消息。为此,您还必须在订阅中将 FilterPolicyScope 设置为 MessageAttributes

同样,当您在订阅中将 FilterPolicyScope 设置为 MessageBody 时,任何包含 FilterPolicy 的主题订阅都可以选择性地接受或拒绝该消息。

有关正确的筛选策略格式的详细信息,请参阅以下文档:

要查看由于属性不匹配或格式错误而被筛选策略拒绝的消息,请查看以下 Amazon SNS 的 CloudWatch 指标

  • NumberOfNotificationsFilteredOut
  • NumberOfNotificationsFilteredOut-InvalidAttributes
  • NumberOfNotificationsFilteredOut-InvalidMessageBody
  • NumberOfNotificationsFilteredOut-MessageBody

注意:

  • NumberOfNotificationsFilteredOut 指标显示由于消息属性和策略属性不匹配而被筛选策略拒绝的消息。
  • NumberOfNotificationsFilteredOut-InvalidAttributes 指标显示由于消息属性的格式无效而被筛选策略拒绝的消息。
  • NumberOfNotificationsFilteredOut-MessageBody 指标决定了因基于负载的筛选而被订阅筛选政策拒绝的消息的数量。
  • NumberOfNotificationsFilteredOut-InvalidMessageBody 是由于消息正文不适用于筛选而被订阅筛选策略拒绝的消息数。例如,它们因为 JSON 消息正文无效而被拒绝。
AWS 官方
AWS 官方已更新 7 个月前