Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Lógica AND/OR

Modo de enfoque
Lógica AND/OR - Amazon Simple Notification Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Utilice la lógica ANDOR en las políticas de filtrado para hacer coincidir los atributos de los mensajes o las propiedades del cuerpo del mensaje en Amazon SNS. Esto permite un filtrado de mensajes más preciso y flexible.

Lógica AND

Puede aplicar la lógica AND utilizando varios nombres de propiedad.

Considere la siguiente política:

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

Coincide con cualquier atributo de mensaje o propiedad de cuerpo de mensaje con el valor de customer_interests establecido en rugby y el valor de price_usd establecido en un número mayor de 100.

nota

No puede aplicar la lógica AND a los valores del mismo atributo.

Lógica OR

Puede aplicar la lógica OR asignando varios valores a un nombre de propiedad.

Considere la siguiente política:

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

Coincide con cualquier atributo de mensaje o propiedad de cuerpo de mensaje con el valor de customer_interests establecido en rugby, football o baseball.

Operador OR

Puede utilizar el operador "$or" para definir de forma explícita una política de filtrado que exprese la relación OR entre varios atributos de la política.

Amazon SNS solo reconoce una relación "$or" cuando la política ha cumplido todas las condiciones siguientes. Cuando no se cumplen todas estas condiciones, "$or" se trata como un nombre de atributo normal, igual que cualquier otra cadena de la política.

  • Hay un atributo de campo "$or" en la regla seguido de una matriz, por ejemplo “$or” : [].

  • Hay al menos 2 objetos en la matriz de "$or": "$or": [{}, {}].

  • Ninguno de los objetos de la matriz de "$or" tiene nombres de campo que sean palabras clave reservadas.

De lo contrario, "$or" se trata como un nombre de atributo normal, igual que otras cadenas de la política.

La siguiente política no se analiza como una relación OR porque el número y el prefijo son palabras clave reservadas.

{ "$or": [ {"numeric" : 123}, {"prefix": "abc"} ] }

Ejemplos de operadores OR

OR estándar:

{ "source": [ "aws.cloudwatch" ], "$or": [ { "metricName": [ "CPUUtilization" ] }, { "namespace": [ "AWS/EC2" ] } ] }

La lógica de filtrado de esta política es:

"source" && ("metricName" || "namespace")

Coincide con cualquiera de los siguientes conjuntos de atributos de mensaje:

"source": {"Type": "String", "Value": "aws.cloudwatch"}, "metricName": {"Type": "String", "Value": "CPUUtilization"}

o

"source": {"Type": "String", "Value": "aws.cloudwatch"}, "namespace": {"Type": "String", "Value": "AWS/EC2"}

También coincide con los siguientes cuerpos de mensaje:

{ "source": "aws.cloudwatch", "metricName": "CPUUtilization" }

o

{ "source": "aws.cloudwatch", "namespace": "AWS/EC2" }

Restricciones de políticas que incluyen relaciones OR

Considere la siguiente política:

{ "source": [ "aws.cloudwatch" ], "$or": [ { "metricName": [ "CPUUtilization", "ReadLatency" ] }, { "metricType": [ "MetricType" ] , "$or" : [ { "metricId": [ 1234, 4321 ] }, { "spaceId": [ 1000, 2000, 3000 ] } ] } ] }

La lógica de esta política también se puede simplificar de la siguiente manera:

("source" AND "metricName") OR ("source" AND "metricType" AND "metricId") OR ("source" AND "metricType" AND "spaceId")

El cálculo de la complejidad de las políticas con relaciones OR se puede simplificar como la suma de las complejidades combinadas de cada declaración OR.

La combinación total se calcula del siguiente modo:

(source * metricName) + (source * metricType * metricId) + (source * metricType * spaceId) = (1 * 2) + (1 * 1 * 2) + (1 * 1 * 3) = 7

source tiene un valor, metricName tiene dos valores, metricType tiene un valor, metricId tiene dos valores y spaceId tiene tres valores.

Tenga en cuenta la siguiente política de filtrado anidado:

{ "$or": [ { "metricName": [ "CPUUtilization", "ReadLatency" ] }, { "namespace": [ "AWS/EC2", "AWS/ES" ] } ], "detail" : { "scope" : [ "Service" ], "$or": [ { "source": [ "aws.cloudwatch" ] }, { "type": [ "CloudWatch Alarm State Change"] } ] } }

La lógica de esta política se puede simplificar de la siguiente manera:

("metricName" AND ("detail"."scope" AND "detail"."source") OR ("metricName" AND ("detail"."scope" AND "detail"."type") OR ("namespace" AND ("detail"."scope" AND "detail"."source") OR ("namespace" AND ("detail"."scope" AND "detail"."type")

El cálculo para las combinaciones totales es el mismo para las políticas no anidadas, excepto que debemos tener en cuenta el nivel de anidación de una clave.

La combinación total se calcula del siguiente modo:

(2 * 2 * 2) + (2 * 2 * 2) + (2 * 2 * 2) + (2 * 2 * 2) = 32

metricName tiene dos valores, namespace tiene dos valores, scope es una clave anidada de dos niveles con un valor, source es una clave anidada de dos niveles con un valor y type es una clave anidada de dos niveles con un valor.

En esta página

PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.