SNSEjemplos de políticas de filtrado de Amazon - Amazon Simple Notification Service

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" ] }