AWS SNS 根据“OR”条件过滤消息

问题描述 投票:0回答:4

SNS消息过滤页面有AND/OR逻辑示例如下

AND 逻辑:通过使用多个属性名称(键)应用 AND 逻辑。例如,政策:

{
    "customer_interests": ["rugby"],
    "price_usd": [{"numeric":[">", 100]}]
}

OR 逻辑:通过为属性名称分配多个值来应用 OR 逻辑。例如,策略属性:

"customer_interests": ["rugby", "football", "baseball"]

但是我们如何对多个属性名称(键)应用“OR”逻辑

例如,如果我想更改第一个示例,政策是什么

来自

(customer_interests =“橄榄球”和price_usd > 100)

(customer_interests =“橄榄球”或price_usd > 100)

amazon-web-services filter amazon-sns
4个回答
4
投票

您必须为同一端点创建 2 个单独的订阅并附加不同的过滤器:

第一次订阅:

{
    "customer_interests": ["rugby"]
}

第二次订阅:

{   
   "price_usd": [{"numeric":[">", 100]}]
}

我没有找到任何在单个过滤器中使用 OR 的方法,但是创建对同一端点的多个订阅肯定有效(在我的帐户上使用了 mysqlf)


0
投票

我使用 lambda,这样我就可以为每个 lambda 订阅者创建新的别名。每个 lambda 都将更新为 LASTEST。 订阅 1.

{
    "key1": ["01"],
    "key2": ["123"],
}

订阅:Lambda ABC_1

订阅2.

{
    "key1": ["02"],
    "key2": ["456"],
}

订阅:Lambda ABC_1:测试


0
投票

我参加聚会可能会迟到。我看到的一种替代解决方案是在 sns 和订阅 sns 的任何内容之间创建两个 sqs。然后,将过滤器附加到 sqs。 lambda 将从 sqs 读取。这样你就不会在 lambda 上有两个端点。不过这个有点贵。


0
投票

自 2023 年 11 月起,您现在可以在 SNS 过滤策略中使用“OR”运算符。更多信息:https://aws.amazon.com/about-aws/whats-new/2023/11/amazon-sns-message-additional-filtering-operators/

© www.soinside.com 2019 - 2024. All rights reserved.