是否将多个过滤器策略应用于Amazon SNS订阅?

时间:2018-12-14 19:22:24

标签: amazon-web-services amazon-sns

(注意:这是与编程相关的,因为我最终要在Python中实现这些规则,但是我使用SNS订阅网页上的过滤器编辑器进行实验并弄清楚为什么多个规则组无法正常工作)

我有四个SQS队列和一个SNS主题;每个SQS队列都订阅了SNS主题。我想基于PER SQS-SNS订阅的多个规则将传入的SNS消息路由到SQS队列。根据我在文档中收集的信息,用于通过消息过滤器路由到SQS订户的每个规则集都组合在一起,并且在评估时适用。

例如,一个规则可能是字符串值“ servername”为“ server1”且文件类型为“ doc”;另一个可能是如果servername是server1并且文件类型是“ odt”。这是两个独立的规则,我想我可以将它们放在策略编辑器中。提交时我没有收到任何错误,但是似乎只有我的第一个规则被解析,其余的都被忽略了。

一个将路由到server1_documents的订阅的过滤策略的实际示例(注意:只有第一个订阅会评估,servername == server1 && filetype == doc,而其他订阅则不会评估,即使条件为真):

{
"servername": ["server1"],
"filetype": ["doc"]
},
{
"servername": ["server1"],
"filetype": ["odt"]
},
{
"servername": ["all"],
"filetype": ["pdf"]
}

(仅对第一个进行评估;尽管它返回OK,并且没有显示错误) 我试过切换{和}等,但是没有运气。例如,将这三个区域包含在主要json代码之外的带括号的范围内(例如顶部和底部的“ {”和“}”,并且没有区别。

如您所见,如果条件1:servername == server1 && filetype == doc或条件2:服务器名== server1 && filetype == odt或条件3,我希望此条件将邮件路由到server1_documents SQS: servername == all && filetype == pdf。

因此,当服务器名称为server1时,它将路由文件类型doc和odt,但如果服务器名称为all且它也将路由到server1_documents SQS队列(在这种情况下,将通过其他订阅传递到所有其他服务器sqs队列)。文件类型为pdf(所有服务器都会处理/收集.pdf,并且每次都会在SNS中向所有人宣布)。

我找不到在{..} JSON括号中显示多个规则集的任何示例,尽管正如我所说,如果我输入倍数也不会出错,所以您认为它们会采用。一个站点告诉我,我可以创建从同一SQS到同一SNS的多个订阅,并为这些订阅设置不同的规则。除此之外,很难保持跟踪。此外,我似乎无法做到这一点。从每个SQS队列创建更多的SNS订阅不会提供我可以进行过滤的额外订阅。

我知道有一些逻辑AND / OR / NOT,整数运算,可以与不同值一起使用的东西,以便也许我可以构造一个查询以某种方式将它们全部匹配,但是看起来甚至更麻烦,因为我打算在订阅中实现多个过滤器。

0 个答案:

没有答案