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