

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.

# Exemples de politiques de filtrage Amazon SNS
<a name="example-filter-policies"></a>

L'exemple suivant montre une charge utile de message diffusée par une rubrique Amazon SNS qui traite des transactions clients.

Le premier exemple comprend le champ `MessageAttributes` avec des attributs qui décrivent la transaction :
+ Intérêts du client
+ Nom du magasin
+ État de l'événement
+ Prix d'achat en USD

Étant donné que ce message comprend le champ `MessageAttributes`, tout abonnement à une rubrique qui définit un `FilterPolicy` peut accepter ou rejeter le message de façon sélective, à condition que `FilterPolicyScope` soit défini sur `MessageAttributes` dans l'abonnement. Pour plus d'informations sur l'application d'attributs à un message, consultez [Attributs de message Amazon SNS](sns-message-attributes.md).

```
{
   "Type": "Notification",
   "MessageId": "a1b2c34d-567e-8f90-g1h2-i345j67klmn8",
   "TopicArn": "arn:aws:sns:us-east-2:123456789012:MyTopic",
   "Message": "{{message-body-with-transaction-details}}",
   "Timestamp": "2019-11-03T23:28:01.631Z",
   "SignatureVersion": "4",
   "Signature": "{{signature}}",
   "UnsubscribeURL": "{{unsubscribe-url}}",
   "MessageAttributes": {
      "customer_interests": {
         "Type": "String.Array",
         "Value": "[\"soccer\", \"rugby\", \"hockey\"]"
      },
      "store": {
         "Type": "String",
         "Value":"example_corp"
      },
      "event": {
         "Type": "String",
         "Value": "order_placed"
      },
      "price_usd": {
         "Type": "Number", 
         "Value": "210.75"
      }
   }
}
```

L'exemple suivant montre les mêmes attributs inclus dans le champ `Message`, également appelés *charge utile du message* ou *corps de message*. Tout abonnement à une rubrique qui définit un `FilterPolicy` peut accepter ou rejeter le message de façon sélective, à condition que `FilterPolicyScope` soit défini sur `MessageBody` dans l'abonnement. 

```
{
"Type": "Notification",
   "MessageId": "a1b2c34d-567e-8f90-g1h2-i345j67klmn8",
   "TopicArn": "arn:aws:sns:us-east-2:123456789012:MyTopic",
   "Message": "{
      \"customer_interests\": [\"soccer\", \"rugby\", \"hockey\"],
      \"store\": \"example_corp\",
      \"event\":\"order_placed\",
      \"price_usd\":210.75
   }",
   "Timestamp": "2019-11-03T23:28:01.631Z",
   "SignatureVersion": "4",
   "Signature": "signature",
   "UnsubscribeURL": "unsubscribe-url"
}
```

Les politiques de filtre suivantes acceptent ou rejettent les messages en fonction de leurs noms et valeurs d'attribut.

## Une politique qui accepte l'exemple de message
<a name="policy-accepts-messages"></a>

Les propriétés de la politique de filtre d'abonnement suivante correspondent aux attributs affectés à l'exemple de message. Notez que la même politique de filtre fonctionne pour un `FilterPolicyScope` qu'elle soit définie sur `MessageAttributes` ou `MessageBody`. Chaque abonné choisit son étendue de filtre en fonction de la composition des messages qu'il reçoit de la rubrique.

Si une seule propriété de cette politique ne correspond pas à un attribut affecté au message, la politique rejette le message.

```
{
   "store": ["example_corp"],
   "event": [{"anything-but": "order_cancelled"}],
   "customer_interests": [
      "rugby",
      "football",
      "baseball"
   ],
   "price_usd": [{"numeric": [">=", 100]}]
}
```

## Une politique qui rejette l'exemple de message
<a name="policy-rejects-messages"></a>

La politique de filtre d'abonnement suivante comporte plusieurs différences entre ses propriétés et les attributs affectés à l'exemple de message. Par exemple, comme le nom de propriété `encrypted` n'est pas présent dans les attributs du message, cette propriété de la politique entraîne le rejet du message, quelle que soit la valeur qui lui est affectée. 

En cas de non-correspondance, la politique rejette le message.

```
{
   "store": ["example_corp"],
   "event": ["order_cancelled"],
   "encrypted": [false],
   "customer_interests": [
      "basketball",
      "baseball"
   ]
}
```