Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Logique AND/OR

Mode de mise au point
Logique AND/OR - Amazon Simple Notification Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisez la logique ET/OU dans les politiques de filtrage pour faire correspondre les attributs des messages ou les propriétés du corps des messages sur Amazon SNS. Cela permet un filtrage des messages plus précis et plus flexible.

Logique AND

Vous pouvez appliquer une logique AND en utilisant plusieurs noms de propriété.

Examinons la politique suivante :

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

Elle correspond à tous les attributs de message ou propriétés de corps de message ayant la valeur customer_interests définie sur rugby et la valeur price_usd définie sur un nombre supérieur à 100.

Note

Vous ne pouvez pas appliquer la logique AND à des valeurs d'un même attribut.

Logique OR

Vous pouvez appliquer une logique OR en affectant plusieurs valeurs à un nom de propriété.

Examinons la politique suivante :

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

Elle correspond à tous les attributs de message ou propriétés de corps de message ayant la valeur customer_interests définie sur rugby, football ou baseball.

Opérateur OR

Vous pouvez utiliser l'opérateur "$or" pour définir explicitement une politique de filtrage afin d'exprimer la relation OR entre plusieurs attributs de la politique.

Amazon SNS ne reconnaît une relation "$or" que lorsque la politique répond à toutes les conditions suivantes. Lorsque toutes ces conditions ne sont pas remplies, "$or" est traité comme un nom d'attribut normal, comme toute autre chaîne de la politique.

  • Il existe un attribut de champ "$or" dans la règle suivi d'un tableau, par exemple, “$or” : [].

  • Il existe au moins 2 objets dans le tableau "$or" : "$or": [{}, {}].

  • Aucun des objets du tableau "$or" ne possède de nom de champ correspondant à des mots clés réservés.

Sinon, "$or" est traité comme un nom d'attribut normal, comme les autres chaînes de la politique.

La politique suivante n'est pas analysée comme une relation OR, car le numérique et le préfixe sont des mots-clés réservés.

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

Exemples d'opérateurs OR

OR standard :

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

La logique de filtrage pour cette politique est la suivante :

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

Elle met en correspondance l'un ou l'autre des attributs de message suivants :

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

or

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

Elle correspond également à l'un des corps de message suivants :

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

or

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

Contraintes politiques qui incluent les relations OR

Examinons la politique suivante :

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

La logique de cette politique peut également être simplifiée comme suit :

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

Le calcul de la complexité des politiques comportant des relations OR peut être simplifié en additionnant les complexités des combinaisons pour chaque instruction OR.

La combinaison totale est calculée comme suit :

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

source possède une valeur, metricName deux valeurs, metricType une valeur, metricId deux valeurs et spaceId trois valeurs.

Examinons la politique de filtre imbriqué suivante :

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

La logique de cette politique peut être simplifiée comme suit :

("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")

Le calcul du total des combinaisons est le même pour les politiques non imbriquées, mais nous devons prendre en compte le niveau d'imbrication d'une clé.

La combinaison totale est calculée comme suit :

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

metricName possède deux valeurs, namespace en possède deux, scope est une clé imbriquée à deux niveaux avec une valeur, source est une clé imbriquée à deux niveaux avec une valeur et type est une clé imbriquée à deux niveaux avec une valeur.

Sur cette page

ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.