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.
SNSExemples de politiques de filtrage Amazon
L'exemple suivant montre la charge utile d'un message envoyé par un SNS sujet Amazon qui traite les transactions des 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 des SNS messages Amazon.
{
"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
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
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"
]
}