(ПРИМЕЧАНИЕ. Это связано с программированием, поскольку в конечном итоге я реализую эти правила в Python, но я использую редактор фильтров на веб-странице подписки SNS, чтобы поэкспериментировать и выяснить, почему не работают несколько групп правил)
У меня четыре очереди SQS и одна тема SNS;каждая очередь SQS подписана на тему SNS.Я хочу направить входящие сообщения SNS в очереди SQS на основе нескольких правил на подписку SQS-SNS.Из того, что я могу собрать в документации, каждый набор правил для маршрутизации к подписчикам SQS посредством фильтров сообщений группируется и применяется, если он оценивает.
Например, одно правило может быть, если строковое значение "имя_сервера"«server1» и тип файла «doc»;другое может быть, если имя сервера - server1, а тип файла - «odt»Это два отдельных правила, и я хотел бы представить их в редакторе политик.Я не получаю сообщение об ошибке при отправке, однако, кажется, что анализируется только ПЕРВЫЙ из моих правил, а остальные игнорируются.
Фактический пример политики фильтра для одной из подписок, которая будет направлять на server1_documents(ПРИМЕЧАНИЕ: только первый оценивает, имя сервера == server1 && filetype == doc, в то время как другие никогда не оценивают, даже если условия выполняются) ::
{
"servername": ["server1"],
"filetype": ["doc"]
},
{
"servername": ["server1"],
"filetype": ["odt"]
},
{
"servername": ["all"],
"filetype": ["pdf"]
}
(ТОЛЬКО первоеодин оценивается, хотя он возвращается как «ОК», и ошибки не отображаются) Я попытался переключить {и} и т. д. безуспешно.Например, заключив эти три внутри области видимости с скобками вне основного кода json (например, "{" и "}" сверху и снизу, и это не имеет значения.
Как видите, я хочу этоусловие для отправки сообщений в SQS server1_documents, если условие 1: имя сервера == server1 && filetype == документ ИЛИ условие 2: имя сервера == server1 && filetype == odt ИЛИ условие 3: имя сервера == все && filetype == pdf.
Таким образом, он будет маршрутизировать для типа файла doc и odt, когда имя_сервера равно server1, НО он также будет направлять в очередь SQS server1_documents (и, в этом случае, все очереди sqs всех других серверов через другие подписки), если имя_сервера всеи тип файла pdf (все серверы обрабатывают / собирают файлы .pdf, и каждый раз они объявляются всем в SNS).
Я не могу найти примеров, показывающих более одного набора правил в {..} JSON скобка, хотя, как я уже сказал, я не получаю ошибок, если я добавлю кратные значения, чтобы вы думали, что они возьмут. Один сайт сказал мне, что я могу создать нескольконадписи из одной и той же SQS в одну и ту же SNS и настройте для них разные правила.Кроме того, чрезвычайно сложно следить.Кроме того, я не могу этого сделать;создание большего количества подписок на SNS из каждой очереди SQS не обеспечивает дополнительную подписку, для которой я могу выполнить фильтр.
Я знаю, что существуют некоторые логические операции И / ИЛИ / НЕ, целочисленные операции, которые имеютдля использования с разными значениями, чтобы, возможно, я мог как-то составить один запрос, чтобы как-то соответствовать им всем, но это кажется еще более утомительным, поскольку я намеревался реализовать более одного фильтра в подписке.