在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)
您必须为同一端点创建 2 个单独的订阅并附加不同的过滤器:
第一次订阅:
{
"customer_interests": ["rugby"]
}
第二次订阅:
{
"price_usd": [{"numeric":[">", 100]}]
}
我没有找到任何在单个过滤器中使用 OR 的方法,但是创建对同一端点的多个订阅肯定有效(在我的帐户上使用了 mysqlf)
我使用 lambda,这样我就可以为每个 lambda 订阅者创建新的别名。每个 lambda 都将更新为 LASTEST。 订阅 1.
{
"key1": ["01"],
"key2": ["123"],
}
订阅:Lambda ABC_1
订阅2.
{
"key1": ["02"],
"key2": ["456"],
}
订阅:Lambda ABC_1:测试
我参加聚会可能会迟到。我看到的一种替代解决方案是在 sns 和订阅 sns 的任何内容之间创建两个 sqs。然后,将过滤器附加到 sqs。 lambda 将从 sqs 读取。这样你就不会在 lambda 上有两个端点。不过这个有点贵。
自 2023 年 11 月起,您现在可以在 SNS 过滤策略中使用“OR”运算符。更多信息:https://aws.amazon.com/about-aws/whats-new/2023/11/amazon-sns-message-additional-filtering-operators/