Atributos de mensagem do Amazon SNS
O Amazon SNS oferece suporte à entrega de atributos de mensagem, o que permite que você forneça itens de metadados estruturados (como time stamps, dados geoespaciais, assinaturas e identificadores) sobre a mensagem. Para assinaturas SQS, no máximo dez atributos de mensagem podem ser enviados quando Raw Message Delivery (Entrega de mensagens brutas) estiver habilitado. Para enviar mais de dez atributos de mensagem, é necessário desabilitar Entrega de mensagens brutas. As mensagens com mais de 10 atributos de mensagem direcionadas para assinaturas do Amazon SQS habilitadas para entrega bruta de mensagens serão descartadas como erros do lado do cliente.
Os atributos de mensagem são opcionais e separados do corpo da mensagem, mas são enviados junto com ele. O destinatário pode usar essas informações para decidir como lidar com ela sem ter de primeiro processar o corpo da mensagem.
Para obter informações sobre como enviar mensagens com atributos usando o AWS Management Console ou o AWS SDK for Java, veja o tutorial Para publicar mensagens nos tópicos do Amazon SNS usando o AWS Management Console.
nota
Os atributos de mensagens são enviados somente quando a estrutura da mensagem é String, e não JSON.
Também é possível usar atributos de mensagem para ajudar a estruturar a mensagem de notificação por push para endpoints móveis. Nesse cenário, os atributos de mensagens são usados somente para ajudar a estruturar a mensagem de notificação por push. Os atributos não são entregues ao endpoint do mesmo modo que são ao enviar mensagens com atributos de mensagem para endpoints do Amazon SQS.
Você também pode usar atributos de mensagens para que suas mensagens possam ser filtradas usando políticas de filtro de assinatura. Você pode aplicar as políticas de filtro a inscrições em tópicos. Quando uma política de filtro é aplicada com o escopo de políticas de filtro definido como MessageAttributes
(padrão), uma assinatura recebe somente aquelas mensagens que têm atributos aceitos pela política. Para ter mais informações, consulte Filtragem de mensagens do Amazon SNS.
nota
Quando atributos de mensagem são usados para filtragem, o valor deve ser uma string JSON válida. Isso garante que a mensagem seja entregue a uma assinatura com a filtragem de atributos de mensagem ativada.
Validação e itens de atributos de mensagem
Cada atributo de mensagem consiste nos seguintes itens:
-
Nome: o nome do atributo de mensagem pode conter os seguintes caracteres: A-Z, a-z, 0-9, sublinhado (_), hífen (-) e ponto (.). O nome não deve iniciar ou terminar com um ponto, e nem ter pontos sucessivos. O nome diferencia maiúsculas e minúsculas e deve ser exclusivo entre todos os nomes de atributos para a mensagem. O nome pode ter até 256 caracteres. O nome não pode começar com
AWS.
ouAmazon.
(ou quaisquer variações em maiúsculas e minúsculas) porque esses prefixos são reservados para uso da Amazon Web Services. -
Tipo: os tipos de dados de atributo de mensagem compatíveis são
String
,String.Array
,Number
eBinary
. O tipo de dados tem as mesmas restrições no conteúdo que o corpo da mensagem. Para obter mais informações, consulte a seção Tipos de dados de atributo de mensagem e validação. -
Valor: o valor do atributo de mensagem especificado pelo usuário. Para tipos de dados de string, o atributo de valor tem as mesmas restrições no conteúdo que o corpo da mensagem. Para obter mais informações, consulte a ação Publish na Referência da API do Amazon Simple Notification Service.
Nome, tipo e valor não podem estar vazios ou nulos. Além disso, o corpo da mensagem não pode estar vazio ou nulo. Todas as partes do atributo da mensagem, incluindo o nome, o tipo e o valor, são incluídas na restrição de tamanho da mensagem, que é de 256 KB.
Tipos de dados de atributo de mensagem e validação
Os tipos de dados de atributo de mensagem identificam como os valores de atributo de mensagem são processados pelo Amazon SNS. Por exemplo, se o tipo for um número, o Amazon SNS validará que é um número.
O Amazon SNS é compatível com os seguintes tipos de dados lógicos em todos os endpoints, com exceção daqueles com observação contrária:
-
String: as strings são Unicode com codificação binária UTF-8. Para obter uma lista de valores de código, consulte http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters
. nota
Valores substitutos não são aceitos nos atributos da mensagem. Por exemplo, usar um valor substituto para representar um emoji apresentará o seguinte erro:
Invalid attribute value was passed in for message attribute
. -
String.Array: uma matriz, formatada como uma string, que pode conter vários valores. Os valores podem ser strings, números ou as palavras-chave
true
,false
enull
. Um String.Array de número ou tipo booliano não precisa de aspas. Vários valores String.Array são separados por vírgulas.Esse tipo de dados não é compatível com as assinaturas do AWS Lambda. Se você especificar esse tipo de dados para endpoints do Lambda, ele será passado como o tipo de dados
String
na carga útil JSON que o Amazon SNS entrega ao Lambda. -
Number: números são inteiros positivos ou negativos ou com ponto flutuante. Números têm alcance e precisão suficientes para abranger a maioria dos possíveis valores que números inteiros, flutuantes e duplicados normalmente comportam. Um número pode ter um valor de -109 a 109, com 5 dígitos de precisão após o ponto decimal. Zeros iniciais e finais são cortados.
Esse tipo de dados não é compatível com as assinaturas do AWS Lambda. Se você especificar esse tipo de dados para endpoints do Lambda, ele será passado como o tipo de dados
String
na carga útil JSON que o Amazon SNS entrega ao Lambda. -
Binary: os atributos de tipo binário podem armazenar qualquer dado binário, por exemplo, dados compactados, dados criptografados ou imagens.
Atributos de mensagens reservados para notificações móveis por push
A tabela a seguir lista os atributos de mensagens reservadas para serviços de notificação móvel por push que você pode usar para estruturar a mensagem de notificação por push:
Serviço de notificação por push | Atributo de mensagem reservada |
---|---|
ADM | AWS.SNS.MOBILE.ADM.TTL |
APNs1 | AWS.SNS.MOBILE.APNS_MDM.TTL |
AWS.SNS.MOBILE.APNS_MDM_SANDBOX.TTL |
|
AWS.SNS.MOBILE.APNS_PASSBOOK.TTL |
|
AWS.SNS.MOBILE.APNS_PASSBOOK_SANDBOX.TTL |
|
AWS.SNS.MOBILE.APNS_SANDBOX.TTL |
|
AWS.SNS.MOBILE.APNS_VOIP.TTL |
|
AWS.SNS.MOBILE.APNS_VOIP_SANDBOX.TTL |
|
AWS.SNS.MOBILE.APNS.COLLAPSE_ID |
|
AWS.SNS.MOBILE.APNS.PRIORITY |
|
AWS.SNS.MOBILE.APNS.PUSH_TYPE |
|
AWS.SNS.MOBILE.APNS.TOPIC |
|
AWS.SNS.MOBILE.APNS.TTL |
|
Baidu |
AWS.SNS.MOBILE.BAIDU.DeployStatus
|
AWS.SNS.MOBILE.BAIDU.MessageKey |
|
AWS.SNS.MOBILE.BAIDU.MessageType |
|
AWS.SNS.MOBILE.BAIDU.TTL |
|
FCM | AWS.SNS.MOBILE.FCM.TTL |
AWS.SNS.MOBILE.GCM.TTL |
|
macOS | AWS.SNS.MOBILE.MACOS_SANDBOX.TTL |
AWS.SNS.MOBILE.MACOS.TTL |
|
MPNS |
AWS.SNS.MOBILE.MPNS.NotificationClass |
AWS.SNS.MOBILE.MPNS.TTL |
|
|
|
WNS | AWS.SNS.MOBILE.WNS.CachePolicy |
AWS.SNS.MOBILE.WNS.Group |
|
AWS.SNS.MOBILE.WNS.Match |
|
AWS.SNS.MOBILE.WNS.SuppressPopup |
|
AWS.SNS.MOBILE.WNS.Tag |
|
AWS.SNS.MOBILE.WNS.TTL |
|
AWS.SNS.MOBILE.WNS.Type
|
1 A Apple rejeitará as notificações do Amazon SNS se os atributos das mensagens não atenderem aos requisitos. Para obter mais detalhes, consulte Enviar solicitações de notificação para APNs