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.
SNSEjemplos de políticas de filtrado de Amazon
El siguiente ejemplo muestra una carga de mensajes entregada por un SNS tema de Amazon que procesa las transacciones de los clientes.
El primer ejemplo incluye el campo MessageAttributes
con atributos que describen la transacción:
-
Intereses del cliente
-
Nombre del almacén
-
Estado del evento
-
Precio de compra en USD
Como este mensaje incluye el campo MessageAttributes
, cualquier suscripción a un tema que establezca una FilterPolicy
puede aceptar o rechazar el mensaje de forma selectiva, siempre y cuando FilterPolicyScope
esté configurado en MessageAttributes
en la suscripción. Para obtener información sobre cómo aplicar atributos a un mensaje, consulte Atributos de los SNS mensajes de 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"
}
}
}
En el siguiente ejemplo se muestran los mismos atributos incluidos en el campo Message
, también denominado message payload (carga del mensaje) o message body (cuerpo del mensaje). La suscripción al tema que incluye una FilterPolicy
puede aceptar o rechazar el mensaje de forma selectiva, siempre y cuando FilterPolicyScope
esté configurado en MessageBody
en la suscripción.
{
"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"
}
Las siguientes políticas de filtro aceptan o rechazan mensajes en función de los nombres de propiedad y valores.
Política que acepta el mensaje de ejemplo
Las propiedades de la siguiente política de filtrado de suscripciones coinciden con los atributos asignados en el mensaje de ejemplo. Tenga en cuenta que la misma política de filtrado funciona para un FilterPolicyScope
si está configurado en MessageAttributes
o MessageBody
. Cada suscriptor elige el alcance de filtrado en función de la composición de los mensajes que recibe del tema.
Si la propiedad de esta política no coincide con un atributo asignado en el mensaje, la política rechaza el mensaje.
{
"store": ["example_corp"],
"event": [{"anything-but": "order_cancelled"}],
"customer_interests": [
"rugby",
"football",
"baseball"
],
"price_usd": [{"numeric": [">=", 100]}]
}
Política que rechaza el mensaje de ejemplo
La siguiente política de filtrado de suscripciones tiene varias discrepancias entre las propiedades y los atributos asignados en el mensaje de ejemplo. Por ejemplo, como el nombre de propiedad encrypted
no aparece en los atributos del mensaje, esta propiedad de la política provoca que se rechace el mensaje, con independencia del valor que tenga asignado.
Si se producen discrepancias, la política rechaza el mensaje.
{
"store": ["example_corp"],
"event": ["order_cancelled"],
"encrypted": [false],
"customer_interests": [
"basketball",
"baseball"
]
}