SNSExemplo de políticas de filtro da Amazon - Amazon Simple Notification Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

SNSExemplo de políticas de filtro da Amazon

O exemplo a seguir mostra a carga útil de uma mensagem entregue por um SNS tópico da Amazon que processa transações de clientes.

O primeiro exemplo inclui o campo MessageAttributes com atributos que descrevem a transação:

  • Interesses do cliente

  • Nome do repositório

  • Estado do evento

  • Preço de compra em USD

Como essa mensagem inclui o campo MessageAttributes, qualquer assinatura de tópico que defina uma FilterPolicy pode aceitar ou rejeitar seletivamente a mensagem, desde que FilterPolicyScope esteja definido como MessageAttributes na assinatura. Para obter mais informações sobre a aplicação de atributos a uma mensagem, consulte Atributos de SNS mensagem da 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" } } }

O exemplo a seguir mostra os mesmos atributos incluídos no campo Message, também chamado de carga útil da mensagem ou corpo da mensagem. Qualquer assinatura de tópico que inclui uma FilterPolicy pode aceitar ou rejeitar seletivamente a mensagem, desde que FilterPolicyScope esteja definido como MessageBody na assinatura.

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

As políticas de filtro a seguir aceitam ou rejeitam mensagens com base em seus nomes e valores de propriedades.

Uma política que aceita a mensagem de exemplo

As propriedades na política de filtro de assinatura a seguir correspondem aos atributos da mensagem de exemplo. Observe que a mesma política de filtro funciona para um FilterPolicyScope definido como MessageAttributes ou MessageBody. Cada assinante escolhe seu escopo de filtragem de acordo com a composição das mensagens que recebe do tópico.

Se qualquer propriedade única nessa política não corresponder a um atributo da mensagem, a política rejeitará a mensagem.

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

Uma política que rejeita a mensagem de exemplo

A política de filtro de assinatura a seguir tem várias incompatibilidades entre seus atributos e as propriedades da mensagem de exemplo. Por exemplo, como o nome da propriedade encrypted não está presente nos atributos da mensagem, essa propriedade de política faz com que a mensagem seja rejeitada, independentemente do valor atribuído a ela.

Se ocorrer qualquer incompatibilidade, a política rejeitará a mensagem.

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