属性字符串值匹配 - Amazon Simple Notification Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

属性字符串值匹配

您可以使用字符串值来匹配消息属性和筛选消息。在 JSON 策略中,用双引号将字符串值引起来。

您可以使用以下字符串操作来匹配消息属性。

精确匹配

在策略属性值与一个或多个消息属性值匹配时,会进行精确匹配。

考虑以下策略属性:

"customer_interests": ["rugby", "tennis"]

它匹配以下消息属性:

"customer_interests": {"Type": "String", "Value": "rugby"}
"customer_interests": {"Type": "String", "Value": "tennis"}

但是,它不匹配以下消息属性:

"customer_interests": {"Type": "String", "Value": "baseball"}

前缀匹配

当策略属性值包含关键字 prefix 时,它匹配以指定字符开头的任何消息属性值。

考虑以下策略属性:

"customer_interests": [{"prefix": "bas"}]

它匹配以下任一消息属性:

"customer_interests": {"Type": "String", "Value": "baseball"}
"customer_interests": {"Type": "String", "Value": "basketball"}

但是,它不匹配以下消息属性:

"customer_interests": {"Type": "String", "Value": "rugby"}

Anything-but 匹配

当策略属性值包含关键字 anything-but 时,它匹配 包含任一策略属性值的任何消息属性。

考虑以下策略属性:

"customer_interests": [{"anything-but": ["rugby", "tennis"]}]

它匹配以下任一消息属性:

"customer_interests": {"Type": "String", "Value": "baseball"}
"customer_interests": {"Type": "String", "Value": "football"}

它还匹配以下消息属性(因为它包含的值不是 rugbytennis):

"customer_interests": {"Type": "String.Array", "Value": "[\"rugby\", \"baseball\"]"}

但是,它不匹配以下消息属性:

"customer_interests": {"Type": "String", "Value": "rugby"}

将前缀与anything-butoperator

对于属性string匹配时,您也可以将前缀与anything-but运算符。

例如,以下策略属性拒绝order-前缀:

"event":[{"anything-but": {"prefix":"order-"}}]

它匹配以下任一属性:

"event": {"Type": "String", "Value": data-entry}
"event": {"Type": "String", "Value": order_number}

不过,它不会匹配以下属性:

"event": {"Type": "String", "Value": order-cancelled}

IP 地址匹配

您可以使用cidr运算符来检查传入消息是否来自特定 IP 地址或子网。

考虑以下策略属性:

"source_ip":[{"cidr": "10.0.0.0/24"}]

它匹配以下任一消息属性:

"source_ip": {"Type": "String", "Value": "10.0.0.0"}
"source_ip": {"Type": "String", "Value": "10.0.0.255"}

不过,它不会匹配以下消息属性:

"source_ip": {"Type": "String", "Value": "10.1.1.0"}