如何在SNS中丢弃含null属性的消息?SQS消息体过滤问询
解决SNS过滤规则无法排除null值的问题
要过滤掉state.propertyToFilter为null的消息,你可以利用SNS过滤规则对字符串类型的匹配特性——当字段值为null时,它不会被任何字符串类匹配规则命中,因此我们可以通过匹配所有合法字符串的方式,自动排除null值的消息。
方案1:保留所有非null的字符串(包括空字符串)
使用prefix运算符匹配所有以空字符串开头的字符串(即所有非null字符串):
{ "state": { "propertyToFilter": [{"prefix": ""}] } }
方案2:仅保留非空且非null的字符串
如果需要同时排除空字符串,使用anything-but匹配所有非空字符串:
{ "state": { "propertyToFilter": [{"anything-but": ""}] } }
为什么之前的规则不生效?
SNS过滤规则明确限制anything-but的目标值只能是字符串、数字或数组,不支持直接使用null作为过滤目标,因此你之前的写法会被拒绝。而上面的方案通过针对字符串类型的匹配,间接实现了排除null值的需求。
内容的提问来源于stack exchange,提问作者Simon Gaufreteau
相关产品推荐
相关产品推荐

