

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á.

# Exemplo de políticas de filtro do Amazon SNS
<a name="example-filter-policies"></a>

O exemplo a seguir mostra uma carga útil da mensagem entregue por um tópico do Amazon SNS que processa as 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 mensagem do 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"
      }
   }
}
```

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
<a name="policy-accepts-messages"></a>

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 name="policy-rejects-messages"></a>

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