Contraintes liées à la politique de filtrage dans Amazon SNS - 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.

Contraintes liées à la politique de filtrage dans Amazon SNS

Lorsque vous configurez des politiques de filtrage dans Amazon SNS, vous devez tenir compte de quelques règles importantes. Ces règles permettent de garantir l'application efficace des politiques de filtrage tout en préservant les performances et la compatibilité du système.

Contraintes de politique de filtre

Lorsque vous configurez des politiques de filtrage dans Amazon SNS, suivez ces règles importantes pour vous assurer qu'elles fonctionnent efficacement tout en préservant les performances et la compatibilité du système :

  • Correspondance de chaînes : pour la correspondance de chaînes dans la politique de filtrage, la comparaison fait la distinction majuscules/majuscules.

  • Correspondance numérique — Pour la correspondance numérique, la valeur peut être comprise entre -10 9 et 10 9 (-1 milliard à 1 milliard), avec une précision de cinq chiffres après la virgule décimale.

  • Complexité de la politique de filtrage — La combinaison totale de valeurs d'une politique de filtrage ne doit pas dépasser 150. Pour calculer la combinaison totale, multipliez le nombre de valeurs de chaque tableau dans la politique de filtrage.

  • Limiter le nombre de clés : une politique de filtrage peut comporter un maximum de cinq clés.

Considérations supplémentaires
  • Le JSON de la politique de filtre peut contenir ce qui suit :

    • Chaînes entre guillemets

    • Nombres

    • Mots-clés true, false et null, sans guillemets

  • Lorsque vous utilisez l'API Amazon SNS, vous devez transmettre le JSON de la politique de filtrage sous forme de chaîne UTF-8 valide.

  • La taille maximale d'une politique de filtrage est de 256 Ko.

  • Par défaut, vous pouvez avoir jusqu'à 200 politiques de filtrage par sujet et 10 000 politiques de filtrage par AWS compte.

    Cette limite de politique n'empêchera pas la création d'abonnements aux files d'attente Amazon SQS avec l'SubscribeAPI. Toutefois, elle échouera lorsque vous attachez la politique de filtre à l'appel d'API Subscribe (ou à l'appel d'API SetSubscriptionAttributes).

    Pour demander l'augmentation de ce quota, vous pouvez utiliser AWS Service Quotas.

Contraintes de politique pour le filtrage basé sur les attributs

Le filtrage basé sur les attributs est l'option par défaut. FilterPolicyScope est défini sur MessageAttributes dans l'abonnement.

  • Amazon SNS n'accepte pas de politique de filtre imbriquée pour le filtrage basé sur les attributs.

  • Amazon SNS compare les propriétés de politique uniquement aux attributs de message ayant les types de données suivants :

    • String

    • String.Array

    Important

    Lorsque vous utilisez le filtrage basé sur les attributs dans Amazon SNS, vous devez supprimer deux fois certains caractères spéciaux, notamment :

    • Guillemets doubles («)

    • Barres obliques inversées ()

    Si ces caractères ne sont pas supprimés deux fois, la politique de filtrage ne correspondra pas aux attributs d'un message publié et la notification ne sera pas envoyée.

Considérations supplémentaires

  • Il n'est pas recommandé de transmettre des objets dans des tableaux car cela peut produire des résultats inattendus en raison de l'imbrication, qui n'est pas prise en charge par le filtrage basé sur les attributs. Utilisez le filtrage basé sur la charge utile pour les politiques imbriquées.

  • Numberest pris en charge pour les valeurs d'attributs numériques.

  • Amazon SNS ignore les attributs des messages dont le type de données est binaire.

Exemple de politique en matière de complexité :

Dans l'exemple de politique suivant, la première clé possède trois opérateurs de correspondance, la seconde un opérateur de correspondance et la troisième deux opérateurs de correspondance.

{ "key_a": ["value_one", "value_two", "value_three"], "key_b": ["value_one"], "key_c": ["value_one", "value_two"] }

La combinaison totale est calculée comme le produit du nombre d'opérateurs de correspondance pour chaque clé de la politique de filtrage :

3(match operators of key_a) x 1(match operators of key_b) x 2(match operators of key_c) = 6

Contraintes de politique pour le filtrage basé sur la charge utile

Pour passer du filtrage basé sur les attributs (par défaut) au filtrage basé sur la charge utile, vous devez définir l'étendue FilterPolicyScope sur MessageBody dans l'abonnement.

  • Amazon SNS accepte une politique de filtre imbriquée pour le filtrage basé sur la charge utile.

  • Pour une politique imbriquée, seules les clés en forme de feuille sont prises en compte dans le calcul de la limite des cinq clés.

Exemple de politique en matière de limite de clés :

Dans l'exemple de stratégie suivant :

  • Il existe deux clés en forme de feuille : key_c etkey_e.

  • key_cpossède quatre opérateurs de correspondance avec un niveau imbriqué de trois, et key_e possède trois opérateurs de correspondance avec un niveau imbriqué de deux.

{ "key_a": { "key_b": { "key_c": ["value_one", "value_two", "value_three", "value_four"] } }, "key_d": { "key_e": ["value_one", "value_two", "value_three"] } }

La combinaison totale est calculée comme le produit du nombre d'opérateurs de correspondance et du niveau imbriqué pour chaque clé de la politique de filtrage :

4(match operators of key_c) x 3(nested level of key_c) x 3(match operators of key_e) x 2(nested level of key_e) = 72

Consignes d'utilisation des modèles Wildcard

Amazon SQS met en œuvre des protections lorsque vous enregistrez une politique de filtre contenant des caractères génériques afin de garantir que des politiques de filtrage trop complexes ne soient pas créées, car cela aurait un impact sur les performances de votre application.

Structure du motif

Les champs contiennent un ou plusieurs modèles. L'exemple suivant montre un champ utilisant deux modèles :

{ "greeting": [ {"anything-but": {"prefix": "Hello"}}, {"wildcard": "H*"} ] // 2 patterns }

Règles de complexité

  • La complexité totale des caractères génériques dans tous les champs ne doit pas dépasser 100 points

  • Maximum de 3 jokers par motif

Calcul de la complexité

  • Complexité du champ = (Sum of pattern points) × (Number of patterns)

  • Points du motif :

    Un joker unique : 1 point

    Plusieurs jokers : 3 points chacun

    Tout sauf : 1 point

    Voici un exemple de calcul de la complexité :

    { "filename": [ {"wildcard": "*.txt"}, // 1 point {"wildcard": "log*"} // 1 point ] // Total: (1 + 1) × 2 = 4 points }