237
Amazon Simple Notification Service Guia do desenvolvedor Versão da API 2010-03-31

Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Embed Size (px)

Citation preview

Page 1: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon SimpleNotification Service

Guia do desenvolvedorVersão da API 2010-03-31

Page 2: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedor

Amazon Simple Notification Service: Guia do desenvolvedorCopyright © 2018 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's, in any mannerthat is likely to cause confusion among customers, or in any manner that disparages or discredits Amazon. All other trademarks notowned by Amazon are the property of their respective owners, who may or may not be affiliated with, connected to, or sponsored byAmazon.

Page 3: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedor

Table of ContentsO que é Amazon SNS? ....................................................................................................................... 1

Você é um usuário do Amazon Simple Notification Service de primeira viagem? ................................... 2Além da seção de conceitos básicos ............................................................................................. 2Acesso ao Amazon SNS ............................................................................................................. 2Cenários comuns ........................................................................................................................ 3

Fanout .............................................................................................................................. 3Alertas de aplicativos e do sistema ....................................................................................... 4E-mail por push e mensagens de texto .................................................................................. 4Notificações por push para dispositivos móveis ....................................................................... 4Durabilidade das mensagens ............................................................................................... 4

Conceitos básicos ............................................................................................................................... 5Antes de começar ...................................................................................................................... 5Criar um tópico .......................................................................................................................... 5Inscrever-se em um tópico ........................................................................................................... 6Publicar em um tópico ................................................................................................................ 7

Criar diferentes mensagens para cada protocolo ..................................................................... 8Limpar ...................................................................................................................................... 9Uso do SDK para Java .............................................................................................................. 10

Gerenciamento de acesso .................................................................................................................. 12Visão geral .............................................................................................................................. 12

Quando usar o controle de acesso ...................................................................................... 12Principais conceitos ........................................................................................................... 13Visão geral da arquitetura .................................................................................................. 15Uso do Linguagem de políticas de acesso ............................................................................ 18Lógica de avaliação .......................................................................................................... 20Exemplos de casos de controle de acesso do Amazon SNS .................................................... 25

Informações especiais para políticas do Amazon SNS .................................................................... 29Limites de políticas do Amazon SNS ................................................................................... 29Ações de políticas válidas do Amazon SNS .......................................................................... 29Chaves do Amazon SNS ................................................................................................... 30

Controle do acesso de usuários à sua conta da AWS .................................................................... 30Políticas do IAM e do Amazon SNS juntas ........................................................................... 30ARNs do Amazon SNS ...................................................................................................... 33Ações do Amazon SNS ..................................................................................................... 34Chaves do Amazon SNS ................................................................................................... 34Exemplo de políticas para o Amazon SNS ............................................................................ 34Uso de credenciais de segurança temporárias ...................................................................... 36

Push para dispositivos móveis do Amazon SNS .................................................................................... 37Visão geral .............................................................................................................................. 37Pré-requisitos ........................................................................................................................... 38Etapas de alto nível de push para dispositivos móveis .................................................................... 39

Etapa 1: Solicitar credenciais de plataformas móveis .............................................................. 39Etapa 2: Solicitar token de plataformas móveis ...................................................................... 39Etapa 3: Criar objeto de aplicativo da plataforma ................................................................... 40Etapa 4: Criar objeto de endpoint da plataforma .................................................................... 40Etapa 5: Publicar mensagem no endpoint móvel .................................................................... 40

Conceitos básicos do ADM ........................................................................................................ 40Pré-requisitos do ADM ....................................................................................................... 41Etapa 1: Criar um aplicativo do Kindle Fire com o serviço ADM habilitado .................................. 41Etapa 2: Obter um ID e um segredo de cliente ...................................................................... 42Etapa 3: Obter uma chave de API ....................................................................................... 42Etapa 4: Obter um ID de registro ........................................................................................ 42Etapa 5: Enviar uma mensagem para um aplicativo do Kindle Fire usando Amazon SNS e ADM .... 43

Conceitos básicos do APNS ....................................................................................................... 45

Versão da API 2010-03-31iii

Page 4: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedor

Pré-requisitos do APNS ..................................................................................................... 45Etapa 1: Criar um aplicativo iOS ......................................................................................... 46Etapa 2: Obter um certificado SSL para APNS ...................................................................... 46Etapa 3: Obter a chave privada do aplicativo ........................................................................ 46Etapa 4: Verificar o certificado e a chave privada do aplicativo ................................................. 47Etapa 5: Obter um token de dispositivo ................................................................................ 47Próximas etapas ............................................................................................................... 48Envie uma mensagem para um aplicativo iOS ....................................................................... 48Enviar uma mensagem para um aplicativo VoIP .................................................................... 50Enviar uma mensagem para um aplicativo Mac OS X ............................................................ 51

Conceitos básicos do Baidu ....................................................................................................... 51Pré-requisitos do Baidu ...................................................................................................... 51Etapa 1: Criar uma conta do Baidu ..................................................................................... 52Etapa 2: Registrar-se como um desenvolvedor do Baidu ......................................................... 53Etapa 3: Criar um projeto de push em nuvem do Baidu .......................................................... 56Etapa 4: Baixar e instalar o aplicativo de demonstração Android .............................................. 59Etapa 5: Obter um ID de usuário e um ID de canal ................................................................ 63Etapa 6: Enviar uma mensagem de notificação por push para um endpoint móvel usandoAmazon SNS e Baidu ....................................................................................................... 63

Conceitos básicos do GCM ........................................................................................................ 67Pré-requisitos do GCM ...................................................................................................... 67Etapa 1: Criar um projeto de API do Google e habilitar o serviço GCM ...................................... 68Etapa 2: Obter a chave de API do servidor ........................................................................... 68Etapa 3: Obter um ID de registro do GCM ............................................................................ 68Etapa 4: Enviar uma mensagem para um endpoint móvel usando GCM ..................................... 70

Conceitos básicos do MPNS ...................................................................................................... 72Pré-requisitos do MPNS ..................................................................................................... 72Etapa 1: Configurar seu aplicativo Windows Phone para receber mensagens de notificação porpush ............................................................................................................................... 72Etapa 2: Obter um URI de notificação por push do MPNS ....................................................... 73Etapa 3: Criar uma conta de desenvolvedor do Windows ........................................................ 73Etapa 4: Carregar certificado TLS ....................................................................................... 73Etapa 5: Enviar uma mensagem de notificação por push para um aplicativo Windows Phoneusando Amazon SNS eMPNS ............................................................................................ 73

Conceitos básicos do WNS ........................................................................................................ 75Pré-requisitos do WNS ...................................................................................................... 75Etapa 1: Configurar seu aplicativo para receber mensagens de notificação por push .................... 76Etapa 2: Obter um URI de notificação por push do WNS ........................................................ 76Etapa 3: Obter um identificador de segurança do pacote do WNS ............................................ 76Etapa 4: Obter uma chave secreta do WNS ......................................................................... 76Etapa 5: Enviar uma mensagem de notificação por push para um aplicativo usando AmazonSNS e WNS .................................................................................................................... 76

Uso do push para dispositivos móveis do Amazon SNS .................................................................. 78Registre seu aplicativo móvel na AWS ................................................................................. 78Adicione tokens de dispositivo ou IDs de registro .................................................................. 80Criar um endpoint de plataforma e gerenciar tokens de dispositivo ........................................... 83Enviar uma mensagem direta para um dispositivo móvel ........................................................ 87Enviar mensagens para dispositivos móveis inscritos em um tópico .......................................... 88Enviar cargas personalizadas específicas à plataforma para dispositivos móveis ......................... 88

Atributos de aplicativo para status de entrega de mensagens .......................................................... 90Configuração de atributos de status de entrega de mensagens com Console de gerenciamentoda AWS .......................................................................................................................... 91Exemplos de log do CloudWatch de status de entrega de mensagens do Amazon SNS ................ 91Configuração de atributos de status de entrega de mensagens com AWS SDKs ......................... 92Códigos de resposta da plataforma ..................................................................................... 92

Notificações de eventos do aplicativo ........................................................................................... 93Eventos do aplicativo disponíveis ........................................................................................ 93

Versão da API 2010-03-31iv

Page 5: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedor

Envio de notificações de eventos do aplicativo ...................................................................... 94TTL do Amazon SNS ................................................................................................................ 95

Atributos da mensagem do TTL para serviços de notificação por push ...................................... 96Ordem de precedência para determinar o TTL ...................................................................... 96Especificação de TTL com Console de gerenciamento da AWS ............................................... 97Especificação do TTL com AWS SDKs ................................................................................ 97

APIs para push para dispositivos móveis do Amazon SNS .............................................................. 97Erros de API ............................................................................................................................ 99

Envio de mensagens para filas do Amazon SQS ................................................................................. 107Etapa 1. Obtenha o ARN da fila e do tópico. ............................................................................... 108Etapa 2. Conceda permissão para o tópico do Amazon SNS enviar mensagens para a fila do AmazonSQS ...................................................................................................................................... 108Etapa 3. Inscreva a fila no tópico do Amazon SNS ...................................................................... 109Etapa 4. Conceda aos usuários permissões para o tópico apropriado e as ações de fila ..................... 110

Adição de uma política para um usuário ou grupo do IAM ..................................................... 110Adição de uma política a um tópico ou uma fila ................................................................... 111

Etapa 5. Testar ....................................................................................................................... 112Envio de mensagens para uma fila em uma conta diferente ........................................................... 113

Proprietário da fila cria inscrição ........................................................................................ 113Usuário que não é proprietário da fila cria a inscrição ........................................................... 114

Uso de um modelo do AWS CloudFormation para criar um tópico que envia mensagens para filas doAmazon SQS ......................................................................................................................... 116

Uso de um modelo do &CFN para definir tópicos e filas dentro de uma conta da AWS ................ 116Envio de mensagens SMS ............................................................................................................... 121

Definição de preferências ......................................................................................................... 121Definição de preferências (console) ................................................................................... 122Definição de Preferências (AWS SDKs) .............................................................................. 123

Envio de uma mensagem ......................................................................................................... 124Envio de mensagem (console) .......................................................................................... 125Envio de uma mensagem (AWS SDKs) .............................................................................. 125

Envio de uma mensagem para vários números de telefone ........................................................... 127Envio de uma mensagem para um tópico (console) .............................................................. 127Envio de uma mensagem para um tópico (AWS SDKs) ........................................................ 128

Monitoramento de atividade de SMS .......................................................................................... 131Exibição de estatísticas de entrega .................................................................................... 131Exibição de métricas e logs do CloudWatch ........................................................................ 132Exibição de relatórios de uso ............................................................................................ 134

Gerenciamento de inscrições .................................................................................................... 136Cancelamento do recebimento de mensagens SMS ............................................................. 136Gerenciamento de números de telefone e inscrições (console) ............................................... 137Gerenciamento de números de telefone e inscrições (AWS SDKs) .......................................... 138

Reservar um código simplificado ............................................................................................... 140Regiões e países compatíveis ................................................................................................... 141

Envio de mensagens do para endpoints HTTP/HTTPS ......................................................................... 149Etapa 1: Verificar se o endpoint está pronto para processar mensagens do Amazon SNS ................... 150Etapa 2: Inscrever o endpoint HTTP/HTTPS no tópico do Amazon SNS ........................................... 153Etapa 3: Confirmar a inscrição .................................................................................................. 153Etapa 4: Definir a política de novas tentativas de entrega para a inscrição (opcional) .......................... 154Etapa 5: Conceder aos usuários permissões para publicar no tópico (opcional) ................................. 154Etapa 6: Enviar mensagens para o endpoint HTTP/HTTPS ............................................................ 155Configuração de políticas de nova tentativa de entrega do Amazon SNS para endpoints HTTP/HTTPS .. 155

Aplicação de políticas de entrega em tópicos e inscrições ..................................................... 158Configuração da taxa de recebimento máxima ..................................................................... 159Fase de nova tentativa imediata ........................................................................................ 160Fase de pré-recuo ........................................................................................................... 160Fase de recuo ................................................................................................................ 160Fase de pós-recuo .......................................................................................................... 161

Versão da API 2010-03-31v

Page 6: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedor

Autoridades de certificação para endpoints HTTPS ...................................................................... 162Verificando assinaturas de mensagens ....................................................................................... 169Exemplo de código para um servlet Java de endpoint ................................................................... 172

Chamada de funções do Lambda ...................................................................................................... 175Pré-requisitos ......................................................................................................................... 175Configuração do Amazon SNS com endpoints do Lambda com o Console de gerenciamento da AWS ... 175

Uso dos atributos de tópico do Amazon SNS para status de entrega de mensagens .................................. 177Configuração de atributos de status de entrega de mensagens com Console de gerenciamento daAWS ..................................................................................................................................... 177Configuração de atributos de status de entrega de mensagens para tópicos inscritos de endpoints doAmazon SNS com AWS SDKs .................................................................................................. 178

Atributos de tópicos ......................................................................................................... 178Exemplo do Java sobre configurar os atributos de tópicos ..................................................... 179

Uso de atributos de mensagens ........................................................................................................ 180Validação e itens de atributos de mensagem .............................................................................. 180Tipos de dados ....................................................................................................................... 181Atributos de mensagens reservados para notificações móveis por push ........................................... 181Aplicação de atributos de mensagens ........................................................................................ 182

Aplicação de atributos de mensagens com o console ........................................................... 182Aplicação de atributos de mensagens com o AWS CLI ......................................................... 182Aplicação de atributos de mensagens com o AWS SDK for Java ............................................ 183Aplicação de atributos de mensagens com a API do Amazon SNS ......................................... 184

Filtragem de mensagens .................................................................................................................. 185Políticas de filtros de assinatura ................................................................................................ 185

Exemplo de mensagens com atributos ............................................................................... 186Exemplo de políticas de filtro ............................................................................................ 186.................................................................................................................................... 187

Correspondência de valores de string ................................................................................ 187Correspondência de valores numéricos .............................................................................. 188Lógica E/OU ................................................................................................................... 188Restrições ...................................................................................................................... 187

Aplicação ............................................................................................................................... 189Aplicação de uma política de filtro com o console ................................................................ 190Aplicação de uma política de filtro com o AWS CLI .............................................................. 190Aplicação de uma política de filtro com o AWS SDK for Java ................................................. 191Aplicação de uma política de filtro com a API do Amazon SNS .............................................. 194

Remoção ............................................................................................................................... 194Remoção de uma política de filtro com o console ................................................................ 194Remoção de uma política de filtro com a AWS CLI .............................................................. 194Remoção de uma política de filtro com o AWS SDK for Java ................................................. 194Remoção de uma política de filtro com a API do Amazon SNS ............................................... 195

Monitoramento do Amazon SNS com o CloudWatch ............................................................................ 196Acesse métricas do CloudWatch para Amazon SNS ..................................................................... 196Definir alertas do CloudWatch para métricas do Amazon SNS ....................................................... 197Métricas do Amazon SNS ........................................................................................................ 198Dimensões para métricas do Amazon Simple Notification Service ................................................... 200

Registro de chamadas de API do Amazon SNS por meio do CloudTrail ................................................... 201Informações sobre o Amazon SNS no CloudTrail ......................................................................... 201Noções básicas das entradas de arquivos de log do Amazon SNS ................................................. 202

Publicação de uma VPC .................................................................................................................. 205Publicar mensagens de maneira privada a partir da VPC .............................................................. 205

Antes de começar ........................................................................................................... 206Etapa 1: criar um par de chaves ....................................................................................... 206Etapa 2: criar recursos ..................................................................................................... 207Etapa 3: verificar a conexão da instância com a Internet ....................................................... 209Etapa 4: criar um endpoint ............................................................................................... 210Etapa 5: publicar uma mensagem ..................................................................................... 212

Versão da API 2010-03-31vi

Page 7: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedor

Etapa 6: verificar ............................................................................................................. 212Etapa 7: Limpeza ............................................................................................................ 214Recursos relacionados ..................................................................................................... 207

Criar uma VPC Endpoint para o Amazon SNS ............................................................................ 215Criação do endpoint ........................................................................................................ 215Teste de conexão ........................................................................................................... 215

Apêndice. Mensagem e formatos JSON ............................................................................................. 217Cabeçalhos HTTP/HTTPS ........................................................................................................ 217Formato JSON de confirmação de inscrição HTTP/HTTPS ............................................................ 218Formato JSON de notificação HTTP/HTTPS ............................................................................... 220Formato JSON de confirmação de cancelamento de inscrição de HTTP/HTTPS ................................ 221Formato JSON da política de entrega de SetSubscriptionAttributes ................................................. 223Formato JSON da política de Entrega SetTopicAttributes .............................................................. 223

Apêndice: Grande carga e entrega de mensagens brutas ...................................................................... 225Habilitação da entrega de mensagens brutas com o Console de gerenciamento da AWS .................... 225

Histórico do documento .................................................................................................................... 227

Versão da API 2010-03-31vii

Page 8: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedor

O que é Amazon Simple NotificationService?

Amazon Simple Notification Service (Amazon SNS) é um web service que coordena e gerencia a entregaou o envio de mensagens para endpoints ou clientes inscritos. No Amazon SNS, há dois tipos de clientes –os editores e os inscritos – também chamados de produtores e consumidores. Os editores se comunicamde maneira assíncrona com os inscritos produzindo e enviando uma mensagem para um tópico, que é umcanal de comunicação e um ponto de acesso lógico. Os inscritos (servidores da Web, endereços de e-mail,Amazon SQS, filas, funções do AWS Lambda) consomem ou recebem a mensagem ou notificação emum dos protocolos compatíveis (Amazon SQS, HTTP/S, e-mail, SMS, Lambda) quando estão inscritos notópico.

Ao usar Amazon SNS, você (como proprietário) cria um tópico e controla o acesso a ele, definindo políticasque determinam quais editores e inscritos podem se comunicar com o tópico. Um editor envia mensagenspara tópicos criados por ele ou para tópicos nos quais ele tem permissão para publicar. Em vez de incluirum endereço de destino específico em cada mensagem, um editor envia uma mensagem para o tópico.Amazon SNS vincula o tópico a uma lista de inscritos que se inscreveram nesse tópico, e entrega amensagem para cada um desses inscritos. Cada tópico tem um nome exclusivo que identifica o endpointdo Amazon SNS para os editores publicarem mensagens e os inscritos se inscreverem para recebernotificações. Os inscritos recebem todas as mensagens publicadas nos tópicos para os quais eles seinscrevem, e todos os inscritos em um tópico recebem as mesmas mensagens.

Tópicos• Você é um usuário do Amazon Simple Notification Service de primeira viagem? (p. 2)• Além da seção de conceitos básicos (p. 2)

Versão da API 2010-03-311

Page 9: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorVocê é um usuário do Amazon Simple

Notification Service de primeira viagem?

• Acesso ao Amazon SNS (p. 2)• Cenários comuns do Amazon SNS (p. 3)

Você é um usuário do Amazon Simple NotificationService de primeira viagem?

Se você está usando o Amazon SNS pela primeira vez, recomendamos que leia a seção Conceitosbásicos do Amazon Simple Notification Service (p. 5) para começar. Essa seção mostra como criarum tópico, inscrever-se nele, publicar uma mensagem nele, cancelar a inscrição nele e, por fim, excluir otópico.

Além da seção de conceitos básicosAlém da seção de conceitos básicos, você provavelmente deseja saber mais sobre as operações doAmazon SNS. As seções a seguir oferecem informações detalhadas sobre o trabalho com o Amazon SNS:

• Gerenciamento de acesso aos seus tópicos do Amazon SNS (p. 12)

Você tem controle detalhado sobre quais endpoints são permitidos por um tópico, quem pode publicarem um tópico e cumprindo quais condições. Essa seção mostra como controlar o acesso por meio douso de políticas de controle de acesso.

• Monitoramento do Amazon SNS com o CloudWatch (p. 196)

Amazon SNS e CloudWatch são integrados para que você possa coletar, visualizar e analisar métricaspara cada tópico ativo do Amazon SNS.

• Envio de mensagens do Amazon SNS para filas do Amazon SQS (p. 107)

Amazon SNS pode ser usado para enviar mensagens de para uma ou mais filas do Amazon SQS.• Envio de mensagens SMS com o Amazon SNS (p. 121)

Você pode usar Amazon Simple Notification Service (Amazon SNS) para enviar notificações por SMSpara telefones celulares e smartphones habilitados para SMS.

• Envio de mensagens do Amazon SNS para endpoints HTTP/HTTPS (p. 149)

Amazon SNS pode ser usado para enviar mensagens de notificação para um ou mais endpoints HTTPou HTTPS.

Acesso ao Amazon SNSSe você tem uma conta da AWS, é possível acessar Amazon SNS das seguintes formas.

Console de Gerenciamento da AWS

O Console de gerenciamento da AWS oferece uma interface da web em que você pode gerenciarseus recursos de computação, armazenamento e outros recursos em nuvem. No Console degerenciamento da AWS, serviços individuais têm seu próprio console. Para abrir o console do AmazonSNS, faça login no https://console.aws.amazon.com/ e selecione SNS na página inicial do console,ou use o URL do console do SNS: https://console.aws.amazon.com/sns/. Para um tutorial queajuda a concluir tarefas comuns do SNS no console, consulte Conceitos básicos do Amazon SimpleNotification Service (p. 5).

Versão da API 2010-03-312

Page 10: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorCenários comuns

AWS Command Line Interface (&CLI)

Fornece comandos para um conjunto amplo de produtos da AWS e é compatível com Windows, Mace Linux. Para começar, consulte o Guia do usuário do AWS Command Line Interface. Para obtermais informações sobre os comandos para o Amazon SNS, consulte sns em AWS CLI CommandReference.

AWS Tools para Windows PowerShell

Fornece comandos para um conjunto amplo de produtos da AWS para aqueles que usam script noambiente do PowerShell. Para começar, consulte o Guia do usuário do AWS Tools para WindowsPowerShell. Para obter mais informações sobre os cmdlets para Amazon SNS, consulte AmazonSimple Notification Service no AWS Tools para PowerShell Cmdlet Reference.

AWS SDKs

AWS oferece kits de desenvolvimento de software (SDKs) que consistem em bibliotecas e códigosde exemplo para várias linguagens de programação e plataformas (Java, Python, Ruby,.NET, iOS,Android etc.). Os SDKs fornecem uma forma conveniente para criar acesso programático paraAmazon SNS e AWS. Por exemplo, os SDKs processam tarefas como assinatura criptográfica desolicitações, gerenciamento de erros e novas tentativas automáticas de solicitações. Para obterinformações sobre os AWS SDKs, incluindo como baixar e instalá-los, consulte a página Ferramentaspara a Amazon Web Services.

API de consulta do Amazon SNS

Você pode acessar Amazon SNS e AWS de maneira programática usando a API de consultado Amazon SNS, que lhe permite executar solicitações diretamente no serviço. Para obter maisinformações, consulte Amazon Simple Notification Service API Reference.

Cenários comuns do Amazon SNSFanoutO cenário de “fan-out” ocorre quando uma mensagem do Amazon SNS é enviada para um tópico ereplicada e enviada por push para várias filas do Amazon SQS, endpoints HTTP ou endereços de e-mail.Isso permite o processamento paralelo assíncrono. Por exemplo, você pode desenvolver um aplicativoque envia uma mensagem do Amazon SNS para um tópico sempre que um pedido de um produto é feito.Assim, as filas do Amazon SQS inscritas nesse tópico receberão notificações idênticas para o novo pedido.A instância de servidor do Amazon EC2 anexada a uma das filas pode lidar com o processamento ou opreenchimento do pedido enquanto a outra instância do servidor pode estar anexada a um data warehousepara análise de todos os pedidos recebidos.

Outra maneira de usar “fanout” é replicar os dados enviados para seu ambiente de produção com oambiente de desenvolvimento. Expandindo o exemplo anterior, você pode inscrever mais uma filapara o mesmo tópico para novos pedidos. Em seguida, ao anexar essa nova fila ao seu ambientede desenvolvimento, você pode continuar a melhorar e testar seu aplicativo usando os dados

Versão da API 2010-03-313

Page 11: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAlertas de aplicativos e do sistema

recebidos de seu ambiente de produção. Para obter mais informações sobre o envio de mensagensdo Amazon SNS para filas do Amazon SQS, consulte Envio de mensagens do Amazon SNS para filasdo Amazon SQS (p. 107). Para obter mais informações sobre o envio de mensagens do AmazonSNS para endpoints HTTP/S, consulte Envio de mensagens do Amazon SNS para endpoints HTTP/HTTPS (p. 149).

Alertas de aplicativos e do sistemaAlertas de aplicativos e do sistema são notificações, acionadas por limites predefinidos, enviadas parausuários específicos por SMS e/ou e-mail. Por exemplo, uma vez que muitos serviços da AWS usamAmazon SNS, você pode receber notificações imediatas quando ocorre um evento, como uma alteraçãoespecífica em seu grupo AWS Auto Scaling.

E-mail por push e mensagens de textoE-mail por push e mensagens de texto são duas formas de transmitir mensagens para indivíduos ougrupos por e-mail e/ou SMS. Por exemplo, você pode usar Amazon SNS para enviar por push notíciasdirecionadas aos inscritos por e-mail ou SMS. Após receber o e-mail ou a mensagem de texto por SMS, osleitores interessados podem escolher saber mais visitando um site ou iniciando um aplicativo. Para obtermais informações sobre como usar Amazon SNS para enviar notificações por SMS, consulte Envio demensagens SMS com o Amazon SNS (p. 121).

Notificações por push para dispositivos móveisNotificações por push para dispositivos móveis permitem que você envie mensagens diretamente paraaplicativos móveis. Por exemplo, você pode usar Amazon SNS para enviar notificações para um aplicativo,indicando que uma atualização está disponível. A mensagem de notificação pode incluir um link parafazer o download e instalar a atualização. Para obter mais informações sobre como usar Amazon SNSpara enviar mensagens de notificação direta para endpoints móveis, consulte Notificações por push paradispositivos móveis do Amazon SNS (p. 37)

Durabilidade das mensagensO Amazon SNS oferece um armazenamento durável de todas as mensagens recebidas. Quando oAmazon SNS receber a sua solicitação de publicação, ele armazenará várias cópias da mensagem nodisco. Antes de o Amazon SNS confirmar que a solicitação foi recebida, ele armazena a mensagem emvários locais isolados, conhecidos como zonas de disponibilidade. A mensagem é armazenada em zonasde disponibilidade que estão localizadas na região escolhida da AWS, como o Leste dos EUA (Norte daVirgínia) Região. Embora seja raro, se uma falha ocorrer em uma zona de disponibilidade, o Amazon SNScontinuará funcionando, e a durabilidade de suas mensagens será mantida.

Versão da API 2010-03-314

Page 12: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAntes de começar

Conceitos básicos do Amazon SimpleNotification Service

Esta seção contém informações para que você entenda os conceitos do Amazon SNS e rapidamenteconfigure e use as ferramentas e interfaces disponíveis para a criação e publicação de tópicos. Paracomeçar a usar as mensagens de notificação por push, consulte Notificações por push para dispositivosmóveis do Amazon SNS (p. 37).

Tópicos• Antes de começar (p. 5)• Criar um tópico (p. 5)• Inscrever-se em um tópico (p. 6)• Publicar em um tópico (p. 7)• Limpar (p. 9)• Uso do AWS SDK for Java com o Amazon SNS (p. 10)

Antes de começarPara usar Amazon SNS, é necessária uma conta da AWS. Se você ainda não tiver uma, realize oprocedimento a seguir.

Para cadastrar-se em uma conta da AWS

1. Abra https://aws.amazon.com/ e escolha Create an AWS Account (Criar uma conta da AWS).Note

Se você fez login no Console de gerenciamento da AWS usando credenciais do Usuárioraiz da conta da AWS, escolha Sign in to a different account (Fazer login em uma contadiferente). Se você fez login no console usando as credenciais do IAM, escolha Sign-in usingroot account credentials (Fazer login usando credenciais da conta raiz). Em seguida, escolhaCreate a new AWS account (Criar uma conta da AWS).

2. Siga as instruções online.

Parte do procedimento de cadastro envolve receber uma chamada telefônica e digitar um código deverificação usando o teclado do telefone.

Para começar a usar Amazon SNS

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. Clique no botão Comece a usar.

Agora, você deve estar na página inicial do SNS.

Criar um tópicoAgora que está cadastrado no Amazon SNS, você está pronto para criar um tópico. Um tópico é um canalde comunicação que permite o envio de mensagens e o recebimento de notificações. Ele fornece um ponto

Versão da API 2010-03-315

Page 13: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorInscrever-se em um tópico

de acesso para os editores e os inscritos se comunicarem. Nesta seção, você cria um tópico chamadoMyTopic.

Para criar um tópico

1. No Console do Amazon SNS, clique em Criar tópico.

A caixa de diálogo Criar tópico é exibida.2. Na caixa Nome do tópico, digite um nome para o tópico.3. Clique em Create topic.

O novo tópico é exibido na página Tópicos.4. Selecione o novo tópico e clique no ARN do tópico.

A página Detalhes do tópico é exibida.

5. Copie o ARN do tópico para a próxima tarefa.

arn:aws:sns:us-west-2:111122223333:MyTopic

Inscrever-se em um tópicoPara receber mensagens publicadas em um tópico, você precisa inscrever um endpoint no tópico emquestão. Um endpoint é um aplicativo móvel, servidor web, endereço de e-mail ou uma fila do AmazonSQS que pode receber mensagens de notificação do Amazon SNS. Quando você inscrever um endpointem um tópico e a inscrição for confirmada, o endpoint receberá todas as mensagens publicadas nessetópico.

Nesta seção, você inscreve um endpoint no tópico que acabou de criar na seção anterior. Você configura ainscrição para enviar as mensagens do tópico para sua conta de e-mail.

Para inscrever-se em um tópico

1. Abra o console do Amazon SNS em https://console.aws.amazon.com/sns/v2/home.2. Clique em Criar inscrição.

Versão da API 2010-03-316

Page 14: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorPublicar em um tópico

A caixa de diálogo Criar inscrição é exibida.3. No campo ARN do tópico, cole o ARN do tópico criado na tarefa anterior, por exemplo:

arn:aws:sns:us-west-2:111122223333:MyTopic.4. Na caixa suspensa Protocolo, selecione E-mail.5. Na caixa Endpoint, digite um endereço de e-mail que você pode usar para receber a notificação.

Important

Usuários do Entourage: o Entourage retira o URL de confirmação. Digite um endereço de e-mail que você pode acessar em um aplicativo de e-mail diferente.

6. Clique em Criar inscrição.

7. Acesse seu aplicativo de e-mail e abra a mensagem nas notificações da AWS. Depois, clique no linkpara confirmar sua inscrição.

O navegador da web exibe uma resposta de confirmação do Amazon SNS.

Publicar em um tópicoOs editores enviam mensagens para os tópicos. Quando uma nova mensagem é publicada, Amazon SNStenta entregar essa mensagem para cada endpoint inscrito no tópico. Nesta seção, você publica umamensagem no endereço de e-mail que foi definido na tarefa anterior.

Para publicar em um tópico

1. Abra o console do Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

No painel de navegação à esquerda, clique em Topics e, em seguida, selecione o tópico no qual vocêdeseja publicar.

2. Clique no botão Publicar em um tópico.

Versão da API 2010-03-317

Page 15: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorCriar diferentes mensagens para cada protocolo

A página Publicar uma mensagem é exibida.

3. Na caixa Assunto, digite uma linha de assunto para a mensagem.4. Na caixa Mensagem, digite uma mensagem curta.5. Clique em Publicar mensagem.

Uma caixa de diálogo de confirmação é exibida.

Agora, você pode usar o aplicativo de e-mail para abrir e ler a mensagem nas notificações da AWS.

Criar diferentes mensagens para cada protocoloVocê pode usar o suporte de formatação da mensagem para personalizar as mensagens enviadas paracada protocolo. Por exemplo, uma notificação que é enviada para inscritos de SMS e de e-mail pode seradaptada para cada tipo de cliente. Os usuários de SMS podem receber uma versão curta da mensagem,enquanto os usuários de e-mail podem receber uma versão mais detalhada.

Para publicar em um tópico com formatação da mensagem

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No painel de navegação à esquerda, clique em Tópicos e selecione um tópico.3. Clique no botão Publicar em um tópico.

Versão da API 2010-03-318

Page 16: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorLimpar

A página Publicar uma mensagem é exibida.4. Clique no botão Gerador de mensagens JSON.5. Na caixa Mensagem, digite uma mensagem curta.6. Neste exemplo para as Plataforma de destino, selecione E-mail e SMS.7. Clique no botão Gerar JSON.

Agora você pode modificar o texto da mensagem, personalizando-o para cada tipo de cliente.

Sua mensagem de SMS pode conter até 160 caracteres ASCII (ou 70 Unicode). Se a mensagemexceder esse tamanho, Amazon SNS envia como várias mensagens, cada uma dentro do limite decaracteres. As mensagens não são cortadas no meio de uma palavra, mas dentro dos limites de cadapalavra.

Cada e-mail pode ter até 256 KB.

No exemplo a seguir, as mensagens são especificadas para os protocolos de SMS, e-mail e padrão.

{"default": "Message body text here.", "email": "Message body text here.", "sms": "Message body text here."}

8. Clique em Publish message.

Uma caixa de diálogo de confirmação é exibida.

LimparVocê criou um tópico, se inscreveu e publicou uma mensagem nele. Agora você limpa o ambientecancelando a inscrição do tópico e excluindo-o.

Para cancelar a inscrição de um tópico

1. Abra o console do Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

No painel de navegação á esquerda, clique em Inscrições.

Em Inscrições, uma página será aberta.2. Selecione a sua inscrição na lista de inscrições. Essa será a única listagem na página, a menos que

você tenha criado mais de uma inscrição.3. Clique na lista suspensa Outras ações e clique em Excluir inscrições.

A caixa de diálogo de confirmação Excluir é exibida.4. Clique em Delete.

A inscrição é excluída, a menos que seja uma inscrição pendente, o que significa que ela ainda não foiconfirmada. Você não pode excluir uma inscrição pendente, mas se ela permanecer pendente por 3 dias, oAmazon SNS a exclui automaticamente.

Para excluir um tópico

Abra o console do Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

1. No painel de navegação à esquerda, clique em Tópicos e selecione o tópico que você deseja excluir.

Versão da API 2010-03-319

Page 17: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorUso do SDK para Java

2. Clique na lista suspensa Ações e selecione Excluir tópicos.

A caixa de diálogo de confirmação Excluir é exibida.3. Clique em Delete.

Ao excluir um tópico, você também exclui todas as inscrições pertencentes a esse tópico.

Uso do AWS SDK for Java com o Amazon SNSO SDK para Java fornece uma classe chamada AmazonSNSClient, que pode ser usada para interagir como Amazon SNS. Para obter informações sobre o download do AWS SDK for Java, acesse AWS SDK forJava.

A classe AmazonSNSClient define os métodos que mapeiam para as ações de API de consulta doAmazon SNS subjacentes. (Essas ações estão descritas em Amazon SNS API Reference). Quando vocêchamar um método, deverá criar um objeto de solicitação e um objeto de resposta correspondentes. Oobjeto de solicitação inclui informações que você deve informar junto com a solicitação real. O objeto deresposta inclui informações retornadas do Amazon SNS em resposta à solicitação.

Por exemplo, a classe AmazonSNSClient fornece o método createTopic para criar um tópico no qualas notificações podem ser publicadas. Esse método mapeia para a ação da API CreateTopic subjacente.Você cria um objeto CreateTopicRequest para transmitir informações com o método createTopic.

As declarações de importação a seguir são usadas com as amostras de Java fornecidas.

import com.amazonaws.services.sns.AmazonSNSClient;import com.amazonaws.auth.ClasspathPropertiesFileCredentialsProvider;import com.amazonaws.regions.Region;import com.amazonaws.regions.Regions;import com.amazonaws.services.sns.model.CreateTopicRequest;import com.amazonaws.services.sns.model.CreateTopicResult;import com.amazonaws.services.sns.model.SubscribeRequest;import com.amazonaws.services.sns.model.PublishRequest;import com.amazonaws.services.sns.model.PublishResult;import com.amazonaws.services.sns.model.DeleteTopicRequest;

O exemplo seguinte mostra como criar um novo cliente Amazon SNS, definir o endpoint do Amazon SNS aser usado e criar um novo tópico.

Note

Em alguns dos exemplos a seguir, o método getCachedResponseMetadata é usado paramostrar como recuperar programaticamente o ID da solicitação para outra solicitação do AmazonSNS bem-sucedida executada anteriormente. Isso é normalmente usado para depurar problemase é útil ao solicitar assistência da Amazon Web Services.

Criar um tópico

//create a new SNS client and set endpointAmazonSNSClient snsClient = new AmazonSNSClient(new ClasspathPropertiesFileCredentialsProvider()); snsClient.setRegion(Region.getRegion(Regions.US_EAST_1));

//create a new SNS topicCreateTopicRequest createTopicRequest = new CreateTopicRequest("MyNewTopic");CreateTopicResult createTopicResult = snsClient.createTopic(createTopicRequest);//print TopicArnSystem.out.println(createTopicResult);//get request id for CreateTopicRequest from SNS metadata

Versão da API 2010-03-3110

Page 18: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorUso do SDK para Java

System.out.println("CreateTopicRequest - " + snsClient.getCachedResponseMetadata(createTopicRequest));

Ao executar esse exemplo, o seguinte resultado é exibido na janela de resultados do console do IDE,como o Eclipse:

{TopicArn: arn:aws:sns:us-east-1:123456789012:MyNewTopic}CreateTopicRequest - {AWS_REQUEST_ID=93f7fc90-f131-5ca3-ab18-b741fef918b5}

O TopicArn é atribuído a uma variável de string para uso em operações adicionais.

String topicArn = "arn:aws:sns:us-east-1:123456789012:MyNewTopic";

Os exemplos a seguir mostram como inscrever-se em um tópico, publicar nele e excluí-lo.

Inscrever-se em um tópico

//subscribe to an SNS topicSubscribeRequest subRequest = new SubscribeRequest(topicArn, "email", "[email protected]");snsClient.subscribe(subRequest);//get request id for SubscribeRequest from SNS metadataSystem.out.println("SubscribeRequest - " + snsClient.getCachedResponseMetadata(subRequest));System.out.println("Check your email and confirm subscription.");

Ao executar esse exemplo, o seguinte resultado é exibido na janela de resultados do console do IDE:

SubscribeRequest - {AWS_REQUEST_ID=9b7ff59a-f917-533a-a6bd-be4bf6df0acf}Check your email and confirm subscription.

Publicar em um tópico

//publish to an SNS topicString msg = "My text published to SNS topic with email endpoint";PublishRequest publishRequest = new PublishRequest(topicArn, msg);PublishResult publishResult = snsClient.publish(publishRequest);//print MessageId of message published to SNS topicSystem.out.println("MessageId - " + publishResult.getMessageId());

Ao executar esse exemplo, o seguinte resultado é exibido na janela de resultados do console do IDE:

MessageId - 9b888f80-15f7-5c30-81a2-c4511a3f5229

Excluir um tópico

//delete an SNS topicDeleteTopicRequest deleteTopicRequest = new DeleteTopicRequest(topicArn);snsClient.deleteTopic(deleteTopicRequest);//get request id for DeleteTopicRequest from SNS metadataSystem.out.println("DeleteTopicRequest - " + snsClient.getCachedResponseMetadata(deleteTopicRequest));

Ao executar esse exemplo, o seguinte resultado é exibido na janela de resultados do console do IDE:

DeleteTopicRequest - {AWS_REQUEST_ID=067a4980-4e93-5bfc-b88c-0251415bc852}

Versão da API 2010-03-3111

Page 19: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorVisão geral

Gerenciamento de acesso aos seustópicos do Amazon SNS

Tópicos• Visão geral (p. 12)• Informações especiais para políticas do Amazon SNS (p. 29)• Controle do acesso de usuários à sua conta da AWS (p. 30)

Amazon SNS oferece suporte para outros protocolos além de e-mail. Você pode usar HTTP, HTTPS e asfilas do Amazon SQS. Você tem controle detalhado sobre quais endpoints são permitidos por um tópico,quem pode publicar em um tópico e cumprindo quais condições. Este apêndice mostra como controlar pormeio do uso de políticas de controle de acesso.

A parte principal desta seção inclui os conceitos básicos que você precisa entender, além de como criaruma política e a lógica que Amazon Web Services (AWS) usa para avaliar as políticas e decidir se concedeao solicitante o acesso ao recurso. Embora a maioria das informações nesta seção seja independentede serviço, há alguns detalhes específicos do Amazon SNS que você precisa saber. Para obter maisinformações, consulte Informações especiais para políticas do Amazon SNS (p. 29).

Visão geralTópicos

• Quando usar o controle de acesso (p. 12)• Principais conceitos (p. 13)• Visão geral da arquitetura (p. 15)• Uso do Linguagem de políticas de acesso (p. 18)• Lógica de avaliação (p. 20)• Exemplos de casos de controle de acesso do Amazon SNS (p. 25)

Esta seção descreve os conceitos básicos que você precisa entender para usar linguagem de políticas deacesso para criar políticas. Ela também descreve o processo geral de como o controle de acesso funcionacom linguagem de políticas de acesso e como as políticas são avaliadas.

Quando usar o controle de acessoVocê tem muita flexibilidade na forma de conceder ou negar acesso a um recurso. No entanto, os casos deuso típicos são bastante simples:

• Você deseja conceder à outra conta da AWS um determinado tipo de ação de tópico (por exemplo,Publicação). Para obter mais informações, consulte Permissão do acesso da conta da AWS a umtópico (p. 25).

• Você deseja limitar as inscrições do tópico para apenas o protocolo HTTPS. Para obter maisinformações, consulte Limite de inscrições para HTTPS (p. 26).

• Você deseja permitir que Amazon SNS publique mensagens para a fila do Amazon SQS. Para obtermais informações, consulte Publicação em uma fila do Amazon SQS (p. 26).

Versão da API 2010-03-3112

Page 20: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorPrincipais conceitos

Principais conceitosAs seções a seguir descrevem os conceitos que você precisa entender para usar linguagem de políticasde acesso. Eles são apresentados em uma ordem lógica, com os primeiros termos que você precisa saberna parte superior da lista.

PermissãoUma permissão é o conceito de permissão ou não de algum tipo de acesso a um recurso específico. Aspermissões essencialmente seguem este formato: "A tem/não tem permissão para realizar B para C, ondeD se aplica." Por exemplo, Jane (A) tem permissão para publicar (B) para TopicA (C) desde que ela utilizeo protocolo HTTP (D). Sempre que Jane fizer uma publicação para TopicA, o serviço verificará se ela tempermissão e se a solicitação está de acordo com as condições definidas na permissão.

DeclaraçãoUma declaração é a descrição formal de uma única permissão, criada no linguagem de políticas deacesso. Você sempre cria uma declaração como parte de um documento de contêiner mais abrangenteconhecido como uma política (consulte o próximo conceito).

PolíticaUma política é um documento (criado no linguagem de políticas de acesso) que atua como um contêinerpara uma ou mais declarações. Por exemplo, uma política poderia ter duas declarações: uma que afirmaque Jane pode se inscrever usando o protocolo de e-mail, e outra que afirma que Pedro não pode fazeruma publicação em TopicA. Como mostrado na figura a seguir, um cenário equivalente seria ter duaspolíticas, uma que afirma que Jane pode se inscrever usando o protocolo de e-mail, e outra que afirma quePedro não pode fazer uma publicação para TopicA.

EmissorO emissor é a pessoa que cria uma política a fim de conceder permissões para um recurso. O emissor(por definição) é sempre o proprietário do recurso. AWS não permite que os usuários do serviço da AWS

Versão da API 2010-03-3113

Page 21: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorPrincipais conceitos

criem políticas para recursos que não possuem. Se John for o proprietário do recurso, AWS autenticarásua identidade quando ele enviar a política que criou para conceder permissões para esse recurso.

PrincipalO principal é a pessoa ou as pessoas que recebem a permissão na política. O principal é A na declaração"A tem permissão para realizar B para C, onde D se aplica". Em uma política, você pode definir oprincipal para "ninguém" (ou seja, você pode especificar um curinga para representar todas as pessoas).Você poderá fazer isso, por exemplo, se não quiser restringir o acesso com base na identidade real dosolicitante, mas em outras características de identificação, como o endereço IP do solicitante.

AçãoA ação é a atividade que o principal tem permissão para executar. A ação é B na declaração"A tem permissão para realizar B para C, onde D se aplica". Normalmente, a ação é apenas aoperação na solicitação para AWS. Por exemplo, Jane envia uma solicitação para Amazon SNS comAction=Subscribe. Você pode especificar uma ou várias ações em uma política.

RecursoO recurso é o objeto ao qual o principal está solicitando acesso. O recurso é C na declaração "A tempermissão para realizar B para C, onde D se aplica".

Condições e chavesAs condições são todas as restrições ou detalhes sobre a permissão. A condição é D na declaração "A tempermissão para realizar B para C, onde D se aplica". A parte da política que especifica as condições podeser a mais detalhada e complexa de todas as partes. As condições comuns são relacionadas a:

• Data e hora (por exemplo, a solicitação deve chegar antes de um dia específico)• Endereço IP (por exemplo, o endereço IP do solicitante deve ser parte de um determinado intervalo

CIDR)

Uma chave é a característica específica que é a base para a restrição de acesso. Por exemplo, a data e ahora da solicitação.

Você usa ambas as condições e as chaves em conjunto para expressar a restrição. A maneira mais fácilde entender como você realmente implementa uma restrição é com um exemplo: se você deseja restringiro acesso para antes de 30 de maio de 2010, deve usar a condição chamada DateLessThan. Você usaa chave chamada aws:CurrentTime e a define para o valor 2010-05-30T00:00:00Z. AWS define ascondições e chaves que você pode usar. O serviço da AWS em si (por exemplo, Amazon SQS ou AmazonSNS) também pode definir as chaves específicas do serviço. Para obter mais informações, consulteInformações especiais para políticas do Amazon SNS (p. 29).

SolicitanteO solicitante é a pessoa que envia uma solicitação para um serviço da AWS e solicita o acesso a umrecurso específico. O solicitante envia uma solicitação para AWS que essencialmente pergunta: "Possofazer B para C, onde D se aplica?"

AvaliaçãoAvaliação é o processo que o serviço da AWS usa para determinar se uma solicitação recebida deveser negada ou permitida com base nas políticas aplicáveis. Para obter informações sobre a lógica deavaliação, consulte Lógica de avaliação (p. 20).

Versão da API 2010-03-3114

Page 22: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorVisão geral da arquitetura

EfeitoO efeito é o resultado que você deseja que uma declaração de política retorne no tempo da avaliação.Você especifica esse valor ao criar as declarações em uma política, e os valores possíveis são negar epermitir.

Por exemplo, você pode criar uma política que tenha uma declaração que nega todas as solicitaçõesoriginárias da Antártica (efeito=negar considerando que a solicitação usa um endereço IP alocado paraa Antártica). Como alternativa, você pode criar uma política que tenha uma declaração que permita quetodas as solicitações que não são originárias da Antártica (efeito=permitir considerando que a solicitaçãonão é originária da Antártica). Embora as duas declarações pareçam realizar a mesma ação, na lógica dolinguagem de políticas de acesso, elas são diferentes. Para obter mais informações, consulte Lógica deavaliação (p. 20).

Embora haja apenas dois valores possíveis que você pode especificar para o efeito (permitir ou negar),pode haver três resultados diferentes no tempo de avaliação de política: negação padrão, permitirou negação explícita. Para obter mais informações, consulte os seguintes conceitos e Lógica deavaliação (p. 20).

Negação padrãoUma negação padrão é o resultado padrão de uma política na ausência de permitir ou negação explícita.

PermitirUm permitir resulta de uma declaração que tem efeito=permitir, supondo que todas as condições indicadasforam atendidas. Exemplo: permitir solicitações se elas forem recebidas antes de 13h em 30 de abril de2010. Um permitir substitui todas as negações padrão, mas nunca uma negação explícita.

Negação explícitaUma negação explícita resulta de uma declaração que tem efeito=negar, supondo que todas as condiçõesindicadas foram atendidas. Exemplo: negar todas as solicitações originárias da Antártica. Todas assolicitações originárias da Antártica sempre serão negadas independentemente do que qualquer outrapolítica possa permitir.

Visão geral da arquiteturaA figura e a tabela a seguir descrevem os principais componentes que interagem para fornecer controle deacesso para seus recursos.

Versão da API 2010-03-3115

Page 23: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorVisão geral da arquitetura

1 Você, o proprietário do recurso.

2 Seus recursos (contidos no serviço da AWS;, por exemplo, filas do Amazon SQS).

3 Suas políticas.

Versão da API 2010-03-3116

Page 24: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorVisão geral da arquitetura

Normalmente, você tem uma política por recurso, embora seja possível ter várias. O próprioserviço da AWS fornece uma API que você usa para carregar e gerenciar suas políticas.

4 Os solicitantes e suas solicitações de entrada para o serviço da AWS.

5 O código de avaliação do linguagem de políticas de acesso.

Esse é o conjunto de códigos dentro do serviço da AWS que avalia as solicitações de entradaem relação a políticas aplicáveis e determina se o solicitante tem o acesso permitido aorecurso. Para obter informações sobre como o serviço toma a decisão, consulte Lógica deavaliação (p. 20).

Versão da API 2010-03-3117

Page 25: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorUso do Linguagem de políticas de acesso

Uso do Linguagem de políticas de acessoA figura e a tabela a seguir descrevem o processo geral de como o controle de acesso funciona comlinguagem de políticas de acesso.

Processo para usar o controle de acesso com Linguagem de políticas de acesso

1 Você cria uma política para seu recurso.

Por exemplo, você pode criar uma política para especificar permissões para seus tópicos doAmazon SNS.

2 Você carrega a política na AWS.

O próprio serviço da AWS fornece uma API que você usa para fazer o upload de suas políticas.Por exemplo, você pode usar a ação SetTopicAttributes do Amazon SNS com a finalidadede fazer o upload de uma política para um determinado tópico do Amazon SNS.

3 Alguém envia uma solicitação para usar seu recurso.

Por exemplo, um usuário envia uma solicitação para o Amazon SNS usar um de seus tópicos.

4 O serviço da AWS determina quais políticas são aplicáveis à solicitação.

Por exemplo, Amazon SNS verifica todas as políticas disponíveis do Amazon SNS e determinaquais são aplicáveis (com base no que o recurso é, qual é o solicitante, etc.).

5 O serviço da AWS avalia as políticas.

Versão da API 2010-03-3118

Page 26: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorUso do Linguagem de políticas de acesso

Por exemplo, Amazon SNS avalia as políticas e determina se o solicitante tem permissão parausar o tópico ou não. Para obter informações sobre a lógica de decisão, consulte Lógica deavaliação (p. 20).

6 O serviço da AWS nega a solicitação ou continua a processá-la.

Por exemplo, com base no resultado de avaliação da política, o serviço retorna um erro de"acesso negado" para o solicitante ou continua a processar a solicitação.

Tópicos relacionados

• Visão geral da arquitetura (p. 15)

Versão da API 2010-03-3119

Page 27: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorLógica de avaliação

Lógica de avaliaçãoO objetivo, no tempo de avaliação, é decidir se uma determinada solicitação deve ser permitida ou negada.A lógica de avaliação segue várias regras básicas:

• Por padrão, todas as solicitações para usar o recurso que venham de outras pessoas, e não de você,serão negadas

• Um valor permitir substitui qualquer negação padrão• Uma negação explícita substitui todas as permissões• A ordem em que as políticas são avaliadas não é importante

O seguinte fluxograma e discussão descrevem em mais detalhes como a decisão é tomada.

Versão da API 2010-03-3120

Page 28: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorLógica de avaliação

Versão da API 2010-03-3121

Page 29: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorLógica de avaliação

1 A decisão começa com uma negação padrão.

2 O código de aplicação avalia todas as políticas que são aplicáveis à solicitação (com base norecurso, no principal, na ação e nas condições).

A ordem em que o código de aplicação avalia as políticas não é importante.

3 Em todas essas políticas, o código de aplicação procura uma instrução de negação explícita quese aplica à solicitação.

Se o código de aplicação encontrar uma instrução desse tipo, ele retornará uma decisãode "negar", e o processo será concluído (essa é uma negação explícita; para obter maisinformações, consulte Negação explícita (p. 15)).

4 Se nenhuma negação explícita for encontrada, o código de aplicação procurará qualquerinstrução "permitir" aplicável à solicitação.

Se encontrar uma instrução "permitir", o código de aplicação retornará uma decisão de "permitir",e o processo será concluído (o serviço continua a processar a solicitação).

5 Se nenhuma instrução de permitir for encontrada, a decisão final será "negar", como nãohavia negação explícita ou permitir, ela é considerada uma negação padrão (para obter maisinformações, consulte Negação padrão (p. 15)).

O interplay de negações explícitas e padrãoUma política resulta em uma negação padrão caso não se aplique diretamente à solicitação. Por exemplo,se um usuário solicita usar Amazon SNS, mas a política sobre o tópico não se referir à conta da AWS dousuário, essa política resultará em uma negação padrão.

Uma política também resultará em uma negação padrão se uma condição em uma declaração nãofor atendida. Se todas as condições da declaração forem atendidas, a política resultará em permitir ounegação explícita, com base no valor do elemento Efeito na política. As políticas não especificam o quefazer se uma condição não é atendida, e, portanto, o resultado padrão nesse caso é uma negação padrão.

Por exemplo, digamos que você deseja impedir que as solicitações cheguem da Antártica. Você cria umapolítica (chamada Política A1) que permite uma solicitação somente se ela não é originária da Antártica. Oseguinte diagrama ilustra a política.

Versão da API 2010-03-3122

Page 30: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorLógica de avaliação

Se alguém enviar uma solicitação dos EUA, a condição será atendida (a solicitação não é originária daAntártica). Portanto, a solicitação será permitida. Porém, se alguém enviar uma solicitação da Antártica, acondição não será atendida, e, assim, o resultado da política será uma negação padrão.

Você pode transformar o resultado em uma negação explícita recriando a política (chamada Política A2),como mostrado no diagrama a seguir. Aqui, a política negará explicitamente uma solicitação se ela fororiginária da Antártica.

Se alguém enviar uma solicitação da Antártica, a condição será atendida, e o resultado da política seráuma negação explícita.

A distinção entre uma negação padrão e uma negação explícita é importante porque uma negaçãopadrão pode ser substituída por um permitir, mas uma negação explícita não. Por exemplo, digamosque haja outra política que permite as solicitações se elas chegam em 1º de junho de 2010. Comoessa política afeta o resultado geral quando associado à política que restringe o acesso da Antártica?Compararemos o resultado geral ao associar a política baseada em data (chamaremos Política B) comas políticas anteriores A1 e A2. O Cenário 1 se associa à Política A1 com a Política B, e o Cenário 2 seassocia à Política A2 com a Política B. A figura e a discussão a seguir mostram os resultados quando umasolicitação chega da Antártica em 1º de junho de 2010.

Versão da API 2010-03-3123

Page 31: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorLógica de avaliação

Versão da API 2010-03-3124

Page 32: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorExemplos de casos de controle de acesso do Amazon SNS

No Cenário 1, a Política A1 retorna uma negação padrão, conforme descrito anteriormente nesta seção. APolítica B retorna um permitir porque a política (por definição) permite as solicitações que chegam em 1ºde junho de 2010. O permitir da Política B substitui a negação padrão da Política A1 e, assim, a solicitaçãoé permitida.

No Cenário 2, a Política B2 retorna uma negação explícita, conforme descrito anteriormente nesta seção.Novamente, a Política B retorna um permitir. A negação explícita da Política A2 substitui o permitir daPolítica B e, assim, a solicitação é negada.

Exemplos de casos de controle de acesso do AmazonSNSTópicos

• Permissão do acesso da conta da AWS a um tópico (p. 25)• Limite de inscrições para HTTPS (p. 26)• Publicação em uma fila do Amazon SQS (p. 26)• Permissão para que todos os recursos da AWS publiquem em um tópico (p. 27)• Permissão para que um bucket do Amazon S3 publique em um tópico (p. 27)

Esta seção fornece alguns exemplos de casos de uso comuns para controle de acesso.

Permissão do acesso da conta da AWS a um tópicoSupomos que você tenha um tópico no sistema do Amazon SNS. No caso mais simples, você desejapermitir o acesso de uma ou mais contas da AWS a uma determinada ação de tópico (por exemplo,Publicação).

Você pode fazer isso usando a ação da API do Amazon SNS AddPermission. É necessário um tópico,uma lista de IDs de conta da AWS, uma lista de ações e um rótulo para criar automaticamente uma novadeclaração na política de controle de acesso do tópico. Nesse caso, você não cria uma política por contaprópria, porque Amazon SNS gera automaticamente a nova declaração de política para você. Você poderemover a declaração de política posteriormente chamando RemovePermission com seu rótulo.

Por exemplo, se você chamar AddPermission no tópico arn:aws:sns:us-east-1:444455556666:MyTopic,com o ID da conta da AWS 1111-2222-3333, a ação Publish e o rótulo give-1234-publish, AmazonSNS gerarão e inserirão a seguinte declaração de política de controle de acesso:

{ "Version":"2012-10-17", "Id":"AWSAccountTopicAccess", "Statement" :[ { "Sid":"give-1234-publish", "Effect":"Allow", "Principal" :{ "AWS":"111122223333" }, "Action":["sns:Publish"], "Resource":"arn:aws:sns:us-east-1:444455556666:MyTopic" } ]}

Assim que essa declaração for adicionada, o usuário com a conta da AWS 1111-2222-3333 poderápublicar mensagens para o tópico.

Versão da API 2010-03-3125

Page 33: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorExemplos de casos de controle de acesso do Amazon SNS

Limite de inscrições para HTTPSNeste caso de uso, você deseja permitir solicitações de inscrição para o tópico somente por HTTPS, pormotivos de segurança.

Você precisa saber como criar sua própria política para o tópico porque a ação AddPermissiondo Amazon SNS não permite que você especifique uma restrição de protocolo ao conceder aalguém o acesso a seu tópico. Nesse caso, você pode criar sua própria política e usar a açãoSetTopicAttributes para definir o atributo Policy do tópico para a nova política.

O seguinte exemplo de uma política completa permite que o ID da conta da AWS 1111-2222-3333 IDassine as notificações de um tópico.

{ "Version":"2012-10-17", "Id":"SomePolicyId", "Statement" :[ { "Sid":"Statement1", "Effect":"Allow", "Principal" :{ "AWS":"111122223333" }, "Action":["sns:Subscribe"], "Resource": "arn:aws:sns:us-east-1:444455556666:MyTopic", "Condition" :{ "StringEquals" :{ "sns:Protocol":"https" } } } ]}

Publicação em uma fila do Amazon SQSNesse caso de uso, você deseja publicar mensagens de seu tópico para sua fila do Amazon SQS. ComoAmazon SNS, Amazon SQS usa a linguagem de política de controle de acesso da Amazon. Para permitirque Amazon SNS envie mensagens, você precisará usar a ação SetQueueAttributes do Amazon SQSpara definir uma política na fila.

Novamente, você precisará saber como criar sua própria política porque a ação AddPermission doAmazon SQS não cria declarações de política com condições.

Observe que o exemplo apresentado abaixo é uma política do Amazon SQS (controle de acesso à suafila), não uma política do Amazon SNS (o controle de acesso ao seu tópico). As ações são ações doAmazon SQS, e o recurso é o Nome de recurso da Amazon (ARN) da fila. Você pode determinar o ARN dafila recuperando o atributo QueueArn da fila com a ação GetQueueAttributes.

{ "Version":"2012-10-17", "Id":"MyQueuePolicy", "Statement" :[ { "Sid":"Allow-SNS-SendMessage", "Effect":"Allow", "Principal" :"*", "Action":["sqs:SendMessage"], "Resource": "arn:aws:sqs:us-east-1:444455556666:MyQueue", "Condition" :{

Versão da API 2010-03-3126

Page 34: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorExemplos de casos de controle de acesso do Amazon SNS

"ArnEquals" :{ "aws:SourceArn":"arn:aws:sns:us-east-1:444455556666:MyTopic" } } } ]}

Essa política usa a condição aws:SourceArn para restringir o acesso à fila com base na origem damensagem que está sendo enviada para a fila. Você pode usar esse tipo de política para permitir queAmazon SNS envie mensagens para a fila somente se as mensagens são provenientes de um deseus próprios tópicos. Nesse caso, você especifica um determinado tópico entre os seus, cujo ARN éarn:aws:sns:us-east-1:444455556666:MyTopic.

A política anterior é um exemplo da política do Amazon SQS que você pode criar e adicionar a uma filaespecífica. Ela concederá acesso a Amazon SNS e a outros produtos da AWS. Amazon SNS fornece umapolítica padrão para todos os tópicos recém-criados. A política padrão fornece a todos os outros produtosda AWS acesso a seu tópico. Essa política padrão usa uma condição aws:SourceArn para garantir queos produtos da AWS acessem seu tópico somente em nome de recursos da AWS que você possui.

Permissão para que todos os recursos da AWS publiquem emum tópicoNesse caso, você deseja configurar a política de um tópico para que outro recurso da conta da AWS(por exemplo, bucket do Amazon S3, instância do Amazon EC2 ou fila do Amazon SQS) possapublicar para seu tópico. Esse exemplo pressupõe que você criou sua própria política e usou a açãoSetTopicAttributes para definir o atributo Policy do tópico para sua nova política.

No exemplo de declaração a seguir, o proprietário do tópico nessas políticas é 1111-2222-3333 e oproprietário do recurso da AWS é 4444-5555-6666. O exemplo permite que o ID da conta da AWS4444-5555-6666 publique em Meu-Tópico por qualquer recurso da AWS de propriedade da conta.

{ "Version":"2012-10-17", "Id":"MyAWSPolicy", "Statement" :[ { "Sid":"My-statement-id", "Effect":"Allow", "Principal" :"*", "Action":"sns:Publish", "Resource":"arn:aws:sns:us-east-1:111122223333:My-Topic", "Condition":{ "StringEquals":{ "AWS:SourceAccount":"444455556666" } } } ]}

Permissão para que um bucket do Amazon S3 publique em umtópicoNesse caso, você deseja configurar a política de um tópico para que outro bucket do Amazon S3 da contada AWS possa publicar em seu tópico. Para obter mais informações sobre a publicação de notificações doAmazon S3, consulte Configuração de notificações de eventos de bucket.

Versão da API 2010-03-3127

Page 35: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorExemplos de casos de controle de acesso do Amazon SNS

Esse exemplo pressupõe que você criou sua própria política e usou a ação SetTopicAttributes paradefinir o atributo Policy do tópico para sua nova política.

O exemplo de declaração a seguir usa a condição ArnLike para garantir que o ARN do recurso quefaz a solicitação (o AWS:SourceARN) seja um ARN do Amazon S3. Você pode usar uma condiçãosimilar a fim de restringir a permissão para um conjunto de buckets do Amazon S3 ou até mesmo paraum bucket específico. Neste exemplo, o proprietário do tópico é 1111-2222-3333, e o proprietário doAmazon S3 é 4444-5555-6666. O exemplo determina que qualquer bucket do Amazon S3 pertencente ao4444-5555-6666 tem permissão para publicar em Meu-Tópico.

{ "Version":"2012-10-17", "Id":"MyAWSPolicy", "Statement" :[ { "Sid":"My-statement-id", "Effect":"Allow", "Principal" :"*", "Action":"sns:Publish", "Resource":"arn:aws:sns:us-east-1:111122223333:My-Topic", "Condition":{ "StringEquals":{ "AWS:SourceAccount":"444455556666" } , "ArnLike": {"AWS:SourceArn": "arn:aws:s3:*:*:*" } } } ]}

Versão da API 2010-03-3128

Page 36: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorInformações especiais para políticas do Amazon SNS

Informações especiais para políticas do AmazonSNS

A lista a seguir fornece informações específicas para a implementação de controle de acesso do AmazonSNS:

• Cada política deve abranger apenas um tópico (ao gravar uma política, não inclua declarações queabranjam diferentes tópicos)

• Cada política deve ter uma política exclusiva Id• Cada declaração em uma política deve ter uma declaração exclusiva sid

Limites de políticas do Amazon SNSA tabela a seguir lista os limites máximos para informações de política.

Nome Limite máximo

Bytes 30 kb

Declarações 100

Principais 1 a 200 (0 é inválido.)

Recurso 1 (0 é inválido. O valor deve corresponder ao ARN dotópico da política.)

Ações de políticas válidas do Amazon SNSAmazon SNS é compatível com as ações mostradas na tabela a seguir.

Ação Descrição

sns:AddPermission Concede permissão para adicionar permissões à política do tópico.

sns:DeleteTopic Concede permissão para excluir um tópico.

sns:GetTopicAttributes Concede permissão para receber todos os atributos de tópicos.

sns:ListSubscriptionsByTopic Concede permissão para recuperar todas as inscrições para umdeterminado tópico.

sns:Publish Concede permissão para publicar em um tópico ou endpoint.Para obter mais informações, consulte Publish no Amazon SimpleNotification Service API Reference

sns:RemovePermission Concede permissão para remover as permissões na política detópico.

sns:SetTopicAttributes Concede permissão para definir os atributos de um tópico.

sns:Subscribe Concede permissão para inscrever-se em um tópico.

Versão da API 2010-03-3129

Page 37: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorChaves do Amazon SNS

Chaves do Amazon SNSAmazon SNS usa as seguintes chaves específicas do serviço. Você pode usar essas chaves nas políticasque restringem o acesso às solicitações Subscribe.

• sns:Endpoint – o URL, endereço de e-mail ou ARN a partir de uma solicitação Subscribe oude uma inscrição confirmada anteriormente. Use com condições de string (consulte Exemplo depolíticas para o Amazon SNS (p. 34)) para restringir o acesso aos endpoints específicos (porexemplo,*@exemplo.com).

• sns:Protocol – o valor protocol de uma solicitação Subscribe ou de uma inscrição confirmadaanteriormente. Use com condições de string (consulte Exemplo de políticas para o AmazonSNS (p. 34)) para restringir a publicação para protocolos de entrega específicos (por exemplo, https).

Important

Quando você usar uma política para controlar o acesso por sns:Endpoint, lembre-se de que osproblemas de DNS podem afetar a resolução de nomes de endpoints no futuro.

Controle do acesso de usuários à sua conta daAWS

Tópicos• Políticas do IAM e do Amazon SNS juntas (p. 30)• ARNs do Amazon SNS (p. 33)• Ações do Amazon SNS (p. 34)• Chaves do Amazon SNS (p. 34)• Exemplo de políticas para o Amazon SNS (p. 34)• Uso de credenciais de segurança temporárias (p. 36)

O Amazon Simple Notification Service integra-se ao AWS Identity and Access Management (IAM) para quevocê possa especificar quais ações do Amazon SNS um usuário de sua conta da AWS pode executar comrecursos do Amazon SNS. Você pode especificar um determinado tópico na política. Por exemplo, vocêpode usar variáveis ao criar uma política de IAM que oferece a determinados usuários em sua organizaçãoa permissão para usar a ação Publish com tópicos específicos em sua conta da AWS. Para obter maisinformações, consulte Variáveis de políticas no guia Uso do IAM.

Important

Usar o Amazon SNS com o IAM não altera a forma como você usa o Amazon SNS. Não háalterações nas ações do Amazon SNS, nem novas ações do Amazon SNS relacionadas acontrole de acesso e usuários.

Para obter exemplos de políticas que abrangem ações e recursos do Amazon SNS, consulte Exemplo depolíticas para o Amazon SNS (p. 34).

Políticas do IAM e do Amazon SNS juntasVocê usa uma política do IAM para restringir o acesso dos usuários às ações e aos tópicos do AmazonSNS. Uma política do IAM pode restringir o acesso apenas a usuários em sua conta da AWS, não a outrascontas da AWS.

Versão da API 2010-03-3130

Page 38: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorPolíticas do IAM e do Amazon SNS juntas

Você usa uma política do Amazon SNS com um determinado tópico para restringir quem pode trabalharcom esse tópico (por exemplo, quem pode publicar mensagens, quem pode se inscrever nele etc.). Aspolíticas do Amazon SNS podem oferecer acesso a outras contas da AWS, ou a usuários dentro de suaprópria conta da AWS.

Para dar a seus usuários permissão para seus tópicos do Amazon SNS, você pode usar as políticasdo IAM, as do Amazon SNS ou de ambos. Para a maior parte, você obtém os mesmos resultados comqualquer uma delas. Por exemplo, o diagrama a seguir mostra uma política do IAM e uma política doAmazon SNS que são equivalentes. A política do IAM permite a ação Subscribe do Amazon SNS parao tópico chamado topic_xyz na sua conta da AWS. A política do IAM é associada aos usuários Pedro eAna (o que significa que Pedro e Ana têm as permissões declaradas na política). A política do AmazonSNS também oferece a Pedro e Ana permissão para acessar a ação Subscribe para o tópico chamadotopic_xyz.

Note

O exemplo anterior mostra políticas simples, sem condições. Você pode especificar umadeterminada condição na política e obter o mesmo resultado.

Há uma diferença entre as políticas do IAM e do Amazon SNS para a AWS: o sistema de política doAmazon SNS permite conceder permissões a outras contas da AWS, enquanto a política do IAM nãopermite.

Você decide como usar ambos os sistemas juntos para gerenciar suas permissões, de acordo com suasnecessidades. Os exemplos a seguir mostram como os dois sistemas de política funcionam em conjunto.

Example 1

Neste exemplo, uma política do IAM e uma política do Amazon SNS se aplicam a Pedro. A política do IAMdá a ele a permissão para Subscribe em qualquer um dos tópicos da conta da AWS, enquanto a políticado Amazon SNS dá a ele permissão para usar a ação Publish em um tópico específico (topic_xyz). Oseguinte diagrama ilustra o conceito.

Versão da API 2010-03-3131

Page 39: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorPolíticas do IAM e do Amazon SNS juntas

Se Pedro enviasse uma solicitação para inscrever-se em um tópico na conta da AWS, a política do IAMpermitiria a ação. Se Pedro enviasse uma solicitação para publicar uma mensagem no tópico topic_xyz, apolítica do Amazon SNS permitiria a ação.

Example 2

Neste exemplo, criamos no exemplo 1 (onde há duas políticas que se aplicam a Pedro). Digamos quePedro publique mensagens no tópico topic_xyz que não deveria ter publicado, e você deseja removertotalmente a capacidade dele de publicar nos tópicos. O mais fácil a fazer é adicionar uma política do IAMque negue acesso a Pedro para a ação Publish em todos os tópicos. Essa terceira política se sobrepõeà política do Amazon SNS que originalmente deu a ele permissão para publicar no tópico topic_xyz, poisuma negação explícita sempre se sobrepõe a uma permissão (para obter mais informações sobre a lógicade avaliação de políticas, consulte Lógica de avaliação (p. 20)). O seguinte diagrama ilustra o conceito.

Versão da API 2010-03-3132

Page 40: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorARNs do Amazon SNS

Para obter exemplos de políticas que abrangem ações e recursos do Amazon SNS, consulte Exemplode políticas para o Amazon SNS (p. 34). Para obter mais informações sobre como criar políticas doAmazon SNS, consulte a documentação técnica para do Amazon SNS.

ARNs do Amazon SNSPara Amazon SNS, os tópicos são o único tipo de recurso que você pode especificar em uma política. Vejaa seguir o formato do Amazon Resource Name (ARN – Nome de recurso da Amazon) para os tópicos.

arn:aws:sns:region:account_ID:topic_name

Para obter mais informações sobre ARNs, consulte os ARNs em Guia do usuário do IAM.

Example

Veja abaixo um ARN para um tópico chamado my_topic na região us-east-1, pertencente à conta123456789012 da AWS.

arn:aws:sns:us-east-1:123456789012:my_topic

Example

Se você tiver um tópico chamado my_topic em cada uma das diferentes regiões que o Amazon SNSsuporta, poderá especificar os tópicos com o ARN a seguir.

arn:aws:sns:*:123456789012:my_topic

Versão da API 2010-03-3133

Page 41: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAções do Amazon SNS

Você pode usar os caracteres curinga * e ? no nome do tópico. Por exemplo, o seguinte poderia fazerreferência a todos os tópicos criados por Pedro nos quais ele inseriu o prefixo bob_.

arn:aws:sns:*:123456789012:bob_*

Por uma questão de conveniência para você, ao criar um tópico, o Amazon SNS retorna o ARN do tópicocomo resposta.

Ações do Amazon SNSEm uma política do IAM, você pode especificar quaisquer ações que o Amazon SNS oferecer. No entanto,as ações ConfirmSubscription e Unsubscribe não exigem autenticação, o que significa que, mesmose você especificar essas ações em uma política, o IAM não restringirá o acesso dos usuários a essasações.

Cada ação que você especificar em uma política deve ter o prefixado com a string sns: em letrasminúsculas. Para especificar todas as ações do Amazon SNS, por exemplo, você usaria sns:*. Para obteruma lista de ações, consulte o Amazon Simple Notification Service API Reference.

Chaves do Amazon SNSO Amazon SNS implementa as seguintes chaves de políticas no âmbito da AWS, além de algumas chavesespecíficas do serviço.

Para obter uma lista de chaves de contexto compatíveis com cada serviço da AWS e uma lista de chavesde política gerais da AWS, consulte Ações, recursos e chaves de condição para os serviços da AWS eChaves de contexto de condição globais da AWS no Guia do usuário do IAM.

Amazon SNS usa as seguintes chaves específicas do serviço. Use essas chaves em políticas querestringem o acesso a solicitações de Subscribe.

• sns:Endpoint – o URL, endereço de e-mail ou ARN a partir de uma solicitação Subscribe oude uma inscrição confirmada anteriormente. Use com condições de string (consulte Exemplo depolíticas para o Amazon SNS (p. 34)) para restringir o acesso aos endpoints específicos (porexemplo,*@yourcompany.com).

• sns:Protocol – o valor protocol de uma solicitação Subscribe ou de uma inscrição confirmadaanteriormente. Use com condições de string (consulte Exemplo de políticas para o AmazonSNS (p. 34)) para restringir a publicação para protocolos de entrega específicos (por exemplo, https).

Exemplo de políticas para o Amazon SNSEsta seção mostra várias políticas simples para controlar o acesso de usuários ao Amazon SNS.

Note

No futuro, o Amazon SNS pode adicionar novas ações que devem ser logicamente incluídas emuma das seguintes políticas, com base nos objetivos indicados da política.

Example 1: Permitir que um grupo crie e gerencie tópicos

Neste exemplo, criamos uma política que oferece acesso a CreateTopic, ListTopics,SetTopicAttributes e DeleteTopic.

{ "Version":"2012-10-17",

Versão da API 2010-03-3134

Page 42: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorExemplo de políticas para o Amazon SNS

"Statement":[{ "Effect":"Allow", "Action":["sns:CreateTopic","sns:ListTopics","sns:SetTopicAttributes","sns:DeleteTopic"], "Resource":"*" } ]}

Example 2: Permitir que o grupo de TI publique mensagens em um determinado tópico

Neste exemplo, criamos um grupo de TI e atribuímos uma política que oferece acesso à ação Publish notópico específico de interesse.

{ "Version":"2012-10-17", "Statement":[{ "Effect":"Allow", "Action":"sns:Publish", "Resource":"arn:aws:sns:*:123456789012:topic_xyz" } ]}

Example 3: Conceder aos usuários na conta da AWS a capacidade de inscrever-se em tópicos

Neste exemplo, criamos uma política que dá acesso à ação Subscribe, com as condições decorrespondência de string para as chaves de políticas sns:Protocol e sns:Endpoint.

{ "Version":"2012-10-17", "Statement":[{ "Effect":"Allow", "Action":["sns:Subscribe"], "Resource":"*", "Condition":{ "StringLike": { "SNS:Endpoint":"*@yourcompany.com" }, "StringEquals":{ "sns:Protocol":"email" } } } ]}

Example 4: Permitir que um parceiro publique mensagens em um determinado tópico

Você pode usar uma política do Amazon SNS ou uma política do IAM para permitir que um parceiropublique em um tópico específico. Se o parceiro tiver uma conta da AWS, pode ser mais fácil usar umapolítica do Amazon SNS. No entanto, qualquer pessoa na empresa do parceiro que tiver acesso àscredenciais de segurança da AWS poderá publicar mensagens no tópico. Este exemplo pressupõe quevocê deseje limitar o acesso a uma determinada pessoa (ou aplicativo). Para fazer isso, é preciso tratar oparceiro como um usuário dentro de sua própria empresa e usar uma política do IAM em vez de usar umapolítica do Amazon SNS.

Para este exemplo, criamos um grupo chamado WidgetCo, que representa a empresa parceira, criamosum usuário para a pessoa específica (ou aplicativo) na empresa parceira que precisa do acesso e, emseguida, incluímos o usuário no grupo.

Versão da API 2010-03-3135

Page 43: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorUso de credenciais de segurança temporárias

Depois, associamos uma política que oferece ao grupo Publish acesso ao tópico específico chamadoWidgetPartnerTopic.

Também gostaríamos de impedir que o grupo WidgetCo realize qualquer outra ação nos tópicos; porisso, adicionamos uma declaração que nega permissão a qualquer ação do Amazon SNS que não sejaPublish, em qualquer outro tópico que não seja o WidgetPartnerTopic. Isso é necessário somente sehouver uma política ampla em outro lugar no sistema que dê aos usuários amplo acesso ao Amazon SNS.

{ "Version":"2012-10-17", "Statement":[{ "Effect":"Allow", "Action":"sns:Publish", "Resource":"arn:aws:sns:*:123456789012:WidgetPartnerTopic" }, { "Effect":"Deny", "NotAction":"sns:Publish", "NotResource":"arn:aws:sns:*:123456789012:WidgetPartnerTopic" } ]}

Uso de credenciais de segurança temporáriasAlém de criar usuários do IAM com suas próprias credenciais de segurança, o IAM também permiteconceder credenciais de segurança temporárias a qualquer usuário, possibilitando que esse usuárioacesse os serviços e recursos da AWS. Você pode gerenciar os usuários que têm contas da AWS; essesusuários são usuários do IAM. Você também pode gerenciar usuários para seu sistema que não tenhamcontas da AWS; esses usuários são chamados de usuários federados. Além disso, os "usuários" tambémpodem ser aplicativos que você cria para acessar seus recursos da AWS.

Você pode usar essas credenciais de segurança temporárias para fazer solicitações para o AmazonSNS. As bibliotecas de API calculam o valor de assinatura necessário usando essas credenciais paraautenticar sua solicitação. Se você enviar solicitações usando credenciais expiradas, o Amazon SNS negaa solicitação.

Para obter mais informações sobre o suporte do IAM para credenciais de segurança temporárias, acesseConcessão de acesso temporário aos recursos da AWS em Uso do IAM.

Example Uso de credenciais de segurança temporárias para autenticar uma solicitação doAmazon SNS

O exemplo a seguir demonstra como obter credenciais de segurança temporárias para autenticar umasolicitação do Amazon SNS.

http://sns.us-east-1.amazonaws.com/?Name=My-Topic&Action=CreateTopic&Signature=gfzIF53exFVdpSNb8AiwN3Lv%2FNYXh6S%2Br3yySK70oX4%3D&SignatureVersion=2&SignatureMethod=HmacSHA256&Timestamp=2010-03-31T12%3A00%3A00.000Z&SecurityToken=SecurityTokenValue&AWSAccessKeyId=Access Key ID provided by AWS Security Token Service

Versão da API 2010-03-3136

Page 44: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorVisão geral

Notificações por push paradispositivos móveis do Amazon SNS

Com Amazon SNS, você pode enviar mensagens de notificação por push diretamente para aplicativosem dispositivos móveis. As mensagens de notificação por push enviadas para um endpoint móvel podemaparecer no aplicativo móvel como alertas de mensagem, atualizações de crachá ou até mesmo comoalertas com som.

Visão geralVocê envia as mensagens de notificação por push para dispositivos móveis e desktops usando um dosseguintes serviços de notificação por push compatíveis:

• Amazon Device Messaging (ADM)• Apple Push Notification Service (APNS) para iOS e Mac OS X• Baidu Cloud Push (Baidu)• Google Cloud Messaging para Android (GCM)• Serviços de Notificação por Push da Microsoft para Windows Phone (MPNS)• Serviços de Notificação por Push do Windows (WNS)

A figura a seguir mostra uma visão geral de como Amazon SNS é usado para enviar uma mensagem denotificação por push direta para um endpoint móvel.

Os serviços de notificação por push, como APNS e GCM, mantêm uma conexão com cada aplicativo eseu respectivo dispositivo móvel registrado para usar o serviço. Quando um aplicativo e um dispositivomóvel se registrarem, o serviço de notificação por push retornará um token de dispositivo. Amazon SNSusa o token de dispositivo para criar um endpoint móvel, para o qual ele pode enviar mensagens diretas denotificação por push. Para Amazon SNS se comunicar com os diferentes serviços de notificação por push,envie as credenciais de serviço de notificação por push para Amazon SNS de modo que sejam usadas emseu nome. Para obter mais informações, consulte Etapas de alto nível de push para dispositivos móveis doAmazon SNS (p. 39)

Além de enviar mensagens de notificação por push diretas, você também pode usar Amazon SNS paraenviar mensagens para endpoints móveis inscritos em um tópico. O conceito é o mesmo para inscreverem um tópico outros tipos de endpoint, como Amazon SQS, HTTP/S, e-mail e SMS, conforme descrito

Versão da API 2010-03-3137

Page 45: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorPré-requisitos

em O que é Amazon Simple Notification Service? (p. 1). A diferença é que Amazon SNS se comunicausando os serviços de notificação por push para que os endpoints móveis inscritos recebam mensagensde notificação por push enviadas para o tópico. A figura a seguir mostra um endpoint móvel como uminscrito em um tópico do Amazon SNS. O endpoint móvel se comunica usando serviços de notificação porpush onde os outros endpoints não se comunicam.

Pré-requisitosPara começar a usar as notificações por push para dispositivos móveis do Amazon SNS, é necessário oseguinte:

• Um conjunto de credenciais para se conectar a um dos serviços de notificação por push compatíveis:ADM, APNS, Baidu, GCM, MPNS ou WNS.

• Um token de dispositivo ou ID de registro para o dispositivo e aplicativo móvel.• Amazon SNS configurado para enviar mensagens de notificação por push para os endpoints móveis.• Um aplicativo móvel que está registrado e configurado para usar um dos serviços de notificações por

push compatíveis.

O registro do aplicativo em um serviço de notificação por push requer várias etapas. Amazon SNS precisade algumas das informações que você fornece ao serviço de notificação por push para enviar mensagensde notificação por push diretas para o endpoint móvel. De modo geral, você precisa das credenciaisnecessárias para a conexão com o serviço de notificação por push, um token de dispositivo ou um ID deregistro (que representam o dispositivo e o aplicativo móvel) recebido do serviço de notificação por push, eo aplicativo móvel registrado no serviço de notificação por push.

O formato exato das credenciais difere entre plataformas móveis, mas, em cada caso, essas credenciaisdevem ser enviadas durante uma conexão com a plataforma. Um conjunto de credenciais é emitido paracada aplicativo móvel e deve ser usado para enviar uma mensagem para qualquer instância do aplicativo.

Os nomes específicos variarão de acordo com qual serviço de notificação por push estiver sendo usado.Por exemplo, ao usar APNS como o serviço de notificação por push, você precisa de um token dedispositivo. Como alternativa, ao usar GCM, o token de dispositivo equivalente será chamado de um IDde registro. O token de dispositivo ou o ID de registro é uma string enviada para o aplicativo pelo sistemaoperacional do dispositivo móvel. Ela identifica unicamente uma instância de um aplicativo móvel emexecução em um determinado dispositivo móvel e pode ser considerada como identificadores exclusivosdesse par de dispositivo e aplicativo.

Versão da API 2010-03-3138

Page 46: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapas de alto nível de push para dispositivos móveis

Amazon SNS armazena as credenciais (além de outras configurações) como um recurso de aplicativo deplataforma. Os tokens de dispositivo (novamente com algumas configurações extras) são representadoscomo objetos denominados endpoints de plataforma. Cada endpoint de plataforma pertence a umaplicativo de plataforma específico, e cada endpoint de plataforma pode ser acessado usando ascredenciais armazenadas em seu aplicativo de plataforma correspondente.

As seções a seguir incluem os pré-requisitos para cada um dos serviços de notificação por pushcompatíveis. Quando você obtiver as informações de pré-requisitos, poderá enviar uma mensagem denotificação por push usando o Console de gerenciamento da AWS ou as APIs de push para dispositivosmóveis do Amazon SNS. Para obter mais informações, consulte Etapas de alto nível de push paradispositivos móveis do Amazon SNS (p. 39).

Etapas de alto nível de push para dispositivosmóveis do Amazon SNS

Esta seção apresenta as etapas avançadas que devem ser desempenhadas para usar o push paradispositivos móveis do Amazon SNS. Primeiramente, é preciso concluir os pré-requisitos para asplataformas móveis para as quais você deseja oferecer suporte, como obter as credenciais necessárias eo token do dispositivo. Para obter mais informações, consulte Pré-requisitos (p. 38) Em seguida, utilizeas informações obtidas a partir das plataformas móveis com o Amazon SNS para enviar uma mensagempara um dispositivo móvel. Essas informações devem ajudá-lo a compreender melhor as etapas envolvidasao utilizar o push para dispositivos móveis do Amazon SNS, conforme descrito em Uso do push paradispositivos móveis do Amazon SNS (p. 78).

Etapa 1: Solicitar credenciais de plataformas móveisPara usar o push para dispositivos móveis do Amazon SNS, você deve primeiro solicitar as credenciaisnecessárias nas plataformas móveis. Para obter mais informações, consulte a seção de conceitos básicospara sua plataforma mais adiante neste guia.

Etapa 2: Solicitar token de plataformas móveisEm seguida, utilize as credenciais retornadas para solicitar um token para seu dispositivo e aplicativomóvel nas plataformas móveis. O token que você recebe representa seu dispositivo e aplicativo móvel.Para obter mais informações, consulte a seção de conceitos básicos para a plataforma mais adiante nesteguia.

Versão da API 2010-03-3139

Page 47: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 3: Criar objeto de aplicativo da plataforma

Etapa 3: Criar objeto de aplicativo da plataformaAs credenciais e o token são usados para criar um objeto de aplicativo da plataforma(PlatformApplicationArn) no Amazon SNS. Para obter mais informações, consulte Criar um endpointde plataforma e gerenciar tokens de dispositivo (p. 83).

Etapa 4: Criar objeto de endpoint da plataformaO PlatformApplicationArn é, então, utilizado para criar um objeto de endpoint da plataforma(EndpointArn) no Amazon SNS. Para obter mais informações, consulte Criar um endpoint de plataformae gerenciar tokens de dispositivo (p. 83).

Etapa 5: Publicar mensagem no endpoint móvelO EndpointArn é, então, usado para publicar uma mensagem em um aplicativo em um dispositivo móvel.Para obter mais informações, consulte Enviar uma mensagem direta para um dispositivo móvel (p. 87) ea API Publish na Amazon Simple Notification Service API Reference.

Conceitos básicos do Amazon Device MessagingAmazon Device Messaging (ADM) é um serviço que permite que você envie mensagens de notificação porpush para aplicativos do Kindle Fire. Esta seção descreve como obter os pré-requisitos do ADM e enviaruma mensagem de notificação por push usando Amazon SNS e ADM.

Tópicos• Pré-requisitos do ADM (p. 41)• Etapa 1: Criar um aplicativo do Kindle Fire com o serviço ADM habilitado (p. 41)

Versão da API 2010-03-3140

Page 48: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorPré-requisitos do ADM

• Etapa 2: Obter um ID e um segredo de cliente (p. 42)• Etapa 3: Obter uma chave de API (p. 42)• Etapa 4: Obter um ID de registro (p. 42)• Etapa 5: Enviar uma mensagem de notificação por push para um aplicativo do Kindle Fire usando

Amazon SNS e ADM (p. 43)

Pré-requisitos do ADMPara enviar notificações por push para um aplicativo do Kindle Fire usando Amazon SNS e ADM, énecessário o seguinte:

• Aplicativo do Kindle Fire com o serviço ADM ativado• ID e segredo do cliente• Chave de API• ID de registro

Se você já tem esses pré-requisitos, pode enviar uma mensagem de notificação por push para umaplicativo do Kindle Fire usando o console ou a API do Amazon SNS. Para obter mais informaçõessobre como usar o console do Amazon SNS, consulte Uso do push para dispositivos móveis do AmazonSNS (p. 78). Para obter mais informações sobre o uso da API do Amazon SNS, consulte Etapa 5:Enviar uma mensagem de notificação por push para um aplicativo do Kindle Fire usando Amazon SNS eADM (p. 43)

Etapa 1: Criar um aplicativo do Kindle Fire com oserviço ADM habilitadoPara enviar uma mensagem de notificação por push para um aplicativo do Kindle Fire, você precisa teruma conta de desenvolvedor da Amazon, configurar seu ambiente de desenvolvimento, criar um aplicativodo Kindle Fire com ADM habilitado e registrar o aplicativo com o ADM. Para obter mais informações,consulte Integrating Your App with ADM.

Para criar um aplicativo do Kindle Fire

1. Crie uma conta de desenvolvedor da Amazon seguindo as instruções em Criar uma conta.2. Configure seu ambiente de desenvolvimento para o desenvolvimento de aplicativos móveis para

tablets Kindle Fire. Para obter mais informações, consulte Setting Up Your Development Environment.3. Crie um aplicativo do Kindle Fire. Para obter mais informações, consulte Creating Your First Kindle

Fire App.

Note

Se você ainda não tiver um aplicativo do Kindle Fire registrado com ADM, pode usar oaplicativo do Kindle Fire de amostra fornecido pela AWS como um modelo para começar.Para obter mais informações, consulte Etapa 4: Obter um ID de registro (p. 42).

4. No Portal de distribuição de aplicativos da Amazon, clique em Aplicativos e serviços, clique no nomedo seu aplicativo do Kindle Fire e clique em Device Messaging.

5. Verifique se ADM está habilitado para o aplicativo. Se o aplicativo não estiver relacionado no AmazonApp Distribution Portal, adicione-o e habilite ADM.

Versão da API 2010-03-3141

Page 49: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 2: Obter um ID e um segredo de cliente

Etapa 2: Obter um ID e um segredo de clienteADM usa um ID e um segredo do cliente para verificar a identidade do servidor. Para obter maisinformações, consulte Obtaining ADM Credentials.

Para obter um ID e um segredo do cliente

1. No Portal de distribuição de aplicativos da Amazon, clique em Aplicativos e serviços, clique no nomedo seu aplicativo do Kindle Fire e clique em Perfil de segurança. Você deve ver um perfil de segurançaassociado ao aplicativo. Caso não o veja, clique em Perfis de segurança para criar um novo perfil desegurança.

2. Clique em Exibir perfil de segurança. Anote o ID e o segredo do cliente.

Etapa 3: Obter uma chave de APIADM usa uma chave de API para verificar a identidade do seu aplicativo.

Note

Uma Chave de API é necessária para usar o ADM com aplicativos em pré-lançamento ou emteste. No entanto, ela não é necessária com uma versão de lançamento ou de produção do seuaplicativo quando você permite que a Amazon cadastre seu aplicativo em seu nome.

Para obter uma chave de API

• Obtenha uma chave de API seguindo as instruções em Getting Your OAuth Credentials and API Key.

Etapa 4: Obter um ID de registroAs etapas a seguir mostram como usar o aplicativo do Kindle Fire de amostra fornecido pela AWS paraobter um ID de registro do ADM. Você pode usar esse aplicativo de amostra como um exemplo para ajudá-lo a começar a usar as notificações por push do Amazon SNS. O aplicativo de amostra requer que vocêtenha incluído o arquivo do ADM, amazon-device-messaging-1.0.1.jar.jar em seu ambiente dedesenvolvimento. Para obter mais informações, consulte Setting Up ADM.

Versão da API 2010-03-3142

Page 50: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 5: Enviar uma mensagem para um aplicativo

do Kindle Fire usando Amazon SNS e ADM

Para obter um ID de registro do ADM para seu aplicativo

1. Faça o download e descompacte o arquivo snsmobilepush.zip.2. Importe a pasta KindleMobilePushApp para seu IDE. No Eclipse, clique em Arquivo, Importar,

expanda a pasta Android, clique em Código de Android existente no Workspace, clique em Próximo,navegue até a pasta KindleMobilePushApp, clique em OK e clique em Concluir.

Depois que o aplicativo do Kindle Fire de amostra for importado para seu IDE, você precisaráadicionar a chave de API do aplicativo do Kindle Fire ao arquivo strings.xml, que está incluído noaplicativo do Kindle Fire de amostra.

3. Adicione a chave de API ao arquivo strings.xml. No IDE, você encontrará o arquivo incluído napasta values, que é uma subpasta do res. Você deve adicionar a string ao seguinte:

<string name="api_key"></string>

4. Execute o aplicativo para ver o ID de registro como resultado no sistema de log do Android. Se vocêestiver usando o Eclipse com o plug-in ADT para Android, é possível ver o ID de registro na janela deexibição do LogCat. Por exemplo, o resultado contendo o ID de registro será semelhante ao seguinte:

amzn1.adm-registration.v2.Example...1cwWJUvgkcPPYcaXCpPWmG3Bqn-wiqIEzp5zZ7y_jsM0PKPxKhddCzx6paEsyay9Zn3D4wNUJb8m6HXrBf9dqaEw

Agora, você deve ter as informações necessárias do ADM (ID e segredo do cliente, chave de API e IDde registro) para enviar mensagens de notificação por push para seu endpoint móvel. Agora, você podeenviar uma mensagem de notificação por push para o aplicativo do Kindle Fire em seu dispositivo usandoo console ou a API do Amazon SNS. Para usar o console do Amazon SNS consulte Uso do push paradispositivos móveis do Amazon SNS (p. 78). Para usar a API do Amazon SNS, consulte Etapa 5:Enviar uma mensagem de notificação por push para um aplicativo do Kindle Fire usando Amazon SNS eADM (p. 43).

Etapa 5: Enviar uma mensagem de notificaçãopor push para um aplicativo do Kindle Fire usandoAmazon SNS e ADMEsta seção descreve como usar as informações de pré-requisitos para enviar uma mensagem denotificação por push para o aplicativo do Kindle Fire usando Amazon SNS e ADM. Adicione as informaçõesexigidas que foram coletadas ao arquivo de amostra SNSMobilePush.java do AWS, incluído no arquivosnsmobilepush.zip.

Note

As etapas a seguir usam o IDE para Java Eclipse. As etapas presumem que você já tenha AWSSDK for Java instalado e que também tenha as credenciais de segurança AWS para sua contaAWS. Para mais informações, consulte Javalong;. Para obter mais informações sobre credenciais,consulte How do I Get Security Credentials? nas AWS General Reference.

Para adicionar a amostra ao Eclipse

1. No Eclipse, crie um novo projeto Java (Arquivo | Novo | Projeto Java).

Versão da API 2010-03-3143

Page 51: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 5: Enviar uma mensagem para um aplicativo

do Kindle Fire usando Amazon SNS e ADM

2. Importe a pasta SNSSamples para o diretório de nível superior do projeto Java recém-criado. NoEclipse, clique com o botão direito do mouse no nome do projeto Java, clique em Importar, expandaGeral, clique em Sistema de arquivos, clique em Próximo, navegue até a pasta SNSSamples, cliqueem OK e clique em Concluir.

3. Na pasta SNSSamples\src\com\amazonaws\sns\samples\mobilepush, abra o arquivoAwsCredentials.properties e adicione suas credenciais de segurança da AWS.

Para adicionar AWS SDK for Java ao Build Path

1. Clique com o botão direito do mouse na pasta do projeto Java, clique em Caminho de compilação eclique em Configurar caminho de compilação...

2. Clique na guia Bibliotecas e clique em Adicionar biblioteca....3. Clique em AWS SDK para Java, clique em Próximo e clique em Concluir.

Para adicionar as informações de pré-requisitos ao SNSMobilePush.java

1. Na pasta SNSSamples\src\com\amazonaws\sns\samples\mobilepush, abra o SNSMobilePush.javano Eclipse.

2. Elimine o comentário em sample.demoKindleAppNotification();. A aparência deve sersemelhante à seguinte:

SNSMobilePush sample = new SNSMobilePush(sns);// TODO: Uncomment the services you wish to use.// sample.demoAndroidAppNotification();sample.demoKindleAppNotification();// sample.demoAppleAppNotification();// sample.demoAppleSandboxAppNotification();// sample.demoBaiduAppNotification();// sample.demoWNSAppNotification();// sample.demoMPNSAppNotification();

3. Localize o método demoKindleAppNotification e digite o ID de registro que você recebeudo ADM como valor da string de ID de registro. Por exemplo, a aparência deve ser semelhante àseguinte:

String registrationId = = "amzn1.adm-registration.v2.Example...1cwWJUvgkcPPYcaXCpPWmG3Bqn-wiqIEzp5zZ7y_jsM0PKPxKhddCzx6paEsyay9Zn3D4wNUJb8m6HXrBf9dqaEw";

4. Insira o ID do cliente para seu aplicativo. Por exemplo, a aparência deve ser semelhante à seguinte:

String clientId = "amzn1.application-oa2-client.EXAMPLE7423654b79fc9f062fEXAMPLE";

5. Insira o segredo do cliente para seu aplicativo. Por exemplo, a aparência deve ser semelhante àseguinte:

String clientSecret = "EXAMPLE01658e75ceb7bf9f71939647b1aa105c1c8eaccabaf7d41f68EXAMPLE";

6. Insira um nome para seu aplicativo. Os nomes de aplicativos devem ser compostos somente por letrasmaiúsculas e minúsculas, números, sublinhados, hifens e pontos em ASCII, e devem ter entre 1 e 256caracteres. Por exemplo, a aparência deve ser semelhante à seguinte:

String applicationName = "admpushapp";

Versão da API 2010-03-3144

Page 52: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorConceitos básicos do APNS

7. Execute o aplicativo Java. Você deve ver um resultado semelhante ao seguinte na janela deresultados do IDE:

===========================================Getting Started with Amazon SNS===========================================

{PlatformApplicationArn: arn:aws:sns:us-west-2:111122223333:app/ADM/mypushappname}{EndpointArn: arn:aws:sns:us-west-2:111122223333:endpoint/ADM/mypushappname/97e9ced9-f136-3893-9d60-775467eafebb}{"ADM": "{ \"data\": { \"message\": \"ENTER YOUR MESSAGE\" } }"}Published. MessageId=b35fb4bz-b503-4e37-83d4-feu4218d6da6

Em seu dispositivo Kindle Fire, você deve ver uma mensagem de notificação por push exibida noaplicativo do Kindle Fire.

Conceitos básicos do Apple Push NotificationService

Apple Push Notification Service (APNS) é um serviço que permite que você envie mensagens denotificação por push para aplicativos iOS e OS X. Esta seção descreve como atender aos pré-requisitos doAPNS e enviar uma mensagem de notificação por push usando Amazon SNS e APNS.

Tópicos• Pré-requisitos do APNS (p. 45)• Etapa 1: Criar um aplicativo iOS (p. 46)• Etapa 2: Obter um certificado SSL para APNS (p. 46)• Etapa 3: Obter a chave privada do aplicativo (p. 46)• Etapa 4: Verificar o certificado e a chave privada do aplicativo (p. 47)• Etapa 5: Obter um token de dispositivo (p. 47)• Próximas etapas (p. 48)• Envie uma mensagem de notificação por push para um aplicativo iOS usando Amazon SNS e

APNS (p. 48)• Enviar uma mensagem de notificação por push para um aplicativo VoIP usando Amazon SNS e

APNS (p. 50)• Enviar uma mensagem de notificação por push para um aplicativo Mac OS X usando Amazon SNS e

APNS (p. 51)

Pré-requisitos do APNSPara enviar notificações por push para dispositivos móveis usando Amazon SNS e APNS, você precisa tero seguinte:

• Aplicativo iOS registrado com APNS• APNS certificado SSL• Chave privada do aplicativo• Token do dispositivo

Se você já tem esses pré-requisitos, você pode enviar uma mensagem de notificação por push para umaplicativo iOS usando o console ou a API do Amazon SNS. Para obter mais informações sobre como usar

Versão da API 2010-03-3145

Page 53: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 1: Criar um aplicativo iOS

o console do Amazon SNS, consulte Uso do push para dispositivos móveis do Amazon SNS (p. 78).Para obter mais informações sobre o uso da API do Amazon SNS, consulte Envie uma mensagem denotificação por push para um aplicativo iOS usando Amazon SNS e APNS (p. 48).

Etapa 1: Criar um aplicativo iOSPara começar a usar o envio de uma mensagem de notificação por push para um aplicativo iOS, vocêprecisa ter uma conta de desenvolvedor da Apple, um ID de aplicativo (identificador de aplicativo), seudispositivo iOS registrado e um perfil de provisionamento iOS. Para obter mais informações, consulte oGuia de programação de notificação local e remota na iOS Developer Library.

Note

Se você ainda não tiver um aplicativo iOS registrado para APNS, você pode usar o aplicativo iOSde amostra fornecido pela AWS como um modelo para começar. Para obter mais informações,consulte Etapa 5: Obter um token de dispositivo (p. 47).

Etapa 2: Obter um certificado SSL para APNSAmazon SNS requer o certificado SSL para APNS do aplicativo no formato .pem. ao usar a API do AmazonSNS. Ao usar o console do Amazon SNS você pode carregar o certificado no formato .p12 e AmazonSNS faz a conversão para .pem e o exibe no console. Você pode usar o aplicativo Keychain Accessno computador Mac para exportar o certificado SSL do APNS. Para obter mais informações sobre ocertificado SSL, consulte Provisioning and Development no Guia de programação de notificação local e porpush da Apple.

Para fazer o download de um certificado SSL do APNS

1. No site Apple Developer, clique em Member Center, clique em Certificados, identificadores e perfis eclique em Certificados.

2. Selecione o certificado que você criou para desenvolvimento de APNS no iOS, clique em Fazerdownload e salve o arquivo, que terá a extensão .cer.

Para converter o certificado SSL de APNS do formato .cer para o formato. pem

As etapas a seguir usam o utilitário openssl.

• Em um prompt de comando, digite o seguinte comando. Substitua myapnsappcert.cer pelo nomedo certificado obtido por download no site do desenvolvedor da Apple.

openssl x509 -in myapnsappcert.cer -inform DER -out myapnsappcert.pem

O arquivo .pem recém-criado será usado para configurar Amazon SNS para enviar mensagens denotificação por push para dispositivos móveis.

Etapa 3: Obter a chave privada do aplicativoAmazon SNS requer uma chave privada do aplicativo no formato .pem. Você usa o aplicativo KeychainAccess no seu computador Mac para exportar a chave privada do aplicativo.

Para obter a chave privada do aplicativo

A chave privada associada ao certificado SSL pode ser exportada a partir do aplicativo Keychain Accessdo computador Mac. Isso pressupõe que você já importou o arquivo .cer baixado do site do desenvolvedorda Apple para o Keychain Access. Você pode fazer isso copiando o arquivo .cer para dentro do KeychainAccess ou clicando duas vezes no arquivo .cer.

Versão da API 2010-03-3146

Page 54: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 4: Verificar o certificadoe a chave privada do aplicativo

1. Abra o Keychain Access, selecione Chaves e selecione a chave privada do aplicativo.2. Clique em Arquivo, clique em Exportar itens... e insira um nome no campo Salvar como:.3. Aceite o formato de arquivo padrão .p12 e clique em Salvar.

O arquivo .p12 será, então, convertido para o formato de arquivo .pem.

Para converter a chave privada do aplicativo do formato .p12 para o formato .pem

• Em um prompt de comando, digite o seguinte comando. Substitua myapnsappprivatekey.p12 pelonome da chave privada que você exportou do Keychain Access.

openssl pkcs12 -in myapnsappprivatekey.p12 -out myapnsappprivatekey.pem -nodes -clcerts

O arquivo .pem recém-criado será usado para configurar Amazon SNS para enviar mensagens denotificação por push para dispositivos móveis.

Etapa 4: Verificar o certificado e a chave privada doaplicativoVocê pode verificar os arquivos .pem de certificado e chave privada usando-os para se conectar ao APNS.

Para verificar o certificado e a chave privada conectando-se ao APNS

• Em um prompt de comando, digite o seguinte comando. Substitua myapnsappcert.pem emyapnsappprivatekey.pem pelo nome de seu certificado e chave privada.

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert myapnsappcert.pem -key myapnsappprivatekey.pem

Etapa 5: Obter um token de dispositivoQuando você registrar seu aplicativo no APNS para receber mensagens de notificação por push, umtoken de dispositivo (valor hexadecimal de 64 bytes) é gerado. As etapas a seguir descrevem comousar o aplicativo iOS de amostra fornecido pela AWS para obter um token de dispositivo do APNS. Vocêpode usar esse aplicativo iOS de amostra para ajudá-lo a começar a usar as notificações por push doAmazon SNS. Para obter mais informações, consulte Configurar suporte de notificação remota no Guia deprogramação de notificação remota e local da Apple.

Para obter um token de dispositivo do APNS para seu aplicativo

1. Faça o download e descompacte o arquivo snsmobilepush.zip.2. Navegue até a pasta AppleMobilePushApp e abra a pasta iOS 7 and earlier ou a pasta iOS

8.3. No Xcode, abra o projeto AmazonMobilePush.xcodeproj.4. Execute o aplicativo em Xcode. Na janela de resultado, você deve ver o token de dispositivo exibido,

que é semelhante ao seguinte:

Device Token = <examp1e 29z6j5c4 df46f809 505189c4 c83fjcgf 7f6257e9 8542d2jt 3395kj73>

Versão da API 2010-03-3147

Page 55: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorPróximas etapas

Note

Não inclua espaços no token de dispositivo ao enviá-lo para o Amazon SNS.

Próximas etapasAgora, você deve ter as informações necessárias do APNS (certificado SSL, chave privada do aplicativoe token de dispositivo) para enviar mensagens de notificação por push para seu endpoint móvel. Agora,você pode enviar uma notificação para o aplicativo iOS em seu dispositivo usando o console ou a API doAmazon SNS.

• Para enviar uma notificação para o aplicativo iOS em seu dispositivo usando o console do Amazon SNS,consulte Uso do push para dispositivos móveis do Amazon SNS (p. 78).

• Para usar a API do Amazon SNS, consulte Envie uma mensagem de notificação por push para umaplicativo iOS usando Amazon SNS e APNS (p. 48).

• Para enviar uma mensagem de notificação por push para um aplicativo VoIP usando Amazon SNS eAPNS, consulte Enviar uma mensagem de notificação por push para um aplicativo VoIP usando AmazonSNS e APNS (p. 50).

• Para enviar uma mensagem de notificação por push para um aplicativo Mac OS X usando Amazon SNSe APNS, consulte Enviar uma mensagem de notificação por push para um aplicativo Mac OS X usandoAmazon SNS e APNS (p. 51).

Envie uma mensagem de notificação por push paraum aplicativo iOS usando Amazon SNS e APNSEsta seção descreve como usar as informações de pré-requisito com a API do Amazon SNS para enviaruma mensagem de notificação por push a seu aplicativo iOS usando Amazon SNS e APNS. Você adicionaas informações de pré-requisitos ao arquivo de amostra da AWS SNSMobilePush.java, que estáincluído no arquivo snsmobilepush.zip.

Você também pode usar o console do Amazon SNS. Para obter mais informações sobre como usar oconsole do Amazon SNS, consulte Uso do push para dispositivos móveis do Amazon SNS (p. 78).

Note

As etapas a seguir usam o IDE para Java Eclipse. As etapas presumem que você já tenha AWSSDK for Java instalado e que também tenha as credenciais de segurança AWS para sua contaAWS. Para mais informações, consulte Javalong;. Para obter mais informações sobre credenciais,consulte How do I Get Security Credentials? nas AWS General Reference.

Para adicionar a amostra ao Eclipse

1. No Eclipse, crie um novo projeto Java (Arquivo | Novo | Projeto Java).2. Importe a pasta SNSSamples para o diretório de nível superior do projeto Java recém-criado. No

Eclipse, clique com o botão direito do mouse no nome do projeto Java, clique em Importar, expandaGeral, clique em Sistema de arquivos, clique em Próximo, navegue até a pasta SNSSamples, cliqueem OK e clique em Concluir.

3. Na pasta SNSSamples\src\com\amazonaws\sns\samples\mobilepush, abra o arquivoAwsCredentials.properties e adicione suas credenciais de segurança da AWS.

Versão da API 2010-03-3148

Page 56: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEnvie uma mensagem para um aplicativo iOS

Para adicionar AWS SDK for Java ao Build Path

1. Clique com o botão direito do mouse na pasta do projeto Java, clique em Caminho de compilação eclique em Configurar caminho de compilação...

2. Clique na guia Bibliotecas e clique em Adicionar biblioteca....3. Clique em AWS SDK para Java, clique em Próximo e clique em Concluir.

Para adicionar as informações de pré-requisitos ao SNSMobilePush.java

1. Na pasta SNSSamples\src\com\amazonaws\sns\samples\mobilepush, abra o SNSMobilePush.javano Eclipse.

2. Dependendo do APNS que você está usando, elimine ocomentário em sample.demoAppleAppNotification(); ousample.demoAppleSandboxAppNotification();. Por exemplo, se você estiver usandodemoAppleSandboxAppNotification, ele deve ser semelhante ao seguinte:

SNSMobilePush sample = new SNSMobilePush(sns);// TODO: Uncomment the services you wish to use.// sample.demoAndroidAppNotification();// sample.demoKindleAppNotification();// sample.demoAppleAppNotification();sample.demoAppleSandboxAppNotification();// sample.demoBaiduAppNotification();// sample.demoWNSAppNotification();// sample.demoMPNSAppNotification();

3. Localize o método demoAppleSandboxAppNotification e digite o token de dispositivo que vocêrecebeu do APNS como valor da string de token de dispositivo. Por exemplo, a aparência deve sersemelhante à seguinte:

String deviceToken = "examp1e29z6j5c4df46f809505189c4c83fjcgf7f6257e98542d2jt3395kj73";

4. Insira o certificado SSL de APNS para seu aplicativo. No início de cada nova linha em seu certificado,você deve adicionar \n. Por exemplo, a aparência deve ser semelhante à seguinte:

String certificate = "-----BEGIN CERTIFICATE-----\nMIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6\nb24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd\nBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN\nMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD\nVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z\nb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt\nYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ\n21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T\nrDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE\nIbb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4\nnUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb\nFFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb\nNYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=\n-----END CERTIFICATE-----";

5. Insira a chave privada para seu aplicativo. No início de cada nova linha em seu certificado, você deveadicionar \n. Por exemplo, a aparência deve ser semelhante à seguinte:

String privateKey = "-----BEGIN RSA PR1VATE KEY-----\nMJICiTCHAfICCQD9m7oRw0uXOjANBgkqhkiG7w0BAQUFADCBiDELMAkGA1UEBhMC

Versão da API 2010-03-3149

Page 57: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEnviar uma mensagem para um aplicativo VoIP

\nWVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGx2MQ8wDQYDVQQKEwZBbWF6\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6\n4MXNchZOFFreg4Rr3Xzhb9RhvlIRgsr3wU4/FYai3z96EXAMPLE=\n-----END RSA PR1VATE KEY-----";

6. Insira um nome para seu aplicativo. Os nomes de aplicativos devem ser compostos somente por letrasmaiúsculas e minúsculas, números, sublinhados, hifens e pontos em ASCII, e devem ter entre 1 e 256caracteres. Por exemplo, a aparência deve ser semelhante à seguinte:

String applicationName = "mypushappname";

7. Execute o aplicativo Java. Você deve ver um resultado semelhante ao seguinte na janela deresultados do IDE:

===========================================Getting Started with Amazon SNS===========================================

{PlatformApplicationArn: arn:aws:sns:us-west-2:111122223333:app/APNS_SANDBOX/mypushappname}{EndpointArn: arn:aws:sns:us-west-2:111122223333:endpoint/APNS_SANDBOX/pushapp/97e9ced9-f136-3893-9d60-775467eafebb}{"default":"This is the default Message","APNS_SANDBOX":"{ \"aps\" : { \"alert\" : \"You have got email.\", \"badge\" : 9,\"sound\" :\"default\"}}"}Published. MessageId=d65fb4bb-b903-5e37-83d4-feb4818d6da3

No seu dispositivo iOS, você deve ver uma mensagem de notificação.

Enviar uma mensagem de notificação por push paraum aplicativo VoIP usando Amazon SNS e APNSPara enviar uma mensagem de notificação por push para um aplicativo VoIP usando Amazon SNS eAPNS, você deve primeiro concluir os pré-requisitos em Pré-requisitos do APNS (p. 45).

Note

Se você ainda não tiver um aplicativo iOS registrado com APNS, você pode fazer odownload e usar o arquivo de amostra snsmobilepush.zip fornecido pela AWS como ummodelo para começar. Para obter mais informações, consulte Etapa 5: Obter um token dedispositivo (p. 47).

Para registrar seu aplicativo móvel com AWS

1. Acesse https://console.aws.amazon.com/sns/ e clique em Criar aplicativo de plataforma.2. Na caixa Nome do aplicativo, insira um nome para representar seu aplicativo.

Os nomes de aplicativos devem ser compostos somente por letras maiúsculas e minúsculas, números,sublinhados, hifens e pontos em ASCII, e devem ter entre 1 e 256 caracteres.

3. Na Plataforma de notificação por push, selecione o campo Desenvolvimento Apple ou ProduçãoApple.

4. No campo Tipo de certificação do push, selecione Certificado VoIP Push.5. Selecione o certificado criptografado da senha e a chave privada, conforme exportado do Keychain

Access no computador Mac no formato de arquivo .p12.6. Insira a senha e clique em Criar aplicativo de plataforma.

Versão da API 2010-03-3150

Page 58: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEnviar uma mensagem para um aplicativo Mac OS X

Enviar uma mensagem de notificação por push paraum aplicativo Mac OS X usando Amazon SNS e APNSPara enviar uma mensagem de notificação por push para um aplicativo Mac OS X usando Amazon SNS eAPNS, você deve primeiro concluir os pré-requisitos em Pré-requisitos do APNS (p. 45).

Note

Se você ainda não tiver um aplicativo Mac OS X registrado com APNS, você pode fazer odownload e usar um aplicativo de amostra, como PushyMac, que está disponível no site dodesenvolvedor da Apple.

Para registrar seu aplicativo móvel com AWS

1. Acesse https://console.aws.amazon.com/sns/ e clique em Criar aplicativo de plataforma.2. Na caixa Nome do aplicativo, insira um nome para representar seu aplicativo.

Os nomes de aplicativos devem ser compostos somente por letras maiúsculas e minúsculas, números,sublinhados, hifens e pontos em ASCII, e devem ter entre 1 e 256 caracteres.

3. Na Plataforma de notificação por push, selecione o campo Desenvolvimento Apple ou ProduçãoApple.

4. No campo Tipo de certificação do push, selecione Certificado MacOS Push.5. Selecione o certificado criptografado da senha e a chave privada, conforme exportado do Keychain

Access no computador Mac no formato de arquivo .p12.6. Insira a senha e clique em Criar aplicativo de plataforma.

Conceitos básicos do Baidu Cloud PushBaidu Cloud Push é um serviço chinês de nuvem. Com Baidu, você pode enviar mensagens de notificaçãopor push para dispositivos móveis. Esta seção descreve como atender aos pré-requisitos do Baidu e enviaruma mensagem de notificação por push usando Amazon SNS e Baidu.

Tópicos• Pré-requisitos do Baidu (p. 51)• Etapa 1: Criar uma conta do Baidu (p. 52)• Etapa 2: Registrar-se como um desenvolvedor do Baidu (p. 53)• Etapa 3: Criar um projeto de push em nuvem do Baidu (p. 56)• Etapa 4: Baixar e instalar o aplicativo de demonstração Android do Baidu (p. 59)• Etapa 5: Obter um ID de usuário e um ID de canal do Baidu (p. 63)• Etapa 6: Enviar uma mensagem de notificação por push para um endpoint móvel usando Amazon SNS

e Baidu (p. 63)

Pré-requisitos do BaiduPara enviar uma mensagem de notificação por push para dispositivos móveis usando Amazon SNS eBaidu, você precisa do seguinte:

• Conta no Baidu• Registro como desenvolvedor do Baidu

Versão da API 2010-03-3151

Page 59: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 1: Criar uma conta do Baidu

• Projeto por push em nuvem do Baidu• Chave de API e chave secreta de um projeto por push em nuvem do Baidu• ID de usuário e ID de canal do Baidu• Aplicativo de demonstração Android

Se você já tem esses pré-requisitos, você pode enviar uma mensagem de notificação por push paraum endpoint móvel usando a API do Amazon SNS. Para obter mais informações sobre o uso da API doAmazon SNS, consulte Etapa 6: Enviar uma mensagem de notificação por push para um endpoint móvelusando Amazon SNS e Baidu (p. 63).

Etapa 1: Criar uma conta do BaiduPara usar Baidu, você deve primeiro criar uma conta.

Important

Para criar uma conta no Baidu, há uma etapa de verificação na qual você deve informarcaracteres chineses simplificados. A maneira mais fácil de realizar esta tarefa é pedir ajuda paraalguém que consegue ler em chinês. Outra opção é usar Amazon Mechanical Turk para criar aconta no Baidu. Assim que você tiver criado a conta e a senha para o Baidu, você pode fazer logine alterar a senha sem a necessidade de inserir caracteres chineses simplificados. Para obter maisinformações sobre Mechanical Turk, consulte Amazon Mechanical Turk Requester User Interface.

Para criar uma conta no Baidu

1. No Portal Baidu, no canto superior direito, clique em 注册 (Registro).

2. Insira um endereço de e-mail, senha e código de verificação e clique em 注册 (Registro).

Em seguida, você verá uma página semelhante à seguinte, informando que um e-mail de ativação foienviado para o endereço de e-mail que você inseriu.

Versão da API 2010-03-3152

Page 60: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 2: Registrar-se como um desenvolvedor do Baidu

3. Faça login em sua conta de e-mail, abra o e-mail de ativação que você recebeu do Baidu e clique nolink fornecido:

4. Depois de clicar no link fornecido no e-mail de ativação do Baidu, você deverá informar o código deverificação (caracteres chineses simplificados).

Assim que você tiver criado uma conta do Baidu, você pode se registrar como um desenvolvedor.

Etapa 2: Registrar-se como um desenvolvedor doBaiduVocê deve se registrar como um desenvolvedor do Baidu para usar o serviço de notificações por push doBaidu.

Versão da API 2010-03-3153

Page 61: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 2: Registrar-se como um desenvolvedor do Baidu

Para registrar-se como um desenvolvedor do Baidu

1. No Portal Baidu, clique em 更多 (Mais).

2. Clique em 百度开放云平台 (Plataforma aberta de nuvem do Baidu)

3. Na próxima página, perto do canto superior direito, clique em 开发者服务 (Serviços de desenvolvedor).

4. Clique em 马上开始 (Iniciar Agora)

5. Insira seu nome, descrição e número de celular para receber uma mensagem de texto de verificação eclique em 发送验证码 (Enviar código de verificação).

Versão da API 2010-03-3154

Page 62: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 2: Registrar-se como um desenvolvedor do Baidu

Em seguida, você deve receber uma mensagem de texto com um número de verificação, semelhanteà seguinte:

6. Preencha o registro do desenvolvedor inserindo o número de verificação e clicando em 提交 (Enviar)na parte inferior da página.

Versão da API 2010-03-3155

Page 63: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 3: Criar um projeto de push em nuvem do Baidu

Se o registro for bem-sucedido, você verá o seguinte:

Após registrar-se como um desenvolvedor do Baidu, você pode ir para a próxima etapa para criar umprojeto de push em nuvem do Baidu. Isso pressupõe que vocês ainda estão conectados. Se você nãoestiver conectado, você pode usar o seguinte procedimento de login.

Para fazer login no Baidu

1. No Portal Baidu, no canto superior direito, clique em 登录 (Login).

2. Digite seu nome de usuário (endereço de e-mail) e senha do Baidu e clique em 登录 (Login)

Etapa 3: Criar um projeto de push em nuvem do BaiduQuando você cria um projeto de push em nuvem do Baidu, você recebe o ID do aplicativo, a chave de APIe a chave secreta.

Para criar um projeto de push em nuvem do Baidu

1. No Portal Baidu, clique em 更多 (Mais).

Versão da API 2010-03-3156

Page 64: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 3: Criar um projeto de push em nuvem do Baidu

2. Clique em 百度开放云平台 (Plataforma aberta de nuvem do Baidu)

3. Na próxima página, perto do canto superior direito, clique em 开发者服务 (Serviços de desenvolvedor).

4. Clique em 云推送 (Cloud Push).

5. Clique em 管理控制台 (Console de gerenciamento).

6. Clique em 管理控制台 (Console de gerenciamento) para inserir informações sobre um projeto Android.

Versão da API 2010-03-3157

Page 65: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 3: Criar um projeto de push em nuvem do Baidu

7. Clique em 创建工程 (Criar projeto).

8. Insira um nome de aplicativo e clique em 创建 (Criar).

Versão da API 2010-03-3158

Page 66: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 4: Baixar e instalar o

aplicativo de demonstração Android

9. Após a conclusão bem-sucedida do projeto, você verá uma página semelhante à seguinte com seu IDdo aplicativo, Chave de API e Chave secreta. Anote a chave de API e a chave secreta, pois elas serãonecessárias mais tarde.

Etapa 4: Baixar e instalar o aplicativo dedemonstração Android do BaiduBaidu gera um aplicativo de demonstração Android que você pode baixar e instalar em seu dispositivomóvel.

Para baixar e instalar o aplicativo de demonstração Android do Baidu

1. Na página que exibe o ID do aplicativo, a Chave de API e a Chave secreta, clique em 云推送 (CloudPush)

2. Clique em 推送设置 (Configurações de push)

Versão da API 2010-03-3159

Page 67: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 4: Baixar e instalar o

aplicativo de demonstração Android

3. Usando a notação de nome de domínio reverso, insira um nome de pacote na caixa 应用包名 (Nomedo pacote do aplicativo)

4. Clique em 保存设置 (Salvar configurações)

Versão da API 2010-03-3160

Page 68: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 4: Baixar e instalar o

aplicativo de demonstração Android

Você deve ver a mensagem 保存成功!(Salvo com sucesso!).

5. Em seguida, clique em 快速示例 (Exemplo rápido).

Você deve ver uma página semelhante à seguinte:

Versão da API 2010-03-3161

Page 69: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 4: Baixar e instalar o

aplicativo de demonstração Android

6. No dispositivo móvel Android com o qual você deseja testar, digitalize o ícone de código QR usandoum digitalizador de código, como QR Droid, para obter um link para um aplicativo de demonstraçãofornecido pelo Baidu.

Note

Você também pode fazer download do aplicativo de demonstração clicando 下载Android示例(Baixar amostra para Android)

O aplicativo de demonstração de push Baidu está incluído no pacotePushDemo.zipbaixado. Você pode usar o aplicativo de demonstração como um exemplo para criar seupróprio aplicativo para uso com o Baidu. Além disso, o arquivo jar do serviço por push(pushservice-4.0.0.jar) do Baidu está incluído no pacote PushDemo.zip. Você deveusar o arquivo jar do Baidu para criar um novo aplicativo.

7. Clique no link que você receber após a digitalização do código de verificação. Isso vai baixar oaplicativo de demonstração fornecido pelo Baidu em seu dispositivo móvel.

8. Depois que o download for concluído, instale o aplicativo de demonstração em seu dispositivo móvel.Você deve ver o seguinte aplicativo Demonstração de push instalado:

Versão da API 2010-03-3162

Page 70: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 5: Obter um ID de usuário e um ID de canal

Etapa 5: Obter um ID de usuário e um ID de canal doBaiduBaidu gera um ID de usuário e um ID de canal com os quais você precisará enviar uma mensagem denotificação por push usando Baidu.

Para obter o ID de usuário e o ID do canal do Baidu

1. Abra Demonstração de push e clique em 无账号绑定 (Vincular sem a conta do Baidu) na parte inferiordireita.

Em seguida, você deve ver uma tela semelhante à seguinte com o userId e o channelId.

2. Anote o userId e o channelId, pois você precisará deles na próxima etapa.

Note

Para obter um exemplo do código Java que é usado para recuperar o userID e o channelId,consulte o método onBind no arquivo MyPushMessageReceiver.java do aplicativo dedemonstração de push do Baidu. Para obter mais informações, consulte o Guia de integraçãoAndroid. Para traduzir esse guia para o inglês, cole o URL http://developer.baidu.com/wiki/index.php?title=docs/cplat/push/guide no Bing Translator e clique em Traduzir.

Etapa 6: Enviar uma mensagem de notificação porpush para um endpoint móvel usando Amazon SNS eBaiduEsta seção descreve como enviar uma mensagem de notificação por push para o endpoint móvel. Adicioneas informações exigidas que foram coletadas ao arquivo de amostra SNSMobilePush.java do AWS,incluído no arquivo snsmobilepush.zip. No arquivo SNSMobilePush.java, estão incluídos exemplosde como criar um endpoint móvel e usar atributos de mensagem para estruturar a mensagem. Para obtermais informações e exemplos sobre como criar endpoints móveis e usar atributos de mensagem com oBaidu, consulte Criação de um endpoint do Amazon SNS para o Baidu (p. 65) e Uso dos atributos demensagem para estruturação da mensagem (p. 66).

Note

As etapas a seguir usam o IDE para Java Eclipse. As etapas presumem que você já tenha AWSSDK for Java instalado e que também tenha as credenciais de segurança AWS para sua contaAWS. Para mais informações, consulte Javalong;. Para obter mais informações sobre credenciais,consulte How do I Get Security Credentials? nas AWS General Reference.

Versão da API 2010-03-3163

Page 71: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 6: Enviar uma mensagem de notificação por pushpara um endpoint móvel usando Amazon SNS e Baidu

Para adicionar a amostra ao Eclipse

1. No Eclipse, crie um novo projeto Java (Arquivo | Novo | Projeto Java).2. Importe a pasta SNSSamples para o diretório de nível superior do projeto Java recém-criado. No

Eclipse, clique com o botão direito do mouse no nome do projeto Java, clique em Importar, expandaGeral, clique em Sistema de arquivos, clique em Próximo, navegue até a pasta SNSSamples, cliqueem OK e clique em Concluir.

3. Na pasta SNSSamples\src\com\amazonaws\sns\samples\mobilepush, abra o arquivoAwsCredentials.properties e adicione suas credenciais de segurança da AWS.

Para adicionar AWS SDK for Java ao Build Path

1. Clique com o botão direito do mouse na pasta do projeto Java, clique em Caminho de compilação eclique em Configurar caminho de compilação...

2. Clique na guia Bibliotecas e clique em Adicionar biblioteca....3. Clique em AWS SDK para Java, clique em Próximo e clique em Concluir.

Para adicionar as informações de pré-requisitos ao SNSMobilePush.java

1. Na pasta SNSSamples\src\com\amazonaws\sns\samples\mobilepush, abra o SNSMobilePush.javano Eclipse e elimine o comentário sample.demoBaiduAppNotification();. A aparência deve sersemelhante à seguinte:

SNSMobilePush sample = new SNSMobilePush(sns);// TODO: Uncomment the services you wish to use.//sample.demoAndroidAppNotification();//sample.demoKindleAppNotification();//sample.demoAppleAppNotification();//sample.demoAppleSandboxAppNotification();sample.demoBaiduAppNotification();//sample.demoWNSAppNotification();//sample.demoMPNSAppNotification();

2. Localize o método demoBaiduAppNotification e digite o ID de usuário e o ID de canal que vocêrecebeu do Baidu como valor das strings userId e channelId. Por exemplo, a aparência deve sersemelhante à seguinte:

String userId = "EXAMPLE-kLMchcX0v3xOxWVhG6TfdBp...KT2TGkvnKyTvLuSpzK_qsHgxVB_UpmcUa7Gl6g3EXAMPLE";String channelId = "EXAMPLE<channelId>EXAMPLE";

3. Insira a chave secreta para seu aplicativo. Por exemplo, a aparência deve ser semelhante à seguinte:

String secretKey = "EXAMPLE<secretkey>EXAMPLE";

4. Insira a chave de API para seu aplicativo. Por exemplo, a aparência deve ser semelhante à seguinte:

String apiKey = "EXAMPLExV2lcV2zEKTLNYs625zfk2jh4EXAMPLE";

5. Insira um nome para seu aplicativo. Os nomes de aplicativos devem ser compostos somente por letrasmaiúsculas e minúsculas, números, sublinhados, hifens e pontos em ASCII, e devem ter entre 1 e 256caracteres. Por exemplo, a aparência deve ser semelhante à seguinte:

String applicationName = "baidupushapp";

Versão da API 2010-03-3164

Page 72: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 6: Enviar uma mensagem de notificação por pushpara um endpoint móvel usando Amazon SNS e Baidu

6. Execute o aplicativo. Você deve ver um resultado semelhante ao seguinte na janela de resultados doIDE:

===========================================Getting Started with Amazon SNS===========================================

{PlatformApplicationArn: arn:aws:sns:us-west-2:111122223333:app/BAIDU/TestApp}{EndpointArn: arn:aws:sns:us-west-2:111122223333:endpoint/BAIDU/TestApp/8f3fdf0d-520b-38d1-8ed2-3301a477eef3}{Message Body: {"BAIDU":"{\"title\":\"New Notification Received from SNS\",\"description\":\"Hello World!\"}"}}{Message Attributes: ("AWS.SNS.MOBILE.BAIDU.MessageKey": "default-channel-msg-key"),("AWS.SNS.MOBILE.BAIDU.DeployStatus": "1"),("AWS.SNS.MOBILE.BAIDU.MessageType": "0")}Published! {MessageId=56a3a3e6-4b4b-59b4-8d1d-eff592c0ffa1}

No seu dispositivo Android, você deve ver uma mensagem de notificação por push exibida noaplicativo Android, semelhante à seguinte:

Criação de um endpoint do Amazon SNS para o BaiduEsta seção apresenta informações adicionais e exemplos sobre como criar um endpoint do Amazon SNSpara uso com Baidu. Você cria um endpoint do Amazon SNS usando o userId e o channelId recebidos doBaidu combinados para representar o aplicativo e o dispositivo móvel. O endpoint é, então, usado peloAmazon SNS para a publicação de mensagens de notificação usando o serviço de notificações por pushdo Baidu para o aplicativo no dispositivo móvel.

O seguinte exemplo Java mostra como criar um endpoint do Amazon SNS para um aplicativo Baidu edispositivo móvel.

Map<String ,String> attributes = new HashMap<String ,String>();

// Insert your UserId. This is a mandatory field.attributes.put("UserId", "9999999999");

// Insert your ChannelId. This is a mandatory field.attributes.put("ChannelId", "1234567890");

CreatePlatformEndpointRequest createPlatformEndpointRequest = new CreatePlatformEndpointRequest();

// Baidu endpoints are identified by a combination of the userId and channelId which must be supplied as endpoint attributes,// without which a valid endpoint cannot be successfully created.createPlatformEndpointRequest.setAttributes(attributes);

Versão da API 2010-03-3165

Page 73: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 6: Enviar uma mensagem de notificação por pushpara um endpoint móvel usando Amazon SNS e Baidu

// Insert your ChannelId. This is a mandatory field.createPlatformEndpoint.setPlatformToken("1234567890");

// Insert your Customer User Data. This is an optional field.createPlatformEndpoint.setCustomUserData("Test Endpoint");

// Insert your Platform Application Arn. This is a mandatory field.createPlatformEndpoint.setPlatformApplicationArn("arn:aws:sns:us-west-2:123456789012:app/BAIDU/TestApp");String endpointArn = snsClient.createPlatformEndpoint(createPlatformEndpointRequest);

Observe as seguintes considerações ao usar a API do Amazon SNS para criar um endpoint para uso comBaidu:

• Em CreateEndpointRequest, o campo de token da plataforma deve conter o channelId.• Se você especificar o atributo de endpoint “Token” no mapa de atributos, esse campo deve encapsular o

channelId também.• O channelId também deve ser especificado como um atributo de endpoint com o nome “ChannelId”.• O valor do atributo de endpoint “ChannelId” e o campo do token de plataforma e/ou atributo de endpoint

de “Token” devem ser idênticos para gerar uma solicitação bem-sucedida.• O userId deve ser especificado como um atributo de endpoint com o nome “UserId”.• Para obter uma resposta bem-sucedida, a solicitação deve conter valores válidos de UserId e ChannelId

nos atributos. Além disso, o parâmetro ChannelId inserido usando setPlatformToken (string), que é umaparte de CreatePlatformEndpointRequest, deve ser o mesmo que o ChannelId especificado no mapa deatributos.

Uso dos atributos de mensagem para estruturação da mensagemEsta seção apresenta informações adicionais e exemplos para usar atributos de mensagem para estruturaruma mensagem e enviar uma mensagem de notificação por push para um endpoint móvel.

O seguinte exemplo Java mostra como enviar uma mensagem de notificação por push para um endpointmóvel e como usar os atributos opcionais de mensagem para organizar a mensagem. Se um atributo não éenviado, um valor padrão é definido automaticamente em seu lugar.

Note

A mensagem de notificação por push não pode exceder 256 bytes, que é o tamanho máximopermitido pelo Baidu.

Map<String, MessageAttributeValue> messageAttributes = new HashMap<String, MessageAttributeValue>();

// Insert your desired value of Deploy Status here. 1 = DEV, 2 = PRODmessageAttributes.put("AWS.SNS.MOBILE.BAIDU.DeployStatus", new MessageAttributeValue().withDataType("String").withStringValue("1"));

// Insert your desired value of Message Type here. 0 = IN-APP MESSAGE, 1 = ALERT NOTIFICATIONmessageAttributes.put("AWS.SNS.MOBILE.BAIDU.MessageType", new MessageAttributeValue().withDataType("String").withStringValue("1"));

// Insert your desired value of Message KeymessageAttributes.put("AWS.SNS.MOBILE.BAIDU.MessageKey", new MessageAttributeValue().withDataType("String").withStringValue("test-message"));

PublishRequest publishRequest = new PublishRequest();publishRequest.setMessageAttributes(messageAttributes);String message = "{\"title\":\"Test_Title\",\"description\":\"Test_Description\"}";

Versão da API 2010-03-3166

Page 74: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorConceitos básicos do GCM

publishRequest.setMessage(message);publishRequest.setTargetArn("arn:aws:sns:us-west-2:999999999999:endpoint/BAIDU/TestApp/309fc7d3-bc53-3b63-ac42-e359260ac740");PublishResult publishResult = snsClient.publish(publishRequest);

Observe as seguintes considerações ao usar atributos opcionais de mensagem para organizar amensagem:

• AWS.SNS.MOBILE.BAIDU.DeployStatus

Valores possíveis (Padrão = 1):

1 – sinaliza a notificação como sendo enviada em um ambiente de desenvolvimento

2 – sinaliza a notificação como sendo enviada em um ambiente de produção• AWS.SNS.MOBILE.BAIDU.MessageType

Valores possíveis (Padrão = 1):

0 – gera uma mensagem no aplicativo

1 – gera uma notificação de alerta. As notificações de alerta são restritas ao seguinte formato:

{"title":"<TITLE>","description":"<DESCRIPTION>"}

<TITLE> e <DESCRIPTION> são o título e a descrição desejados para sua notificação de alerta. Se amensagem tem o formato incorreto JSON, a solicitação falha.

• AWS.SNS.MOBILE.BAIDU.MessageKey

Um identificador de mensagens curtas que você pode anexar à sua mensagem

Conceitos básicos do Google Cloud Messagingpara Android

Google Cloud Messaging para Android (GCM) é um serviço que permite que você envie mensagens denotificação por push para aplicativos Android. Esta seção descreve como obter os pré-requisitos do &GCMe enviar uma mensagem de notificação por push para um endpoint móvel.

Tópicos• Pré-requisitos do GCM (p. 67)• Etapa 1: Criar um projeto de API do Google e habilitar o serviço GCM (p. 68)• Etapa 2: Obter a chave de API do servidor (p. 68)• Etapa 3: Obter um ID de registro do GCM (p. 68)• Etapa 4: Enviar uma mensagem de notificação por push para um endpoint móvel usando

GCM (p. 70)

Pré-requisitos do GCMPara enviar mensagens de notificação por push para um aplicativo Android, é necessário o seguinte:

• Aplicativo Android registrado com GCM• ID de registro

Versão da API 2010-03-3167

Page 75: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 1: Criar um projeto de API do

Google e habilitar o serviço GCM

• Chave de API do servidor (token de autenticação do remetente)

Se você já tem esses pré-requisitos, você pode usar o console do Amazon SNS para enviar umamensagem de notificação por push para o endpoint móvel ou você pode usar a API do Amazon SNS.Para obter mais informações sobre como usar o console do Amazon SNS, consulte Uso do push paradispositivos móveis do Amazon SNS (p. 78). Para obter mais informações sobre o uso da API doAmazon SNS, consulte Etapa 4: Enviar uma mensagem de notificação por push para um endpoint móvelusando GCM (p. 70).

Etapa 1: Criar um projeto de API do Google e habilitaro serviço GCMPara enviar uma mensagem de notificação por push para um aplicativo Android, você deve ter um projetode API do Google e habilitar o serviço GCM.

Para criar um projeto de API do Google e habilitar o serviço GCM

1. No site do console de APIs do Google, verifique se você tem um projeto de API do Google.2. Clique em Serviços e verifique se Google Cloud Messaging para Android está ativado.

Etapa 2: Obter a chave de API do servidorPara se comunicar com o GCM em seu nome, Amazon SNS usa sua chave de API do servidor. Essachave será usada em uma etapa posterior para enviar uma notificação por push para um endpoint móvel.

Para obter a chave de API do servidor

1. No site do console de APIs do Google, clique em Acesso à API e anote a chave da API do servidorcom o rótulo Chave para aplicativos do servidor (com bloqueio de IP).

2. Se você ainda não tiver criado uma chave de API do servidor, clique em Criar nova chave do servidor.Essa chave será usada mais tarde nesta seção para enviar uma notificação por push para umendpoint móvel.

Etapa 3: Obter um ID de registro do GCMQuando você registrar seu aplicativo com GCM para receber mensagens de notificação por push, um ID deregistro é gerado. Amazon SNS usa esse valor para determinar para qual aplicativo e dispositivo associadoele deve enviar notificações por push móveis.

As etapas a seguir mostram como usar o aplicativo Android de amostra fornecido pela AWS para obterum ID de registro do GCM. Você pode usar esse aplicativo Android de amostra para ajudá-lo a começar ausar as notificações por push do Amazon SNS. Este aplicativo de amostra requer o Android SDK, o GooglePlay Services SDK e o pacote Android Support Library. Para obter mais informações sobre esses SDKs,consulte Get the Android SDK e Setup Google Play Services SDK. Para obter mais informações sobre opacote Android Support Library, consulte Support Library Setup.

Note

O aplicativo Android de amostra fornecido é compatível com dispositivos físicos que executam oAndroid versão 2.3 ou posterior e com dispositivos virtuais que executam a API do Google 17 ouposterior.

Versão da API 2010-03-3168

Page 76: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 3: Obter um ID de registro do GCM

Para obter um ID de registro do GCM para seu aplicativo

1. Faça o download e descompacte o arquivo snsmobilepush.zip.2. Importe a pasta AndroidMobilePushApp para seu IDE. No Eclipse, clique em Arquivo, Importar,

expanda a pasta Android, clique em Código de Android existente no Workspace, clique em Próximo,navegue até a pasta AndroidMobilePushApp, clique em OK e clique em Concluir.

Depois que o aplicativo Android de amostra for importado para seu IDE, você precisa adicionar onúmero do projeto de seu projeto de API do Google ao arquivo strings.xml, que está incluído noaplicativo Android de amostra.

3. Adicione o Número do Projeto de seu projeto de API do Google ao arquivo strings.xml. NoIDE, você encontrará o arquivo incluído na pasta values, que é uma subpasta do res. A string serásemelhante à seguinte:

<string name="project_number">012345678912</string>

4. Adicione os arquivos google-play-services.jar, android-support-v4.jar e android.jarao Java Build Path. Selecione google-play-services.jar e android-support-v4.jarparaexportação, mas não selecione android.jar para exportação.

5. Execute o aplicativo para ver o ID de registro como resultado no sistema de log do Android. Se vocêestiver usando o Eclipse com o plug-in ADT para Android, é possível ver o ID de registro na janela deexibição do LogCat. Por exemplo, o resultado contendo o ID de registro será semelhante ao seguinte:

06-05 11:50:43.587: V/Registration(14146): Registered, registrationId: = Examplei7fFachkJ1xjlqT64RaBkcGHochmf1VQAr9k-IBJtKjp7fedYPzEwT_Pq3Tu0lroqro1cwWJUvgkcPPYcaXCpPWmG3Bqn-wiqIEzp5zZ7y_jsM0PKPxKhddCzx6paEsyay9Zn3D4wNUJb8m6HXrBf9dqaEw, error = null, unregistered = null

O aplicativo instalado aparecerá em seu dispositivo Android:

Versão da API 2010-03-3169

Page 77: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 4: Enviar uma mensagem para

um endpoint móvel usando GCM

Agora, você deve ter um ID de registro, uma chave de API do servidor e um aplicativo Android registradocom GCM. Agora, você pode enviar uma notificação para o aplicativo Android em seu dispositivo usandoo console ou a API do Amazon SNS. Para usar o console do Amazon SNS consulte Uso do push paradispositivos móveis do Amazon SNS (p. 78). Para usar a API do Amazon SNS, consulte Etapa 4: Enviaruma mensagem de notificação por push para um endpoint móvel usando GCM (p. 70).

Etapa 4: Enviar uma mensagem de notificação porpush para um endpoint móvel usando GCMEsta seção descreve como enviar uma mensagem de notificação por push para o endpoint móvel. Adicioneas informações exigidas que foram coletadas ao arquivo de amostra SNSMobilePush.java do AWS,incluído no arquivo snsmobilepush.zip.

Note

As etapas a seguir usam o IDE para Java Eclipse. As etapas presumem que você já tenha AWSSDK for Java instalado e que também tenha as credenciais de segurança AWS para sua contaAWS. Para mais informações, consulte Javalong;. Para obter mais informações sobre credenciais,consulte How do I Get Security Credentials? nas AWS General Reference.

Para adicionar a amostra ao Eclipse

1. No Eclipse, crie um novo projeto Java (Arquivo | Novo | Projeto Java).2. Importe a pasta SNSSamples para o diretório de nível superior do projeto Java recém-criado. No

Eclipse, clique com o botão direito do mouse no nome do projeto Java, clique em Importar, expandaGeral, clique em Sistema de arquivos, clique em Próximo, navegue até a pasta SNSSamples, cliqueem OK e clique em Concluir.

3. Na pasta SNSSamples/src/com/amazonaws/sns/samples/mobilepush, abra o arquivoAwsCredentials.properties e adicione suas credenciais de segurança AWS.

Para adicionar AWS SDK for Java ao Build Path

1. Clique com o botão direito do mouse na pasta do projeto Java, clique em Caminho de compilação eclique em Configurar caminho de compilação...

2. Clique na guia Bibliotecas e clique em Adicionar biblioteca....3. Clique em AWS SDK para Java, clique em Próximo e clique em Concluir.

Para adicionar as informações de pré-requisitos ao SNSMobilePush.java

1. Na pasta SNSSamples/src/com/amazonaws/sns/samples/mobilepush, abra o SNSMobilePush.javano Eclipse e elimine o comentário sample.demoAndroidAppNotification();. A aparência deveser semelhante à seguinte:

Versão da API 2010-03-3170

Page 78: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 4: Enviar uma mensagem para

um endpoint móvel usando GCM

SNSMobilePush sample = new SNSMobilePush(sns);// TODO: Uncomment the services you wish to use.sample.demoAndroidAppNotification();// sample.demoKindleAppNotification();// sample.demoAppleAppNotification();// sample.demoAppleSandboxAppNotification();// sample.demoBaiduAppNotification();// sample.demoWNSAppNotification();// sample.demoMPNSAppNotification();

2. Localize o método demoAndroidAppNotification e digite o ID de registro que você recebeudo GCM como valor da string de ID de registro. Por exemplo, a aparência deve ser semelhante àseguinte:

String registrationId = = "EXAMPLE-kLMchcX0v3xOxWVhG6TfdBp...KT2TGkvnKyTvLuSpzK_qsHgxVB_UpmcUa7Gl6g3EXAMPLE";

3. Insira a chave de API para seu aplicativo. Por exemplo, a aparência deve ser semelhante à seguinte:

String serverAPIKey = "EXAMPLExV2lcV2zEKTLNYs625zfk2jh4EXAMPLE";

4. Insira um nome para seu aplicativo. Os nomes de aplicativos devem ser compostos somente por letrasmaiúsculas e minúsculas, números, sublinhados, hifens e pontos em ASCII, e devem ter entre 1 e 256caracteres. Por exemplo, a aparência deve ser semelhante à seguinte:

String applicationName = "gcmpushapp";

5. Execute o aplicativo. Você deve ver um resultado semelhante ao seguinte na janela de resultados doIDE:

===========================================Getting Started with Amazon SNS===========================================

{PlatformApplicationArn: arn:aws:sns:us-west-2:111122223333:app/GCM/gcmpushapp}{EndpointArn: arn:aws:sns:us-west-2:111122223333:endpoint/GCM/gcmpushapp/5e3e9847-3183-3f18-a7e8-671c3a57d4b3}{"default":"This is the default message","GCM":"{\"delay_while_idle\":true,\"collapse_key\":\"Welcome\",\"data\":{\"message\":\"Visit Amazon!\",\"url\":\"http://www.amazon.com/\"},\"time_to_live\":125,\"dry_run\":false}"}Published. MessageId=1ca8d7d1-c261-5bfc-8689-9db269c4e46c

No seu dispositivo Android, você deve ver uma mensagem de notificação por push exibida noaplicativo Android, semelhante à seguinte:

Versão da API 2010-03-3171

Page 79: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorConceitos básicos do MPNS

Conceitos básicos do MPNSServiços de Notificação por Push da Microsoft para Windows Phone (MPNS) é um serviço que permiteque você envie mensagens de notificação por push para aplicativos Windows Phone 7+ e WindowsPhone 8.0. Esta seção descreve como atender aos pré-requisitos do MPNS e enviar uma mensagem denotificação por push usando Amazon SNS e MPNS. Você pode enviar mensagens de notificação por pushautenticadas e não autenticadas com MPNS. Para aumentar a segurança e evitar congestionar os limitesimpostos pelo MPNS, você deve enviar mensagens de notificação por push autenticadas.

Tópicos• Pré-requisitos do MPNS (p. 72)• Etapa 1: Configurar seu aplicativo Windows Phone para receber mensagens de notificação por

push (p. 72)• Etapa 2: Obter um URI de notificação por push do MPNS (p. 73)• Etapa 3: Criar uma conta de desenvolvedor do Windows (p. 73)• Etapa 4: Carregar certificado TLS (p. 73)• Etapa 5: Enviar uma mensagem de notificação por push para um aplicativo Windows Phone usando

Amazon SNS eMPNS (p. 73)

Pré-requisitos do MPNSPara enviar uma mensagem de notificação por push não autenticada para um aplicativo Windows Phoneusando Amazon SNS e MPNS, é necessário o seguinte:

• Aplicativo Windows Phone configurado para usar MPNS• URI de notificação por push do MPNS

Para enviar uma mensagem de notificação por push autenticada para um aplicativo Windows Phoneusando Amazon SNS e MPNS, é necessário o seguinte:

• URI de notificação por push em HTTPS do MPNS• Registro como um desenvolvedor de aplicativos do Windows• Certificado Transport Layer Security (TLS – Segurança de camada de transporte)

Se você já tem esses pré-requisitos, você pode enviar uma mensagem de notificação por push para umaplicativo Windows Phone usando o console ou a API do Amazon SNS. Para obter mais informaçõessobre como usar o console do Amazon SNS, consulte Uso do push para dispositivos móveis do AmazonSNS (p. 78). Para obter mais informações sobre o uso da API do Amazon SNS, consulte Etapa 5:Enviar uma mensagem de notificação por push para um aplicativo Windows Phone usando Amazon SNSeMPNS (p. 73).

Etapa 1: Configurar seu aplicativo Windows Phonepara receber mensagens de notificação por pushPara enviar uma mensagem de notificação por push para seu aplicativo do Windows Phone, você devehabilitar o aplicativo para o serviço MPNS. Para obter mais informações, consulte Setting up your app toreceive push notifications for Windows Phone 8.

Versão da API 2010-03-3172

Page 80: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 2: Obter um URI de notificação por push do MPNS

Etapa 2: Obter um URI de notificação por push doMPNSPara criar um endpoint móvel com Amazon SNS você precisa de um URI de notificação por push doMPNS . Você pode obter um URI de notificação por push em HTTP ou HTTPS do MPNS. Para aumentara segurança e evitar congestionar os limites impostos pelo MPNS, você deve obter um URI de notificaçãopor push em HTTPS para enviar mensagens autenticadas. Para obter mais informações sobre como obterum URI de notificação por push em HTTPS, consulte Setting up an authenticated web service to send pushnotifications for Windows Phone 8.

Etapa 3: Criar uma conta de desenvolvedor doWindowsPara enviar mensagens autenticadas usando MPNS você deve criar uma conta de desenvolvedor doWindows. Para obter mais informações sobre como abrir uma conta de desenvolvedor do Windows,consulte Abrindo uma conta de desenvolvedor.

Etapa 4: Carregar certificado TLSPara enviar mensagens autenticadas usando MPNS, você deve fazer o upload de um certificado TLSobtido de uma das autoridades de certificação confiáveis (CA) para Windows Phone para sua conta dedesenvolvedor do Windows. Você também deve enviar a cadeia de certificado TLS completa e a chaveprivada associada para Amazon SNS. Isso é para ajudar a estabelecer uma conexão segura com oMPNS com Amazon SNS em seu nome. Amazon SNS requer o certificado TLS e a chave privada noformato .pem. Você pode usar diferentes utilitários, como openssl, para converter e exportar certificados.Para obter mais informações, consulte Setting up an authenticated web service to send push notificationsfor Windows Phone 8 e SSL root certificates for Windows Phone OS 7.1. Para obter mais informaçõessobre openssl, consulte http://www.openssl.org/.

Etapa 5: Enviar uma mensagem de notificação porpush para um aplicativo Windows Phone usandoAmazon SNS eMPNSEsta seção descreve como usar as informações de pré-requisito com a API do Amazon SNS paraenviar uma mensagem de notificação por push para seu aplicativo Windows Phone usando AmazonSNS e MPNS. Adicione as informações exigidas que foram coletadas ao arquivo de amostraSNSMobilePush.java do AWS, incluído no arquivo snsmobilepush.zip.

Você também pode usar o console do Amazon SNS. No entanto, para enviar notificações pop-up, vocêdeve usar a API do Amazon SNS. Para obter mais informações sobre como usar o console do AmazonSNS, consulte Uso do push para dispositivos móveis do Amazon SNS (p. 78).

Note

As etapas a seguir usam o IDE para Java Eclipse. As etapas presumem que você já tenha AWSSDK for Java instalado e que também tenha as credenciais de segurança AWS para sua contaAWS. Para mais informações, consulte Javalong;. Para obter mais informações sobre credenciais,consulte How do I Get Security Credentials? nas AWS General Reference.

Para adicionar a amostra ao Eclipse

1. No Eclipse, crie um novo projeto Java (Arquivo | Novo | Projeto Java).

Versão da API 2010-03-3173

Page 81: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 5: Enviar uma mensagem de notificação

por push para um aplicativo WindowsPhone usando Amazon SNS eMPNS

2. Importe a pasta SNSSamples para o diretório de nível superior do projeto Java recém-criado. NoEclipse, clique com o botão direito do mouse no nome do projeto Java, clique em Importar, expandaGeral, clique em Sistema de arquivos, clique em Próximo, navegue até a pasta SNSSamples, cliqueem OK e clique em Concluir.

3. Na pasta SNSSamples\src\com\amazonaws\sns\samples\mobilepush, abra o arquivoAwsCredentials.properties e adicione suas credenciais de segurança da AWS.

Para adicionar AWS SDK for Java ao Build Path

1. Clique com o botão direito do mouse na pasta do projeto Java, clique em Caminho de compilação eclique em Configurar caminho de compilação...

2. Clique na guia Bibliotecas e clique em Adicionar biblioteca....3. Clique em AWS SDK para Java, clique em Próximo e clique em Concluir.

Para adicionar as informações de pré-requisitos ao SNSMobilePush.java

1. Na pasta SNSSamples\src\com\amazonaws\sns\samples\mobilepush, abra o SNSMobilePush.javano Eclipse e elimine o comentário sample.demoMPNSAppNotification();. A aparência deve sersemelhante à seguinte:

SNSMobilePush sample = new SNSMobilePush(sns);// TODO: Uncomment the services you wish to use.//sample.demoAndroidAppNotification();//sample.demoKindleAppNotification();//sample.demoAppleAppNotification();//sample.demoAppleSandboxAppNotification();//sample.demoBaiduAppNotification();//sample.demoWNSAppNotification();sample.demoMPNSAppNotification();

2. Localize o método demoMPNSAppNotification e digite o URI de notificação que você recebeu doMPNS como valor da string notificationChannelURI.

3. Insira um nome para seu aplicativo. Os nomes de aplicativos devem ser compostos somente por letrasmaiúsculas e minúsculas, números, sublinhados, hifens e pontos em ASCII, e devem ter entre 1 e 256caracteres. Por exemplo, a aparência deve ser semelhante à seguinte:

String applicationName = "mpnspushapp";

4. Insira o certificado TLS do MPNS no formato de arquivo .pem. Você deve incluir a cadeia decertificação completa, começando com o certificado raiz da CA na parte superior e terminando como certificado emitido na parte inferior. No início de cada nova linha em seu certificado, você deveadicionar \n. Por exemplo, a aparência deve ser semelhante à seguinte:

String certificateChain = "-----BEGIN CERTIFICATE-----\nMIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6\nb24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd\nBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN\nMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD\nVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z\nb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt\nYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ\n21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T\nrDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE\nIbb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4\nnUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb

Versão da API 2010-03-3174

Page 82: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorConceitos básicos do WNS

\nFFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb\nNYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=\n-----END CERTIFICATE-----";

5. Insira a chave privada para o certificado TLS do MPNS no formato de arquivo .pem. No início de cadanova linha em seu certificado, você deve adicionar \n. Por exemplo, a aparência deve ser semelhanteà seguinte:

String privateKey = "-----BEGIN RSA PR1VATE KEY-----\nMJICiTCHAfICCQD9m7oRw0uXOjANBgkqhkiG7w0BAQUFADCBiDELMAkGA1UEBhMC\nWVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGx2MQ8wDQYDVQQKEwZBbWF6\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6\n4MXNchZOFFreg4Rr3Xzhb9RhvlIRgsr3wU4/FYai3z96EXAMPLE=\n-----END RSA PR1VATE KEY-----";

6. Execute o aplicativo. Você deve ver um resultado semelhante ao seguinte na janela de resultados doIDE:

===========================================Getting Started with Amazon SNS===========================================

{PlatformApplicationArn: arn:aws:sns:us-west-2:111122223333:app/MPNS/TestApp}{EndpointArn: arn:aws:sns:us-west-2:111122223333:endpoint/MPNS/TestApp/557597f8-be4a-3035-8c6d-bb7fa8b20fef}{Message Body: {"MPNS":"<?xml version=\"1.0\" encoding=\"utf-8\"?><wp:Notification xmlns:wp=\"WPNotification\"><wp:Tile><wp:Count>23</wp:Count><wp:Title>This is a tile notification</wp:Title></wp:Tile></wp:Notification>"}}{Message Attributes: ("AWS.SNS.MOBILE.MPNS.Type": "token"),("AWS.SNS.MOBILE.MPNS.NotificationClass": "realtime")}Published! {MessageId=ce9855bf-395f-5a1a-a4b9-19ace305780d}

Em seu dispositivo Windows Phone, você deve ver uma mensagem de notificação por push exibida noaplicativo.

Conceitos básicos do WNSServiços de Notificação por Push do Windows (WNS) é um serviço que permite que você enviemensagens de notificação por push e atualizações para aplicativos Windows Phone 8 (e posteriores) eWindows Phone 8.1 (e posteriores). Esta seção descreve como atender aos pré-requisitos do WNS eenviar uma mensagem de notificação por push usando Amazon SNS e WNS.

Tópicos• Pré-requisitos do WNS (p. 75)• Etapa 1: Configurar seu aplicativo para receber mensagens de notificação por push (p. 76)• Etapa 2: Obter um URI de notificação por push do WNS (p. 76)• Etapa 3: Obter um identificador de segurança do pacote do WNS (p. 76)• Etapa 4: Obter uma chave secreta do WNS (p. 76)• Etapa 5: Enviar uma mensagem de notificação por push para um aplicativo usando Amazon SNS e

WNS (p. 76)

Pré-requisitos do WNSPara enviar mensagens de notificação por push para dispositivos Windows usando Amazon SNS e WNS,você precisa do seguinte:

Versão da API 2010-03-3175

Page 83: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 1: Configurar seu aplicativo para

receber mensagens de notificação por push

• Aplicativo Windows 8 (ou posterior) ou Windows Phone 8.1 configurado para usar WNS• URI de notificação por push do WNS• Identificador de segurança do pacote• Chave secreta

Se você já tiver esses pré-requisitos, poderá enviar uma mensagem de notificação por push para umaplicativo usando o console ou a API do Amazon SNS. Para obter mais informações sobre como usar oconsole do Amazon SNS, consulte Uso do push para dispositivos móveis do Amazon SNS (p. 78). Paraobter mais informações sobre o uso da API do Amazon SNS, consulte Etapa 5: Enviar uma mensagem denotificação por push para um aplicativo usando Amazon SNS e WNS (p. 76).

Etapa 1: Configurar seu aplicativo para recebermensagens de notificação por pushPara enviar uma mensagem de notificação por push para seu aplicativo, você deve habilitá-lo para oserviço WNS. Para obter mais informações, consulte Serviços de notificação por push do Windows.

Etapa 2: Obter um URI de notificação por push doWNSPara criar um endpoint móvel com Amazon SNS você precisa de um URI de notificação por push do WNS.Para obter mais informações, consulte Serviços de notificação por push do Windows.

Etapa 3: Obter um identificador de segurança dopacote do WNSPara criar um endpoint móvel com Amazon SNS, você precisa de um identificador de segurança do pacotedo WNS. Para obter mais informações, consulte Serviços de notificação por push do Windows.

Etapa 4: Obter uma chave secreta do WNSPara criar um endpoint móvel com o Amazon SNS, você precisa de uma chave secreta do WNS. Paraobter mais informações, consulte Serviços de notificação por push do Windows.

Etapa 5: Enviar uma mensagem de notificação porpush para um aplicativo usando Amazon SNS e WNSEsta seção descreve como usar as informações de pré-requisitos para enviar uma mensagem denotificação por push para um aplicativo usando Amazon SNS e WNS. Adicione as informações exigidasque foram coletadas ao arquivo de amostra SNSMobilePush.java do AWS, incluído no arquivosnsmobilepush.zip.

Note

As etapas a seguir usam o IDE para Java Eclipse. As etapas presumem que você já tenha AWSSDK for Java instalado e que também tenha as credenciais de segurança AWS para sua contaAWS. Para mais informações, consulte Javalong;. Para obter mais informações sobre credenciais,consulte How do I Get Security Credentials? nas AWS General Reference.

Para adicionar a amostra ao Eclipse

1. No Eclipse, crie um novo projeto Java (Arquivo | Novo | Projeto Java).

Versão da API 2010-03-3176

Page 84: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 5: Enviar uma mensagem de notificação por

push para um aplicativo usando Amazon SNS e WNS

2. Importe a pasta SNSSamples para o diretório de nível superior do projeto Java recém-criado. NoEclipse, clique com o botão direito do mouse no nome do projeto Java, clique em Importar, expandaGeral, clique em Sistema de arquivos, clique em Próximo, navegue até a pasta SNSSamples, cliqueem OK e clique em Concluir.

3. Na pasta SNSSamples\src\com\amazonaws\sns\samples\mobilepush, abra o arquivoAwsCredentials.properties e adicione suas credenciais de segurança da AWS.

Para adicionar AWS SDK for Java ao Build Path

1. Clique com o botão direito do mouse na pasta do projeto Java, clique em Caminho de compilação eclique em Configurar caminho de compilação...

2. Clique na guia Bibliotecas e clique em Adicionar biblioteca....3. Clique em AWS SDK para Java, clique em Próximo e clique em Concluir.

Para adicionar as informações de pré-requisitos ao SNSMobilePush.java

1. Na pasta SNSSamples\src\com\amazonaws\sns\samples\mobilepush, abra o SNSMobilePush.javano Eclipse e elimine o comentário sample.demoWNSAppNotification();. A aparência deve sersemelhante à seguinte:

SNSMobilePush sample = new SNSMobilePush(sns);// TODO: Uncomment the services you wish to use.//sample.demoAndroidAppNotification();//sample.demoKindleAppNotification();//sample.demoAppleAppNotification();//sample.demoAppleSandboxAppNotification();//sample.demoBaiduAppNotification();sample.demoWNSAppNotification();//sample.demoMPNSAppNotification();

2. Localize o método demoWNSAppNotification e insira os valores de string para o URI de notificaçãopor push, identificador de segurança do pacote e a chave secreta.

3. Insira um nome para seu aplicativo. Os nomes de aplicativos devem ser compostos somente por letrasmaiúsculas e minúsculas, números, sublinhados, hifens e pontos em ASCII, e devem ter entre 1 e 256caracteres. Por exemplo, a aparência deve ser semelhante à seguinte:

String applicationName = "wnspushapp";

4. Execute o aplicativo. Você deve ver um resultado semelhante ao seguinte na janela de resultados doIDE:

===========================================Getting Started with Amazon SNS===========================================

{PlatformApplicationArn: arn:aws:sns:us-west-2:111122223333:app/WNS/TestApp}{EndpointArn: arn:aws:sns:us-west-2:111122223333:endpoint/WNS/TestApp/17cc2f2a-dfa8-3450-90c6-e1f88d820f3d}{Message Body: {"WNS":"<badge version=\"1\" value=\"23\"/>"}}{Message Attributes: ("AWS.SNS.MOBILE.WNS.Type": "wns/badge"),("AWS.SNS.MOBILE.WNS.CachePolicy": "cache")}Published! {MessageId=d4899281-927e-5f68-9fd0-de9248be6d47}

Versão da API 2010-03-3177

Page 85: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorUso do push para dispositivos móveis do Amazon SNS

Em seu dispositivo Windows, você deve ver uma mensagem de notificação por push exibida noaplicativo.

Uso do push para dispositivos móveis do AmazonSNS

Esta seção descreve como usar o Console de gerenciamento da AWS com as informações descritasem Pré-requisitos (p. 38) para registrar seu aplicativo móvel na AWS, adicionar tokens de dispositivo(também chamados de IDs de registro), enviar uma mensagem direta para um dispositivo móvel e enviaruma mensagem para dispositivos móveis inscritos em um tópico do Amazon SNS.

Tópicos• Registre seu aplicativo móvel na AWS (p. 78)• Adicione tokens de dispositivo ou IDs de registro (p. 80)• Criar um endpoint de plataforma e gerenciar tokens de dispositivo (p. 83)• Enviar uma mensagem direta para um dispositivo móvel (p. 87)• Enviar mensagens para dispositivos móveis inscritos em um tópico (p. 88)• Enviar cargas personalizadas específicas à plataforma em mensagens para dispositivos

móveis (p. 88)

Registre seu aplicativo móvel na AWSPara que Amazon SNS possa enviar mensagens de notificação para endpoints móveis, seja diretamenteou por meio de inscrições em um tópico, é necessário, primeiro, registrar o aplicativo na AWS. Pararegistrar seu aplicativo móvel na AWS, informe um nome para representar o aplicativo, selecione aplataforma que receberá suporte e informe suas credenciais para a plataforma de serviço de notificação.Depois que o aplicativo for registrado na AWS, a próxima etapa será criar um endpoint para o aplicativoe dispositivo móvel. O endpoint é, então, usado pelo Amazon SNS para enviar mensagens de notificaçãopara o aplicativo e o dispositivo.

Para registrar seu aplicativo móvel com AWS

1. Acesse https://console.aws.amazon.com/sns/v2/home e clique em Criar aplicativo de plataforma.2. Na caixa Nome do aplicativo, insira um nome para representar seu aplicativo.

Os nomes de aplicativos devem ser compostos somente por letras maiúsculas e minúsculas, números,sublinhados, hifens e pontos em ASCII, e devem ter entre 1 e 256 caracteres.

3. Na caixa Plataforma de notificações por push, selecione a plataforma na qual o aplicativo estáregistrado e insira as credenciais apropriadas.

Note

Se você estiver usando uma das plataformas APNS, poderá selecionar Escolher arquivo parafazer upload do arquivo .p12 (exportado do Keychain Access) no Amazon SNS.

Para obter instruções detalhadas sobre como adquirir as seguintes informações, consulte Conceitosbásicos do Amazon Device Messaging (p. 40), Conceitos básicos do Apple Push NotificationService (p. 45), Conceitos básicos do Baidu Cloud Push (p. 51), Conceitos básicos do GoogleCloud Messaging para Android (p. 67), Conceitos básicos do MPNS (p. 72) ou Conceitosbásicos do WNS (p. 75).

Versão da API 2010-03-3178

Page 86: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorRegistre seu aplicativo móvel na AWS

Plataforma Credenciais

ADM ID do cliente – acesse Portal de distribuição deaplicativos da Amazon, clique em Aplicativos eserviços, clique no nome do seu aplicativo doKindle Fire e clique em Perfil de segurança.

  Segredo do cliente – acesse Portal dedistribuição de aplicativos da Amazon, clique emAplicativos e serviços, clique no nome do seuaplicativo do Kindle Fire e clique em Perfil desegurança.

APNS Certificado – selecione o certificado criptografadoda senha e a chave privada, conforme exportadodo Keychain Access no computador Mac noformato de arquivo .p12.

  Senha do certificado – insira a senha.

APNS_SANDBOX Certificado – igual ao anterior para APNS.

  Senha do certificado – igual ao anterior paraAPNS.

APNS_VOIP Certificado – igual ao anterior para APNS.

  Senha do certificado – igual ao anterior paraAPNS.

APNS_VOIP_SANDBOX Certificado – igual ao anterior para APNS.

  Senha do certificado – igual ao anterior paraAPNS.

MACOS Certificado – igual ao anterior para APNS.

  Senha do certificado – igual ao anterior paraAPNS.

MACOS_SANDBOX Certificado – igual ao anterior para APNS.

  Senha do certificado – igual ao anterior paraAPNS.

Baidu Chave de API – insira a chave de API que vocêrecebeu após a criação de um projeto de pushde nuvem do Baidu, conforme descrito emEtapa 3: Criar um projeto de push em nuvem doBaidu (p. 56).

  Segredo do cliente – insira a chave secreta quevocê recebeu após a criação de um projeto depush de nuvem do Baidu, conforme descrito emEtapa 3: Criar um projeto de push em nuvem doBaidu (p. 56).

Versão da API 2010-03-3179

Page 87: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAdicione tokens de dispositivo ou IDs de registro

Plataforma Credenciais

GCM Chaves de API – acesse o site do console deAPIs do Google, clique em Acesso à API e anotea chave da API do servidor com o rótulo Chavepara aplicativos do servidor (com bloqueio deIP). Se você ainda não tiver criado uma chave deAPI do servidor, clique em Criar nova chave doservidor....

MPNS Certificado – insira o certificado TLS para suaconta de desenvolvedor do Windows, conformedescrito em Etapa 4: Carregar certificadoTLS (p. 73).

  Chave privada – insira a chave privada para ocertificado TLS, conforme descrito em Etapa 4:Carregar certificado TLS (p. 73).

WNS Segredo do cliente – insira o segredo do cliente,conforme descrito em Como autenticar com osServiços de Notificação por Push do Windows(WNS).

  Package Security Identifier (SID – Identificadorde segurança do pacote) – insira o SID,conforme descrito em Como autenticar com osServiços de Notificação por Push do Windows(WNS).

4. Após inserir essas informações, clique em Adicionar novo aplicativo.

Isso registra o aplicativo com o Amazon SNS, o que cria um objeto de aplicativo de plataforma para aplataforma selecionada e retorna um PlatformApplicationArn correspondente.

Adicione tokens de dispositivo ou IDs de registroQuando você registrar um aplicativo e dispositivo móvel com um serviço de notificação pela primeiravez, como Apple Push Notification Service (APNS) e Google Cloud Messaging para Android (GCM),os tokens de dispositivo ou IDs de registro serão retornados pelo serviço de notificação. Quando vocêadiciona os tokens do dispositivo ou IDs de registro ao Amazon SNS, eles são usados com a APIPlatformApplicationArn para criar um endpoint para o aplicativo e o dispositivo. Quando AmazonSNS cria o endpoint, um EndpointArn é retornado. O EndpointArn é como o Amazon SNS sabe paraqual aplicativo e dispositivo móvel enviar a mensagem de notificação.

Você pode adicionar tokens de dispositivo e IDs de registro ao Amazon SNS usando os seguintesmétodos:

• Adicionar manualmente um único token a AWS usando o Console de gerenciamento da AWS

• Migrar tokens existentes de um arquivo CSV para AWS usando o Console de gerenciamento da AWS

• Fazer upload de vários tokens usando a API CreatePlatformEndpoint

• Registrar tokens de dispositivos que instalarão seus aplicativos no futuro

Versão da API 2010-03-3180

Page 88: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAdicione tokens de dispositivo ou IDs de registro

Para adicionar manualmente um token de dispositivo ou ID de registro

1. Acesse https://console.aws.amazon.com/sns/v2/home, clique em Apps, clique em seu aplicativo eclique em Adicionar endpoints.

2. Na caixa Token do endpoint, digite o ID do token ou o ID de registro, dependendo do serviço denotificação usado. Por exemplo, para ADM e GCM, informe o ID de registro.

3. (Opcional) Na caixa Dados do usuário, digite informações aleatórias a serem associadas ao endpoint.Amazon SNS não utiliza esses dados. Os dados devem ser no formato UTF-8 e ter menos de 2 KB.

4. Finalmente, clique em Adicionar endpoints.

Agora, com o endpoint criado, você pode enviar mensagens diretamente para um dispositivo móvel ouenviar mensagens para dispositivos móveis que estejam inscritos em um tópico.

Para migrar tokens existentes a partir de um arquivo CSV para AWS

É possível migrar tokens existentes contidos em um arquivo CSV. O arquivo CSV não pode ter mais de2 MB. Ao migrar vários tokens, é recomendável usar a API CreatePlatformEndpoint. Cada um dostokens no arquivo CSV deve ser seguido por uma nova linha. Por exemplo, a aparência de seu arquivoCSV deve ser semelhante à seguinte:

amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz01,"User data with spaces requires quotes"amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz04,"Data,with,commas,requires,quotes"amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz02,"Quoted data requires ""escaped"" quotes"amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz03,"{""key"": ""json is allowed"", ""value"":""endpoint"", ""number"": 1}"amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz05,SimpleDataNoQuotesamzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz06,"The following line has no user data"amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz07APBTKzPGlCyT6E6oOfpdwLpcRNxQp5vCPFiFeru9oZylc22HvZSwQTDgmmw9WdNlXMerUPxmpX0w1,"Different token style"

1. Acesse https://console.aws.amazon.com/sns/v2/home, clique em Apps, clique em seu aplicativo eclique em Adicionar endpoints.

2. Clique em Migrar tokens existentes para a AWS, clique em Escolher arquivo, selecione o arquivo CSVe clique em Adicionar endpoints.

Para fazer o upload de vários tokens usando a API CreatePlatformEndpoint

As etapas a seguir mostram como usar o aplicativo Java de amostra (bulkuploadpacote ) fornecido pelaAWS para carregar vários tokens (tokens de dispositivo ou IDs de registro) no Amazon SNS. Você podeusar esse aplicativo de amostra para ajudá-lo a começar a fazer upload de tokens existentes.

Note

As etapas a seguir usam o IDE para Java Eclipse. As etapas presumem que você já tenha AWSSDK for Java instalado e que também tenha as credenciais de segurança AWS para sua contaAWS. Para mais informações, consulte Javalong;. Para obter mais informações sobre credenciais,consulte How do I Get Security Credentials? nas AWS General Reference.

1. Faça o download e descompacte o arquivo snsmobilepush.zip.

Versão da API 2010-03-3181

Page 89: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAdicione tokens de dispositivo ou IDs de registro

2. Crie um novo projeto Java no Eclipse.3. Importe a pasta SNSSamples para o diretório de nível superior do projeto Java recém-criado. No

Eclipse, clique com o botão direito do mouse no nome do projeto Java, clique em Importar, expandaGeral, clique em Sistema de arquivos, clique em Próximo, navegue até a pasta SNSSamples, cliqueem OK e clique em Concluir.

4. Faça o download de uma cópia da biblioteca OpenCSV e adicione-a ao Build Path do pacotebulkupload.

5. Abra o arquivo BulkUpload.properties contido no pacote bulkupload.6. Adicione o seguinte ao BulkUpload.properties:

• O ApplicationArn para o qual você deseja adicionar endpoints.• O caminho absoluto para o local do arquivo CSV que contém os tokens.• Os nomes dos arquivos CSV (como goodTokens.csv e badTokens.csv) que deverão ser

criados para registrar os tokens que o Amazon SNS analisa corretamente e aqueles que falham.• (Opcional) Os caracteres para especificar o delimitador e a cota no arquivo CSV que contém os

tokens.• (Opcional) O número de threads para usar a fim de criar simultaneamente endpoints. O padrão é 1

thread.

O BulkUpload.properties completo deve ser semelhante ao seguinte:

applicationarn:arn:aws:sns:us-west-2:111122223333:app/GCM/gcmpushappcsvfilename:C:\\mytokendirectory\\mytokens.csvgoodfilename:C:\\mylogfiles\\goodtokens.csvbadfilename:C:\\mylogfiles\\badtokens.csvdelimiterchar:' quotechar:"numofthreads:5

7. Execute o aplicativo BatchCreatePlatformEndpointSample.jav para fazer o upload dos tokens paraAmazon SNS.

Nesse exemplo, os endpoints que foram criados para os tokens carregados com êxito no AmazonSNS seriam registrados em goodTokens.csv, enquanto os tokens com defeito seriam registradosem badTokens.csv. Além disso, você deve ver logs STD OUT gravados no console do Eclipse, comconteúdo semelhante ao seguinte:

<1>[SUCCESS] The endpoint was created with Arn arn:aws:sns:us-west-2:111122223333:app/GCM/gcmpushapp/165j2214-051z-3176-b586-138o3d420071<2>[ERROR: MALFORMED CSV FILE] Null token found in /mytokendirectory/mytokens.csv

Para registrar tokens de dispositivos que instalarão seus aplicativos no futuro

Você pode usar uma das duas opções a seguir:

• Uso do serviço Amazon Cognito: seu aplicativo móvel precisará de credenciais para criar endpointsassociados ao aplicativo de plataforma Amazon SNS. Recomendamos o uso de credenciaistemporárias que expirem após um período de tempo. Para a maioria dos casos, recomendamosque você use Amazon Cognito para criar credenciais de segurança temporárias. Para obter maisinformações, consulte o Guia do desenvolvedor do Amazon Cognito. Se você quiser ser notificadoquando um aplicativo for registrado com o Amazon SNS, poderá se inscrever para receber um

Versão da API 2010-03-3182

Page 90: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorCriar um endpoint de plataformae gerenciar tokens de dispositivo

evento do Amazon SNS que fornecerá o novo ARN do endpoint. Você também pode usar a APIListEndpointByPlatformApplication para obter a lista completa de endpoints registrado com oAmazon SNS.

• Uso de um servidor de proxy: se a infraestrutura do aplicativo já estiver configurada para os aplicativosmóveis notificarem e registrarem-se a cada instalação, você poderá continuar a usar essa configuração.Seu servidor age como um proxy e passa o token do dispositivo para notificações por push paradispositivos móveis do Amazon SNS, juntamente com os dados do usuário que você gostaria dearmazenar. Para esse fim, o servidor de proxy se conectará ao Amazon SNS usando suas credenciaisda AWS e usará a chamada de API CreatePlatformEndpoint para carregar as informações dotoken. O Amazon Resource Name (ARN – Nome de recurso Amazon) do endpoint recém-criado seráretornado e poderá ser armazenado por seu servidor para fazer chamadas subsequentes para publicarno Amazon SNS.

Criar um endpoint de plataforma e gerenciar tokens dedispositivoQuando um aplicativo e um dispositivo móvel se registrarem em um serviço de notificação por push,esse serviço retornará um token de dispositivo. Amazon SNS usa o token de dispositivo para criar umendpoint móvel, para o qual ele pode enviar mensagens diretas de notificação por push. Para obter maisinformações, consulte Pré-requisitos (p. 38) e Etapas de alto nível de push para dispositivos móveis doAmazon SNS (p. 39).

Esta seção descreve a abordagem recomendada para a criação de um endpoint de plataforma e ogerenciamento de tokens de dispositivo.

Tópicos• Criar um endpoint de plataforma (p. 83)• Pseudocódigo (p. 84)• Exemplo de Java (p. 84)• Solução de problemas (p. 87)

Criar um endpoint de plataformaPara enviar notificações para um aplicativo com Amazon SNS, o token do dispositivo do aplicativo deveser registrado no Amazon SNS chamando a ação de criação de endpoint de plataforma. Essa ação leva oNome de recurso da Amazon (ARN) do aplicativo de plataforma e o token do dispositivo como parâmetrose retorna o ARN do endpoint de plataforma criado.

A ação de criação de endpoint de plataforma faz o seguinte:

• Se o endpoint de plataforma já existir, não o crie novamente. Retorne o ARN do endpoint de plataformaexistente para o chamador.

• Se já existir um endpoint de plataforma com o mesmo token de dispositivo, mas com configuraçõesdiferentes, não crie o endpoint novamente. Gere uma exceção para o chamador.

• Se o endpoint de plataforma não existir, crie-o. Retorne o ARN do endpoint de plataforma recém-criadopara o chamador.

Você não deve chamar a ação de criação do endpoint de plataforma imediatamente sempre que umaplicativo é iniciado, pois essa abordagem nem sempre fornece um endpoint que funciona. Isso podeacontecer, por exemplo, quando um aplicativo for desinstalado e reinstalado no mesmo dispositivo e oendpoint dele já existir mas estiver desabilitado. Para realizar um processo de registro bem-sucedido, vocêdeve fazer o seguinte:

Versão da API 2010-03-3183

Page 91: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorCriar um endpoint de plataformae gerenciar tokens de dispositivo

1. Verifique se um endpoint de plataforma existe para esta combinação de aplicativo-dispositivo.2. Verifique se o token do dispositivo no endpoint de plataforma é o token do dispositivo válido mais

recente.3. Verifique se o endpoint de plataforma está ativado e pronto para uso.

PseudocódigoO seguinte pseudocódigo descreve uma prática recomendada para a criação de um endpoint deplataforma atual, em funcionamento e habilitado em uma ampla variedade de condições de inicialização.Essa abordagem funciona se essa for a primeira vez que o aplicativo estiver sendo registrado ou não, seo endpoint de plataforma para este aplicativo já existir e se o endpoint de plataforma estiver ativado, tivero token de dispositivo correto e assim por diante. É seguro chamá-lo várias vezes consecutivas, já que elenão criará endpoints de plataforma duplicados ou alterará um endpoint de plataforma existente se ele jáestiver atualizado e ativado.

retrieve the latest device token from the mobile operating systemif (the platform endpoint ARN is not stored) # this is a first-time registration call create platform endpoint store the returned platform endpoint ARNendif

call get endpoint attributes on the platform endpoint ARN

if (while getting the attributes a not-found exception is thrown) # the platform endpoint was deleted call create platform endpoint with the latest device token store the returned platform endpoint ARNelse if (the device token in the endpoint does not match the latest one) or (get endpoint attributes shows the endpoint as disabled) call set endpoint attributes to set the latest device token and then enable the platform endpoint endifendif

Essa abordagem pode ser usada a qualquer momento que o aplicativo precisar se registrar ou efetuarum novo registro. Ela também pode ser usada ao notificar o Amazon SNS de que houve uma mudançano token do dispositivo. Nesse caso, você pode chamar a ação com o valor de token do dispositivo maisrecente. Alguns pontos a observar nessa abordagem são:

• Há dois casos em que ela pode chamar a ação de criação de endpoint de plataforma. Ela poderá serchamada no início, quando o aplicativo não souber seu próprio ARN de endpoint de plataforma, comoacontece durante um registro feito pela primeira vez. Ela também será chamada se a chamada inicialde ação de obtenção de atributos de endpoint falhar com uma exceção não encontrada. Isso tambémacontecerá se o aplicativo souber o ARN de endpoint, mas ele foi excluído.

• A ação de obtenção de atributos de endpoint é chamada para verificar o estado do endpoint deplataforma, mesmo se o endpoint de plataforma for recém-criado. Isso acontece quando o endpoint deplataforma já existe mas está desativado. Nesse caso, a ação de criação de endpoint de plataformaé bem-sucedida, mas não habilita o endpoint de plataforma. Portanto, você deve verificar o estado doendpoint da plataforma antes de retornar o sucesso.

Exemplo de JavaEsta é uma implementação do pseudocódigo anterior em Java:

class RegistrationExample {

Versão da API 2010-03-3184

Page 92: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorCriar um endpoint de plataformae gerenciar tokens de dispositivo

AmazonSNSClient client = new AmazonSNSClient(); //provide credentials here private void registerWithSNS() { String endpointArn = retrieveEndpointArn(); String token = "Retrieved from the mobile operating system"; boolean updateNeeded = false; boolean createNeeded = (null == endpointArn); if (createNeeded) { // No platform endpoint ARN is stored; need to call createEndpoint. endpointArn = createEndpoint(); createNeeded = false; } System.out.println("Retrieving platform endpoint data..."); // Look up the platform endpoint and make sure the data in it is current, even if // it was just created. try { GetEndpointAttributesRequest geaReq = new GetEndpointAttributesRequest() .withEndpointArn(endpointArn); GetEndpointAttributesResult geaRes = client.getEndpointAttributes(geaReq); updateNeeded = !geaRes.getAttributes().get("Token").equals(token) || !geaRes.getAttributes().get("Enabled").equalsIgnoreCase("true"); } catch (NotFoundException nfe) { // We had a stored ARN, but the platform endpoint associated with it // disappeared. Recreate it. createNeeded = true; } if (createNeeded) { createEndpoint(); } System.out.println("updateNeeded = " + updateNeeded

if (updateNeeded) { // The platform endpoint is out of sync with the current data; // update the token and enable it. System.out.println("Updating platform endpoint " + endpointArn); Map attribs = new HashMap(); attribs.put("Token", token); attribs.put("Enabled", "true"); SetEndpointAttributesRequest saeReq = new SetEndpointAttributesRequest() .withEndpointArn(endpointArn) .withAttributes(attribs); client.setEndpointAttributes(saeReq); } } /** * @return never null * */ private String createEndpoint() { String endpointArn = null; try { System.out.println("Creating platform endpoint with token " + token); CreatePlatformEndpointRequest cpeReq =

Versão da API 2010-03-3185

Page 93: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorCriar um endpoint de plataformae gerenciar tokens de dispositivo

new CreatePlatformEndpointRequest() .withPlatformApplicationArn(applicationArn) .withToken(token); CreatePlatformEndpointResult cpeRes = client .createPlatformEndpoint(cpeReq); endpointArn = cpeRes.getEndpointArn(); } catch (InvalidParameterException ipe) { String message = ipe.getErrorMessage(); System.out.println("Exception message: " + message); Pattern p = Pattern .compile(".*Endpoint (arn:aws:sns[^ ]+) already exists " + "with the same token.*"); Matcher m = p.matcher(message); if (m.matches()) { // The platform endpoint already exists for this token, but with // additional custom data that // createEndpoint doesn't want to overwrite. Just use the // existing platform endpoint. endpointArn = m.group(1); } else { // Rethrow the exception, the input is actually bad. throw ipe; } } storeEndpointArn(endpointArn); return endpointArn; } /** * @return the ARN the app was registered under previously, or null if no * platform endpoint ARN is stored. */ private String retrieveEndpointArn() { // Retrieve the platform endpoint ARN from permanent storage, // or return null if null is stored. return arnStorage; } /** * Stores the platform endpoint ARN in permanent storage for lookup next time. * */ private void storeEndpointArn(String endpointArn) { // Write the platform endpoint ARN to permanent storage. arnStorage = endpointArn; }}

Uma informação interessante sobre essa implementação é a forma de o InvalidParameterExceptionser executado no método createEndpoint. Amazon SNS rejeita solicitações de criação de endpointda plataforma quando um endpoint de plataforma existente tem o mesmo token de dispositivo e umcampo CustomUserData não nulo, porque a alternativa é substituir (e perder) o CustomUserData. Ométodo createEndpoint no código anterior captura o InvalidParameterException gerado peloAmazon SNS, verifica se ele foi gerado por esse motivo específico e, se esse for o caso, extrairá o ARNdo endpoint de plataforma existente da exceção. Essa ação é bem-sucedida, pois existe um endpoint deplataforma com o token de dispositivo correto.

Para obter mais informações, consulte Usar as APIs para push para dispositivos móveis do AmazonSNS (p. 97).

Versão da API 2010-03-3186

Page 94: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEnviar uma mensagem direta para um dispositivo móvel

Solução de problemasChamar repetidamente a criação de endpoint da plataforma com um token dedispositivo desatualizado

Especialmente para endpoints do GCM, você pode pensar que é melhor armazenar o primeiro token dedispositivo emitido pelo aplicativo e, em seguida, chamar a criação de endpoint de plataforma com essetoken de dispositivo sempre na inicialização do aplicativo. Isso pode parecer correto, pois o aplicativo nãoprecisará gerenciar o estado do token do dispositivo, e Amazon SNS atualizará automaticamente o tokendo dispositivo para seu valor mais recente. No entanto, essa solução tem uma série de problemas sérios:

• Amazon SNS conta com o feedback do GCM para atualizar tokens expirados do dispositivo em novostokens de dispositivo. GCM retém informações sobre tokens de dispositivo antigos por algum tempo,mas não indefinidamente. Quando GCM esquecer sobre a conexão entre o token do dispositivo antigoe o novo token, Amazon SNS não poderá mais atualizar o token do dispositivo armazenado no endpointde plataforma para seu valor correto; ele apenas desabilitará o endpoint de plataforma.

• O aplicativo de plataforma conterá vários endpoints de plataforma correspondentes ao mesmo token dedispositivo.

• Amazon SNS impõe um limite para o número de endpoints de plataforma que podem ser criados a partirdo mesmo token de dispositivo. Finalmente, a criação de novos endpoints falhará com uma exceção deparâmetro inválido e aparecerá a seguinte mensagem de erro: “This endpoint is already registered with adifferent token.”

Reativação de um endpoint de plataforma associado a um token de dispositivoinválido

Quando uma plataforma móvel (como APNS ou GCM) informar Amazon SNS de que o token do dispositivousado na solicitação de publicação é inválido, Amazon SNS desativará o endpoint de plataforma associadoa esse token do dispositivo. Amazon SNS rejeitará publicações subsequentes nesse token de dispositivo.Você pode achar melhor simplesmente reativar o endpoint de plataforma e manter a publicação, mas, namaioria dos casos, isso não funcionará: as mensagens que são publicadas não são entregues e o endpointde plataforma é desativado novamente logo em seguida.

Isso ocorre porque o token de dispositivo associado ao endpoint de plataforma é genuinamente inválido.As entregas destinadas a ele não terão sucesso porque ele não corresponde a nenhum aplicativoinstalado. A próxima vez em que for publicada, a plataforma móvel novamente informará Amazon SNS queo token do dispositivo é inválido, e Amazon SNS novamente desativará o endpoint de plataforma.

Para ativar novamente um endpoint de plataforma desabilitada, ele precisa ser associado a um tokende dispositivo válido (com uma chamada de ação de definição de atributos de endpoint) e depoishabilitado. A partir de então, as entregas para o endpoint dessa plataforma terão sucesso. A únicavez que a reabilitação de um endpoint de plataforma sem atualização do seu token de dispositivofuncionará será quando um token de dispositivo associado a esse endpoint for inválido, mas depoistornar-se válido novamente. Isso pode acontecer, por exemplo, quando um aplicativo for desinstalado einstalado novamente no mesmo dispositivo móvel e receber o mesmo token de dispositivo. A abordagemapresentada anteriormente faz isso, garantindo que a reativação de um endpoint de plataforma seja feitasomente após verificar se o token de dispositivo associado a ele é o mais atual disponível.

Enviar uma mensagem direta para um dispositivomóvelÉ possível enviar mensagens de notificação por push do Amazon SNS diretamente para um endpoint querepresenta um aplicativo e dispositivo móvel realizando as seguintes etapas.

Versão da API 2010-03-3187

Page 95: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEnviar mensagens para dispositivos

móveis inscritos em um tópico

Para enviar uma mensagem direta

1. Acesse https://console.aws.amazon.com/sns/v2/home.2. No painel Navegação à esquerda, clique em Apps e clique no aplicativo para o qual você deseja

enviar uma mensagem.3. Na tela Detalhes do aplicativo, selecione Ações de endpoints e clique em Publicar.4. Na caixa de diálogo Publicar, insira a mensagem que deve aparecer no aplicativo no dispositivo móvel

e clique em Publicar.

A mensagem de notificação será enviada do Amazon SNS para o serviço de notificação daplataforma, que então enviará a mensagem para o aplicativo.

Enviar mensagens para dispositivos móveis inscritosem um tópicoAmazon SNS também pode ser usado para enviar mensagens para endpoints móveis inscritos em umtópico. O conceito é o mesmo para inscrever em um tópico outros tipos de endpoint, como Amazon SQS,HTTP/S, e-mail e SMS, conforme descrito em O que é Amazon Simple Notification Service? (p. 1). Adiferença é que o Amazon SNS se comunica por meio dos serviços de notificação para que os endpointsmóveis inscritos recebam as notificações enviadas para o tópico.

Para enviar para endpoints inscritos em um tópico

1. Siga as etapas conforme descritas em Inscrever-se em um tópico (p. 6). Você só precisa selecionarAplicativo no menu suspenso Protocolo e inserir o Nome de recurso da Amazon (ARN) do endpointmóvel na caixa Endpoint.

2. Siga as etapas para publicar mensagens em um tópico, conforme descritas em Publicar em umtópico (p. 7), e todos os endpoints móveis inscritos no tópico receberão a mensagem.

Enviar cargas personalizadas específicas à plataformaem mensagens para dispositivos móveisVocê pode usar o console ou as APIs do Amazon SNS para enviar cargas personalizadas específicas àplataforma em mensagens para dispositivos móveis. As seções a seguir descrevem como usar o consoledo Amazon SNS para criar e enviar cargas personalizadas específicas à plataforma para cada um dosserviços de notificação compatíveis. Para obter mais informações sobre o uso das APIs do Amazon SNS,consulte Usar as APIs para push para dispositivos móveis do Amazon SNS (p. 97) e o arquivo deamostra da AWS SNSMobilePush.java, que está incluído no arquivo snsmobilepush.zip.

Dados da mensagem formatada JSONAo enviar cargas específicas à plataforma em mensagens usando o console do Amazon SNS, os dadosdevem ser strings de par de valor-chave e devem ser formatados como JSON com aspas em sequênciade escape. O exemplo a seguir, incluindo formatação e espaços para legibilidade, mostra uma amostra demensagem personalizada para a plataforma GCM com par de valor-chave dentro do corpo da mensageme formatado como JSON.

{ "GCM":"{ "data":{ "message":"Check out these awesome deals!",

Versão da API 2010-03-3188

Page 96: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEnviar cargas personalizadas específicas

à plataforma para dispositivos móveis

"url":"www.amazon.com" } }"}

Ao enviar mensagens usando o console, as aspas devem ser em sequência de escape (\"), conformemostrado no exemplo a seguir.

{ "GCM":"{ \"data\":{ \"message\":\"Check out these awesome deals!\", \"url\":\"www.amazon.com\" } }"}

Quando inserido no console do &SNS, o exemplo deve ser semelhante ao seguinte:

{"GCM":"{\"data\":{\"message\":\"Check out these awesome deals!\",\"url\":\"www.amazon.com\"}}"}

Pares de valor-chave específicos à plataformaAlém de enviar dados personalizados como pares de valor-chave, você também pode enviar paresde valor-chave específicos à plataforma dentro da carga JSON. Por exemplo, se você quisesse incluiros parâmetros do GCM time_to_live e collapse_key após a inclusão dos pares de valor-chaveno parâmetro JSON data, a carga JSON sem aspas em sequência de escape deverá ter a seguinteaparência:

{ "GCM":"{ "data":{ "message":"Check out these awesome deals!", "url":"www.amazon.com" }, "time_to_live": 3600, "collapse_key": "deals" }"}

Quando inserido no console do &SNS, o exemplo deve ser semelhante ao seguinte:

{ "GCM":"{\"data\":{\"message\":\"Check out these awesome deals!\",\"url\":\"www.amazon.com\"},\"time_to_live\": 3600,\"collapse_key\":\"deals\"}"}

Versão da API 2010-03-3189

Page 97: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAtributos de aplicativo para status de entrega de mensagens

Para obter uma lista dos pares de valor-chave em cada um dos serviços de notificação por pushcompatíveis com o Amazon SNS, consulte os links a seguir:

• APNS – Serviço de notificações por push da Apple• GCM – Referência do servidor de conexão HTTP• ADM – Envio de mensagem

Mensagens para um aplicativo em várias plataformasPara enviar uma mensagem para um aplicativo instalado em dispositivos para várias plataformas, comoGCM e APNS, você deve primeiro inscrever os endpoints móveis em um tópico do Amazon SNS e, emseguida, publicar a mensagem no tópico. O exemplo a seguir mostra uma mensagem a ser enviada paraendpoints móveis em APNS, GCM e ADM:

{ "default": "This is the default message which must be present when publishing a message to a topic. The default message will only be used if a message is not present for one of the notification platforms.", "APNS": "{\"aps\":{\"alert\": \"Check out these awesome deals!\",\"url\":\"www.amazon.com\"} }","GCM":"{\"data\":{\"message\":\"Check out these awesome deals!\",\"url\":\"www.amazon.com\"}}","ADM": "{ \"data\": { \"message\": \"Check out these awesome deals!\",\"url\":\"www.amazon.com\" }}" }

Uso dos atributos de aplicativo do Amazon SNSpara status de entrega de mensagens

Amazon Simple Notification Service (Amazon SNS) oferece suporte para registrar o status de entregade mensagens de notificação por push. Após configurar os atributos de aplicativo, as entradas de logserão enviadas para CloudWatch Logs para mensagens enviadas a partir do Amazon SNS para endpointsmóveis. O registro de status de entrega de mensagens proporciona uma melhor percepção operacional,por exemplo:

• Saber se uma mensagem de notificação por push foi entregue do Amazon SNS para o serviço denotificações por push.

• Identificar a resposta enviada do serviço de notificações por push para o Amazon SNS.• Determinar o tempo de permanência da mensagem (o tempo entre o carimbo de data e hora da

publicação e antes do envio para um serviço de notificações por push).

Para configurar os atributos do aplicativo para o status de entrega de mensagens, você pode usar Consolede gerenciamento da AWS, AWS Software Development Kits (SDKs) ou API de consulta.

Tópicos• Configuração de atributos de status de entrega de mensagens com Console de gerenciamento da

AWS (p. 91)• Exemplos de log do CloudWatch de status de entrega de mensagens do Amazon SNS (p. 91)• Configuração de atributos de status de entrega de mensagens com AWS SDKs (p. 92)• Códigos de resposta da plataforma (p. 92)

Versão da API 2010-03-3190

Page 98: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorConfiguração de atributos de status de entrega de

mensagens com Console de gerenciamento da AWS

Configuração de atributos de status de entrega demensagens com Console de gerenciamento da AWSVocê pode configurar os atributos de status de entrega de mensagens com o Console de gerenciamentoda AWS.

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No painel Navegação à esquerda, clique em Apps e clique no aplicativo que contém os endpoints paraos quais você deseja receber CloudWatch Logs.

3. Clique em Ações para aplicativos e clique em Status da entrega.4. Na caixa de diálogo Status da entrega, clique em Criar funções do IAM.

Você será redirecionado para o console IAM.5. Clique em Permitir para conceder ao Amazon SNS acesso de gravação para usar CloudWatch Logs

em seu nome.6. Volte para a caixa de diálogo Status de entrega e insira um número no campo Percentual de sucesso

de amostragem (0-100) para a porcentagem de mensagens bem-sucedidas enviadas para as quaisvocê deseja receber CloudWatch Logs.

Note

Depois de configurar os atributos do aplicativo para o status da entrega de mensagens, todasas entregas de mensagens com falha geram CloudWatch Logs.

7. Finalmente, clique em Salvar configuração. Agora, você será capaz de visualizar e analisar oCloudWatch Logs contendo o status de entrega de mensagens. Para obter mais informações sobre ouso do CloudWatch, consulte a Documentação do CloudWatch.

Exemplos de log do CloudWatch de status de entregade mensagens do Amazon SNSApós a configuração dos atributos de status de entrega de mensagens para um endpoint de aplicativo,CloudWatch Logs será gerado. Exemplos de logs, no formato JSON, são exibidos da seguinte forma:

ÊXITO

{ "status": "SUCCESS", "notification": { "timestamp": "2015-01-26 23:07:39.54", "messageId": "9655abe4-6ed6-5734-89f7-e6a6a42de02a" }, "delivery": { "statusCode": 200, "dwellTimeMs": 65, "token": "Examplei7fFachkJ1xjlqT64RaBkcGHochmf1VQAr9k-IBJtKjp7fedYPzEwT_Pq3Tu0lroqro1cwWJUvgkcPPYcaXCpPWmG3Bqn-wiqIEzp5zZ7y_jsM0PKPxKhddCzx6paEsyay9Zn3D4wNUJb8m6HXrBf9dqaEw", "attempts": 1, "providerResponse": "{\"multicast_id\":5138139752481671853,\"success\":1,\"failure\":0,\"canonical_ids\":0,\"results\":[{\"message_id\":\"0:1422313659698010%d6ba8edff9fd7ecd\"}]}", "destination": "arn:aws:sns:us-east-1:111122223333:endpoint/GCM/GCMPushApp/c23e42de-3699-3639-84dd-65f84474629d" }

Versão da API 2010-03-3191

Page 99: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorConfiguração de atributos de status de

entrega de mensagens com AWS SDKs

}

FAILURE

{ "status": "FAILURE", "notification": { "timestamp": "2015-01-26 23:29:35.678", "messageId": "c3ad79b0-8996-550a-8bfa-24f05989898f" }, "delivery": { "statusCode": 8, "dwellTimeMs": 1451, "token": "examp1e29z6j5c4df46f809505189c4c83fjcgf7f6257e98542d2jt3395kj73", "attempts": 1, "providerResponse": "NotificationErrorResponse(command=8, status=InvalidToken, id=1, cause=null)", "destination": "arn:aws:sns:us-east-1:111122223333:endpoint/APNS_SANDBOX/APNSPushApp/986cb8a1-4f6b-34b1-9a1b-d9e9cb553944" } }

Para obter uma lista de códigos de resposta do serviço de notificação por push, consulte Códigos deresposta da plataforma (p. 92).

Configuração de atributos de status de entrega demensagens com AWS SDKsAWS SDKs fornecem APIs em vários idiomas para usar atributos de status de entrega de mensagens comAmazon SNS.

O seguinte exemplo Java mostra como usar a API SetPlatformApplicationAttributes paraconfigurar atributos de aplicativo para status de entrega de mensagens para as mensagens denotificação por push. Você pode usar os seguintes atributos para o status de entrega de mensagens:SuccessFeedbackRoleArn, FailureFeedbackRoleArn e SuccessFeedbackSampleRate.Os atributos SuccessFeedbackRoleArn e FailureFeedbackRoleArn são usados paraoferecer acesso de gravação ao Amazon SNS para usar CloudWatch Logs em seu nome. O atributoSuccessFeedbackSampleRate é para especificar a porcentagem de taxa de amostra (0-100) demensagens bem-sucedidas. Após configurar o atributo FailureFeedbackRoleArn, todas as entregas demensagens com falha geram CloudWatch Logs.

SetPlatformApplicationAttributesRequest setPlatformApplicationAttributesRequest = new SetPlatformApplicationAttributesRequest();Map<String, String> attributes = new HashMap<>();attributes.put("SuccessFeedbackRoleArn", "arn:aws:iam::111122223333:role/SNS_CWlogs");attributes.put("FailureFeedbackRoleArn", "arn:aws:iam::111122223333:role/SNS_CWlogs");attributes.put("SuccessFeedbackSampleRate", "5");setPlatformApplicationAttributesRequest.withAttributes(attributes);setPlatformApplicationAttributesRequest.setPlatformApplicationArn("arn:aws:sns:us-west-2:111122223333:app/GCM/GCMPushApp");sns.setPlatformApplicationAttributes(setPlatformApplicationAttributesRequest);

Para obter mais informações sobre SDK para Java, consulte Getting Started with the AWS SDK for Java.

Códigos de resposta da plataformaA seguir, uma lista de links para os códigos de resposta do serviço de notificação por push:

Versão da API 2010-03-3192

Page 100: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorNotificações de eventos do aplicativo

Serviço de notificação por push Códigos de resposta

Amazon Device Messaging (ADM) Consulte Formato de resposta em Enviar umamensagem com o Amazon Device Messaging

Apple Push Notification Service (APNS) Consulte Resposta HTTP/2 do APNs emComunicação com APNs.

Google Cloud Messaging para Android (GCM) Consulte Downstream message error responsecodes no GCM Connection Server Reference

Serviços de Notificação por Push da Microsoft paraWindows Phone (MPNS)

Consulte Push Notification Service response codes

Serviços de Notificação por Push do Windows(WNS)

Consulte “Responde codes” em Push notificationservice request and response headers

Notificações de eventos do aplicativoAmazon SNS fornece suporte para acionar as notificações quando determinados eventos do aplicativoocorrem. Em seguida, você pode executar algumas ações programáticas nesse evento. O aplicativo deveincluir suporte para um serviço de notificação por push como Apple Push Notification Service (APNS),Google Cloud Messaging para Android (GCM) e Serviços de Notificação por Push do Windows (WNS).Você define as notificações de eventos do aplicativo usando o console do Amazon SNS, o AWS CLI ou osAWS SDKs.

Tópicos• Eventos do aplicativo disponíveis (p. 93)• Envio de notificações de eventos do aplicativo (p. 94)

Eventos do aplicativo disponíveisAs notificações de eventos do aplicativo rastreiam quando endpoints de plataforma individuais são criados,excluídos e atualizados, juntamente com falhas de entrega. O nome do atributo para cada evento doaplicativo é da seguinte maneira:

Nome do atributo Descrição

EventEndpointCreated Uma notificação é acionada quando um novo endpoint de plataforma éadicionado ao seu aplicativo.

EventEndpointDeleted Uma notificação é acionada quando qualquer um dos endpoints deplataforma associados ao seu aplicativo é excluído.

EventEndpointUpdated Uma notificação é acionada quando qualquer um dos atributos dosendpoints da plataforma associados ao seu aplicativo é alterado.

EventDeliveryFailure Uma notificação é acionada quando uma entrega para qualquer um dosendpoints da plataforma associados ao seu aplicativo encontra uma falhapermanente.

Note

Para rastrear falhas de entrega no aplicativo da plataforma,inscreva-se em eventos de status de entrega de mensagens do

Versão da API 2010-03-3193

Page 101: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEnvio de notificações de eventos do aplicativo

Nome do atributo Descriçãoaplicativo. Para obter mais informações, consulte Using AmazonSNS Application Attributes for Message Delivery Status.

Cada um dos atributos anteriores pode ser associado a um aplicativo. O aplicativo pode receber essasnotificações de eventos.

Envio de notificações de eventos do aplicativoPara enviar notificações de eventos do aplicativo, você especifica um tópico para receber notificações decada tipo de evento. Como Amazon SNS envia notificações, o tópico pode direcioná-las para endpointsque executarão ações programáticas.

Important

Aplicativos de grande volume criarão um grande número de notificações de eventos do aplicativo(por exemplo, dezenas de milhares), que sobrecarregam endpoints destinados ao uso humano,como endereços de e-mail, números de telefone e aplicativos móveis. Considere as seguintesdiretrizes ao enviar as notificações de eventos do aplicativo para um tópico:

• Cada tópico que recebe notificações deve conter apenas inscrições para endpointsprogramáticos, como, por exemplo, endpoints HTTP ou HTTPS, filas do Amazon SQS oufunções do AWS Lambda.

• Para reduzir a quantidade de processamento que é acionada pelas notificações, limite asinscrições de cada tópico em um pequeno número (por exemplo, cinco ou menos).

Você pode enviar notificações de eventos do aplicativo usando o console do Amazon SNS, o AWSCommand Line Interface (AWS CLI) ou os AWS SDKs.

Console de gerenciamento da AWS1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://

console.aws.amazon.com/sns/v2/home.2. No painel de navegação do serviço, escolha Aplicativos.3. Escolha o nome do aplicativo para o qual você deseja enviar notificações de eventos.4. Escolha Ações, Configurar eventos.5. Para cada um dos eventos que você deseja enviar notificações de eventos, digite o ARN do tópico do

Amazon SNS que receberá as notificações.6. Escolha Salvar configurações. As notificações de eventos são definidas.

AWS CLIExecute o comando set-platform-application-attributes.

O exemplo a seguir define o mesmo tópico do Amazon SNS para todos os quatro eventos do aplicativo:

aws sns set-platform-application-attributes--platform-application-arn arn:aws:sns:us-east-1:12345EXAMPLE:app/GCM/MyGCMPlatformApplication--attributes EventEndpointCreated="arn:aws:sns:us-east-1:12345EXAMPLE:MyGCMPlatformApplicationEvents",EventEndpointDeleted="arn:aws:sns:us-east-1:12345EXAMPLE:MyGCMPlatformApplicationEvents",

Versão da API 2010-03-3194

Page 102: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorTTL do Amazon SNS

EventEndpointUpdated="arn:aws:sns:us-east-1:12345EXAMPLE:MyGCMPlatformApplicationEvents",EventDeliveryFailure="arn:aws:sns:us-east-1:12345EXAMPLE:MyGCMPlatformApplicationEvents"

AWS SDKsChame uma das seguintes APIs, dependendo da sua linguagem de programação ou da plataforma dedestino:

Plataforma ou linguagemde programação

Links de referência da API

Android setPlatformApplicationAttributes

iOS AWSSNSSetPlatformApplicationAttributesInput

Java setPlatformApplicationAttributes

JavaScript setPlatformApplicationAttributes

.NET SetPlatformApplicationAttributes

PHP SetPlatformApplicationAttributes

Python (boto) set_platform_application_attributes

Ruby set_platform_application_attributes

Unity SetPlatformApplicationAttributesAsync

Windows PowerShell Set-SNSPlatformApplicationAttributes

Uso do atributo de mensagem Time to Live (TTL)do Amazon SNS para notificações por push paradispositivos móveis

Amazon Simple Notification Service (Amazon SNS) oferece suporte para configurar um atributo demensagem Time to Live (TTL) para mensagens de notificação por push para dispositivos móveis. Isso éuma adição ao recurso atual de configuração do TTL dentro do corpo da mensagem do Amazon SNS paraos serviços de notificação por push para dispositivos móveis que oferecem suporte a isso, como AmazonDevice Messaging (ADM) e Google Cloud Messaging para Android (GCM).

O atributo de mensagem do TTL é usado para especificar os metadados de expiração sobre umamensagem. Isso permite que você especifique a quantidade de tempo que o serviço de notificações porpush, como Apple Push Notification Service (APNS) ou GCM, tem para entregar a mensagem para oendpoint. Se por algum motivo (por exemplo, se o dispositivo móvel foi desativado) a mensagem nãofor entregue no material do TTL especificado, ela será descartada e não serão feitas mais tentativasde entrega. Para especificar o TTL dentro dos atributos de mensagem, você pode usar o Console degerenciamento da AWS, os AWS Software Development Kits (SDKs) ou a API de consulta.

Tópicos• Atributos da mensagem do TTL para serviços de notificação por push (p. 96)• Ordem de precedência para determinar o TTL (p. 96)• Especificação de TTL com Console de gerenciamento da AWS (p. 97)

Versão da API 2010-03-3195

Page 103: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAtributos da mensagem do TTL para

serviços de notificação por push

• Especificação do TTL com AWS SDKs (p. 97)

Atributos da mensagem do TTL para serviços denotificação por pushA seguir, encontra-se uma lista de atributos de mensagem do TTL para serviços de notificação por pushque você pode usar para definir ao usar os AWS SDKs ou a API de consulta:

Serviço de notificação por push Atributo de mensagem do TTL

Amazon Device Messaging (ADM) AWS.SNS.MOBILE.ADM.TTL

Apple Push Notification Service (APNS) AWS.SNS.MOBILE.APNS.TTL

Sandbox do Apple Push Notification Service(APNS_SANDBOX)

AWS.SNS.MOBILE.APNS_SANDBOX.TTL

Baidu Cloud Push (Baidu) AWS.SNS.MOBILE.BAIDU.TTL

Google Cloud Messaging para Android (GCM) AWS.SNS.MOBILE.GCM.TTL

Serviços de Notificação por Push do Windows(WNS)

AWS.SNS.MOBILE.WNS.TTL

Cada um dos serviços de notificação por push lida com o TTL de maneira diferente. Amazon SNS forneceuma visão resumida do TTL em todos os serviços de notificações por push, o que o torna mais fácilespecificar o TTL. Quando você usa o Console de gerenciamento da AWS para especificar o TTL (emsegundos), você só precisa inserir o valor de TTL uma vez e o Amazon SNS calculará o TTL para cada umdos serviços de notificação por push selecionados ao publicar a mensagem.

O TTL é relativo ao momento da publicação. Antes de enviar uma mensagem de notificação por push paraum serviço de notificações por push específico, o Amazon SNS calcula o tempo de permanência (o tempoentre o carimbo de data e hora da publicação e antes do envio para um serviço de notificações por push)para as notificações por push e passa o TTL restante para o serviço de notificações por push específico.Se o TTL for menor do que o tempo de permanência, Amazon SNS não tentará publicar.

Se você especificar um TTL para uma mensagem de notificação por push, o valor do TTL deve ser umnúmero inteiro positivo, a menos que o valor de 0 tenha um significado específico para o serviço denotificações por push — como ocorre com APNS e GCM. Se o valor de TTL é definido como 0 e o serviçode notificações por push não tem um significado específico para 0, Amazon SNS descartará a mensagem.Para obter mais informações sobre o parâmetro do TTL definido como 0 ao usar APNS, consulte Table A-3Item identifiers for remote notifications na documentação Binary Provider API. Para obter mais informaçõessobre o parâmetro TTL definido como 0 ao usar GCM, consulte Lifetime of a message.

Ordem de precedência para determinar o TTLA precedência que Amazon SNS usa para determinar o TTL para uma mensagem de notificação por pushé baseada na seguinte ordem, em que o número mais baixo tem prioridade mais alta:

1. TTL do atributo de mensagem2. TTL do corpo da mensagem3. TTL do serviço de notificação por push padrão (varia por serviço)4. TTL padrão do Amazon SNS (quatro semanas)

Versão da API 2010-03-3196

Page 104: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEspecificação de TTL com Console

de gerenciamento da AWS

Se você definir valores diferentes de TTL (um em atributos de mensagem e outro no corpo da mensagem)para a mesma mensagem, Amazon SNS modificará o TTL no corpo da mensagem de acordo com o TTLespecificado no atributo de mensagem.

Especificação de TTL com Console de gerenciamentoda AWSVocê pode especificar o TTL com o Console de gerenciamento da AWS.

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No painel Navegação à esquerda, clique em Apps e clique no aplicativo que contém os endpoints paraos quais você deseja definir o TTL ao publicar uma mensagem.

3. Selecione os endpoints nos quais deseja publicar uma mensagem, clique em Ações de endpoint eclique em Publicar.

4. Na caixa de diálogo Publicar, insira o número de segundos em Tempo de vida (TTL) e clique emPublicar mensagem.

Especificação do TTL com AWS SDKsAWS SDKs fornecem APIs em vários idiomas para usar TTL com Amazon SNS.

Para obter mais informações sobre SDK para Java, consulte Getting Started with the AWS SDK for Java.

O seguinte exemplo do Java mostra como configurar um atributo de mensagem de TTL e publicar amensagem em um endpoint, que no exemplo está registrado no Baidu Cloud Push:

Map<String, MessageAttributeValue> messageAttributes = new HashMap<String, MessageAttributeValue>();

// Insert your desired value (in seconds) of TTL here. For example, a TTL of 1 day would be 86,400 seconds. messageAttributes.put("AWS.SNS.MOBILE.BAIDU.TTL", new MessageAttributeValue().withDataType("String").withStringValue("86400"));

PublishRequest publishRequest = new PublishRequest();publishRequest.setMessageAttributes(messageAttributes);String message = "{\"title\":\"Test_Title\",\"description\":\"Test_Description\"}";publishRequest.setMessage(message);publishRequest.setMessageStructure("json");publishRequest.setTargetArn("arn:aws:sns:us-east-1:999999999999:endpoint/BAIDU/TestApp/318fc7b3-bc53-3d63-ac42-e359468ac730");PublishResult publishResult = snsClient.publish(publishRequest);

Para obter mais informações sobre o uso de atributos de mensagem com Amazon SNS, consulte Uso deatributos de mensagem do Amazon SNS (p. 180).

Usar as APIs para push para dispositivos móveis doAmazon SNS

Para usar as APIs de push para dispositivos móveis do Amazon SNS, você deve primeiro atender aos pré-requisitos para o serviço de notificações por push, como Apple Push Notification Service (APNS) e Google

Versão da API 2010-03-3197

Page 105: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAPIs para push para dispositivos móveis do Amazon SNS

Cloud Messaging para Android (GCM). Para obter mais informações sobre os pré-requisitos, consulte Pré-requisitos (p. 38).

Para enviar uma mensagem de notificação por push para um dispositivo um aplicativo móvelusando as APIs, você deve primeiro usar a ação CreatePlatformApplication, que retorna umatributo PlatformApplicationArn. O atributo PlatformApplicationArn é, então, usado porCreatePlatformEndpoint, que retorna um atributo EndpointArn. Em seguida, você pode usaro atributo EndpointArn com a ação Publish para enviar uma mensagem de notificação para umdispositivo e aplicativo móvel, ou você pode usar o atributo EndpointArn com a ação Subscribede inscrição em um tópico. Para obter mais informações, consulte Etapas de alto nível de push paradispositivos móveis do Amazon SNS (p. 39).

As APIs de push para dispositivos móveis do Amazon SNS são as seguintes:

CreatePlatformApplication

Cria um objeto de aplicativo de plataforma para um dos serviços de notificações por push compatíveis,como APNS e GCM, nos quais os dispositivos e aplicativos móveis podem ser registrados. Retornaum atributo PlatformApplicationArn, que é usado pela ação CreatePlatformEndpoint.

CreatePlatformEndpoint

Cria um endpoint para um dispositivo e aplicativo móvel em um dos serviços de notificações por pushcompatíveis. CreatePlatformEndpoint usa o atributo PlatformApplicationArn retornadopela ação CreatePlatformApplication. O atributo EndpointArn, que é retornado ao usarCreatePlatformEndpoint, é, então, usado com a ação Publish para enviar uma mensagem denotificação para um dispositivo e aplicativo móvel.

CreateTopic

Cria um tópico no qual as mensagens podem ser publicadas.DeleteEndpoint

Exclui o endpoint para um dispositivo e aplicativo móvel em um dos serviços de notificações por pushcompatíveis.

DeletePlatformApplication

Exclui um objeto de aplicativo de plataforma.DeleteTopic

Exclui um tópico e todas as suas inscrições.GetEndpointAttributes

Recupera os atributos do endpoint para um dispositivo e aplicativo móvel.GetPlatformApplicationAttributes

Recupera os atributos da plataforma de objeto de aplicativo.ListEndpointsByPlatformApplication

Lista os endpoints e atributos de endpoint para dispositivos e aplicativos móveis em um serviço denotificações por push compatível.

ListPlatformApplications

Lista os objetos do aplicativo da plataforma para os serviços de notificações por push compatíveis.Publish

Envia uma mensagem de notificação para todos os endpoints inscritos em um tópico.SetEndpointAttributes

Define os atributos para um endpoint para um dispositivo e aplicativo móvel.

Versão da API 2010-03-3198

Page 106: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorErros de API

SetPlatformApplicationAttributes

Define os atributos do objeto de aplicativo de plataforma.Subscribe

Prepara para assinar um endpoint enviando ao endpoint uma mensagem de confirmação. Para criarde fato uma inscrição, o proprietário do endpoint deve chamar a ação ConfirmSubscription com otoken da mensagem de confirmação.

Cancelar inscrição

Exclui a inscrição.

Erros de API para push para dispositivos móveis doAmazon SNS

Os erros que são retornados pelas APIs do Amazon SNS para push para dispositivos móveis sãolistados na tabela a seguir. Para obter mais informações sobre as APIs do Amazon SNS para push paradispositivos móveis, consulte Usar as APIs para push para dispositivos móveis do Amazon SNS (p. 97).

Erro Descrição Código de statusHTTPS

Ação que retorna esteerro

Nome do aplicativo éuma string nula

O nome do aplicativonecessário está definidocomo nulo.

400 CreatePlatformApplication

Nome da plataforma éuma string nula

O nome da plataformanecessária está definidocomo nulo.

400 CreatePlatformApplication

Nome da plataforma éinválido

Um valor inválido oufora do intervalo foifornecido para o nomeda plataforma.

400 CreatePlatformApplication

APNS — principal não éum certificado válido

Um certificado inválidofoi fornecido para oprincipal do APNS,que é o certificadoSSL. Para obter maisinformações, consulteCreatePlatformApplicationno Amazon SimpleNotification Service APIReference.

400 CreatePlatformApplication

APNS — principal éum certificado válido,mas não está noformato .pem

Um certificado válidoque não está noformato .pem foifornecido para oprincipal do APNS, queé o certificado SSL.

400 CreatePlatformApplication

APNS — principal é umcertificado expirado

Um certificado expiradofoi fornecido para o

400 CreatePlatformApplication

Versão da API 2010-03-3199

Page 107: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorErros de API

Erro Descrição Código de statusHTTPS

Ação que retorna esteerro

principal do APNS, queé o certificado SSL.

APNS — principal nãoé um certificado emitidopela Apple

Um certificado nãoemitido pela Applefoi fornecido para oprincipal do APNS, queé o certificado SSL.

400 CreatePlatformApplication

APNS — principal nãofoi fornecido

O principal do APNS,que é o certificado SSL,não foi fornecido.

400 CreatePlatformApplication

APNS — as credenciaisnão foram fornecidas

As credenciais doAPNS, que é achave privada, nãoforam fornecidas.Para obter maisinformações, consulteCreatePlatformApplicationno Amazon SimpleNotification Service APIReference.

400 CreatePlatformApplication

APNS — as credenciaisnão estão em umformato .pem válido.

As credenciais doAPNS, que são a chaveprivada, não estão emum formato .pem válido.

400 CreatePlatformApplication

GCM — serverAPIKeynão foi fornecido

As credenciais do GCM,que são a chave de API,não foram fornecidas.Para obter maisinformações, consulteCreatePlatformApplicationno Amazon SimpleNotification Service APIReference.

400 CreatePlatformApplication

GCM — serverAPIKeyestá vazia

As credenciais do GCM,que são a chave de API,estão vazias.

400 CreatePlatformApplication

GCM — serverAPIKey éuma string nula

As credenciais do GCM,que são a chave de API,são nulas.

400 CreatePlatformApplication

GCM — serverAPIKey éinválido

As credenciais do GCM,que são a chave de API,são inválidas.

400 CreatePlatformApplication

ADM — clientsecret nãofoi fornecido

O segredo do clientenecessário não foifornecido.

400 CreatePlatformApplication

Versão da API 2010-03-31100

Page 108: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorErros de API

Erro Descrição Código de statusHTTPS

Ação que retorna esteerro

ADM — clientsecret éuma string nula

A string necessária parao segredo do cliente énula.

400 CreatePlatformApplication

ADM — client_secret éuma string vazia

A string necessária parao segredo do clienteestá vazia.

400 CreatePlatformApplication

ADM — client_secretnão é válida

A string necessária parao segredo do cliente nãoé válida.

400 CreatePlatformApplication

ADM — client_id é umastring vazia

A string necessária parao ID do cliente estávazia.

400 CreatePlatformApplication

ADM — clientId não foifornecido

A string necessária parao ID do cliente não foifornecida.

400 CreatePlatformApplication

ADM — clientid é umastring nula

A string necessária parao ID do cliente é nula.

400 CreatePlatformApplication

ADM — client_id não éválida

A string necessária parao ID do cliente não éválida.

400 CreatePlatformApplication

EventEndpointCreatedtem um formato ARNinválido

EventEndpointCreatedtem um formato ARNinválido.

400 CreatePlatformApplication

EventEndpointDeletedtem um formato ARNinválido

EventEndpointDeletedtem um formato ARNinválido.

400 CreatePlatformApplication

EventEndpointUpdatedtem um formato ARNinválido

EventEndpointUpdatedtem um formato ARNinválido.

400 CreatePlatformApplication

EventDeliveryAttemptFailuretem um formato ARNinválido

EventDeliveryAttemptFailuretem um formato ARNinválido.

400 CreatePlatformApplication

EventDeliveryFailuretem um formato ARNinválido

EventDeliveryFailuretem um formato ARNinválido.

400 CreatePlatformApplication

EventEndpointCreatednão é um tópicoexistente

EventEndpointCreatednão é um tópicoexistente.

400 CreatePlatformApplication

EventEndpointDeletednão é um tópicoexistente

EventEndpointDeletednão é um tópicoexistente.

400 CreatePlatformApplication

Versão da API 2010-03-31101

Page 109: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorErros de API

Erro Descrição Código de statusHTTPS

Ação que retorna esteerro

EventEndpointUpdatednão é um tópicoexistente

EventEndpointUpdatednão é um tópicoexistente.

400 CreatePlatformApplication

EventDeliveryAttemptFailurenão é um tópicoexistente

EventDeliveryAttemptFailurenão é um tópicoexistente.

400 CreatePlatformApplication

EventDeliveryFailurenão é um tópicoexistente

EventDeliveryFailurenão é um tópicoexistente.

400 CreatePlatformApplication

O ARN da plataforma éinválido

O ARN da plataforma éinválido.

400 SetPlatformAttributes

O ARN da plataformaé válido, mas nãopertence ao usuário

O ARN da plataformaé válido, mas nãopertence ao usuário.

400 SetPlatformAttributes

APNS — principal não éum certificado válido

Um certificado inválidofoi fornecido para oprincipal do APNS,que é o certificadoSSL. Para obter maisinformações, consulteCreatePlatformApplicationno Amazon SimpleNotification Service APIReference.

400 SetPlatformAttributes

APNS — principal éum certificado válido,mas não está noformato .pem

Um certificado válidoque não está noformato .pem foifornecido para oprincipal do APNS, queé o certificado SSL.

400 SetPlatformAttributes

APNS — principal é umcertificado expirado

Um certificado expiradofoi fornecido para oprincipal do APNS, queé o certificado SSL.

400 SetPlatformAttributes

APNS — principal nãoé um certificado emitidopela Apple

Um certificado nãoemitido pela Applefoi fornecido para oprincipal do APNS, queé o certificado SSL.

400 SetPlatformAttributes

APNS — principal nãofoi fornecido

O principal do APNS,que é o certificado SSL,não foi fornecido.

400 SetPlatformAttributes

Versão da API 2010-03-31102

Page 110: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorErros de API

Erro Descrição Código de statusHTTPS

Ação que retorna esteerro

APNS — as credenciaisnão foram fornecidas

As credenciais doAPNS, que é achave privada, nãoforam fornecidas.Para obter maisinformações, consulteCreatePlatformApplicationno Amazon SimpleNotification Service APIReference.

400 SetPlatformAttributes

APNS — as credenciaisnão estão em umformato .pem válido.

As credenciais doAPNS, que são a chaveprivada, não estão emum formato .pem válido.

400 SetPlatformAttributes

GCM — serverAPIKeynão foi fornecido

As credenciais do GCM,que são a chave de API,não foram fornecidas.Para obter maisinformações, consulteCreatePlatformApplicationno Amazon SimpleNotification Service APIReference.

400 SetPlatformAttributes

GCM — serverAPIKey éuma string nula

As credenciais do GCM,que são a chave de API,são nulas.

400 SetPlatformAttributes

ADM — clientId não foifornecido

A string necessária parao ID do cliente não foifornecida.

400 SetPlatformAttributes

ADM — clientid é umastring nula

A string necessária parao ID do cliente é nula.

400 SetPlatformAttributes

ADM — clientsecret nãofoi fornecido

O segredo do clientenecessário não foifornecido.

400 SetPlatformAttributes

ADM — clientsecret éuma string nula

A string necessária parao segredo do cliente énula.

400 SetPlatformAttributes

EventEndpointUpdatedtem um formato ARNinválido

EventEndpointUpdatedtem um formato ARNinválido.

400 SetPlatformAttributes

EventEndpointDeletedtem um formato ARNinválido

EventEndpointDeletedtem um formato ARNinválido.

400 SetPlatformAttributes

EventEndpointUpdatedtem um formato ARNinválido

EventEndpointUpdatedtem um formato ARNinválido.

400 SetPlatformAttributes

Versão da API 2010-03-31103

Page 111: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorErros de API

Erro Descrição Código de statusHTTPS

Ação que retorna esteerro

EventDeliveryAttemptFailuretem um formato ARNinválido

EventDeliveryAttemptFailuretem um formato ARNinválido.

400 SetPlatformAttributes

EventDeliveryFailuretem um formato ARNinválido

EventDeliveryFailuretem um formato ARNinválido.

400 SetPlatformAttributes

EventEndpointCreatednão é um tópicoexistente

EventEndpointCreatednão é um tópicoexistente.

400 SetPlatformAttributes

EventEndpointDeletednão é um tópicoexistente

EventEndpointDeletednão é um tópicoexistente.

400 SetPlatformAttributes

EventEndpointUpdatednão é um tópicoexistente

EventEndpointUpdatednão é um tópicoexistente.

400 SetPlatformAttributes

EventDeliveryAttemptFailurenão é um tópicoexistente

EventDeliveryAttemptFailurenão é um tópicoexistente.

400 SetPlatformAttributes

EventDeliveryFailurenão é um tópicoexistente

EventDeliveryFailurenão é um tópicoexistente.

400 SetPlatformAttributes

O ARN da plataforma éinválido

O ARN da plataforma éinválido.

400 GetPlatformApplicationAttributes

O ARN da plataformaé válido, mas nãopertence ao usuário

O ARN da plataformaé válido, mas nãopertence ao usuário.

403 GetPlatformApplicationAttributes

O token especificado éinválido

O token especificado éinválido.

400 ListPlatformApplications

O ARN da plataforma éinválido

O ARN da plataforma éinválido.

400 ListEndpointsByPlatformApplication

O ARN da plataformaé válido, mas nãopertence ao usuário

O ARN da plataformaé válido, mas nãopertence ao usuário.

404 ListEndpointsByPlatformApplication

O token especificado éinválido

O token especificado éinválido.

400 ListEndpointsByPlatformApplication

O ARN da plataforma éinválido

O ARN da plataforma éinválido.

400 DeletePlatformApplication

O ARN da plataformaé válido, mas nãopertence ao usuário

O ARN da plataformaé válido, mas nãopertence ao usuário.

403 DeletePlatformApplication

O ARN da plataforma éinválido

O ARN da plataforma éinválido.

400 CreatePlatformEndpoint

Versão da API 2010-03-31104

Page 112: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorErros de API

Erro Descrição Código de statusHTTPS

Ação que retorna esteerro

O ARN da plataformaé válido, mas nãopertence ao usuário

O ARN da plataformaé válido, mas nãopertence ao usuário.

404 CreatePlatformEndpoint

O token não foiespecificado

O token não foiespecificado.

400 CreatePlatformEndpoint

O token não é dotamanho certo

O token não tem otamanho certo.

400 CreatePlatformEndpoint

Os dados do usuáriodo cliente são muitograndes

Os dados do usuário docliente não podem termais de 2048 bytes emcodificação UTF-8.

400 CreatePlatformEndpoint

O ARN do endpoint éinválido

O ARN do endpoint éinválido.

400 DeleteEndpoint

O ARN do endpointé válido, mas nãopertence ao usuário

O ARN do endpointé válido, mas nãopertence ao usuário.

403 DeleteEndpoint

O ARN do endpoint éinválido

O ARN do endpoint éinválido.

400 SetEndpointAttributes

O ARN do endpointé válido, mas nãopertence ao usuário

O ARN do endpointé válido, mas nãopertence ao usuário.

403 SetEndpointAttributes

O token não foiespecificado

O token não foiespecificado.

400 SetEndpointAttributes

O token não é dotamanho certo

O token não tem otamanho certo.

400 SetEndpointAttributes

Os dados do usuáriodo cliente são muitograndes

Os dados do usuário docliente não podem termais de 2048 bytes emcodificação UTF-8.

400 SetEndpointAttributes

O ARN do endpoint éinválido

O ARN do endpoint éinválido.

400 GetEndpointAttributes

O ARN do endpointé válido, mas nãopertence ao usuário

O ARN do endpointé válido, mas nãopertence ao usuário.

403 GetEndpointAttributes

O ARN de destino éinválido

O ARN de destino éinválido.

400 Publish

O ARN de destinoé válido, mas nãopertence ao usuário

O ARN de destinoé válido, mas nãopertence ao usuário.

403 Publish

O formato damensagem é inválido

O formato damensagem é inválido.

400 Publish

Versão da API 2010-03-31105

Page 113: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorErros de API

Erro Descrição Código de statusHTTPS

Ação que retorna esteerro

O tamanho damensagem é maior doque o comportado peloprotocolo/serviço final

O tamanho damensagem é maior doque o comportado peloprotocolo/serviço final.

400 Publish

Versão da API 2010-03-31106

Page 114: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedor

Envio de mensagens do AmazonSNS para filas do Amazon SQS

Amazon SNS funciona em conjunto com Amazon Simple Queue Service (Amazon SQS). Os dois serviçosfornecem benefícios diferentes para os desenvolvedores. Amazon SNS permite que aplicativos enviemmensagens urgentes para vários inscritos através de um mecanismo de “push”, eliminando a necessidadede verificar ou “pesquisar” periodicamente atualizações. Amazon SQS é um serviço de fila de mensagensusado por aplicativos distribuídos para trocar mensagens por meio de um modelo de pesquisa e podeser usado para decompor os componentes de envio e recebimento — sem a necessidade de cadacomponente estar disponível simultaneamente. Ao utilizar Amazon SNS e Amazon SQS em conjunto, asmensagens podem ser entregues para aplicativos que exigem uma notificação imediata de um eventoe também podem continuar em uma fila do Amazon SQS para que outros aplicativos as processemposteriormente.

Ao inscrever uma fila do Amazon SQS em um tópico do &SNS, é possível publicar uma mensagem notópico e o Amazon SNS envia uma mensagem do &SQS para a fila inscrita. A mensagem do Amazon SQScontém o assunto e a mensagem publicados no tópico juntamente com os metadados sobre a mensagemem um documento JSON. A mensagem do Amazon SQS será semelhante ao seguinte documento JSON.

{ "Type" : "Notification", "MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Subject" : "Testing publish to subscribed queues", "Message" : "Hello world!", "Timestamp" : "2012-03-29T05:12:16.901Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEnTrFPa37tnVO0FF9Iau3MGzjlJLRfySEoWz4uZHSj6ycK4ph71Zmdv0NtJ4dC/El9FOGp3VuvchpaTraNHWhhq/OsN1HVz20zxmF9b88R8GtqjfKB5woZZmz87HiM6CYDTo3l7LMwFT4VU7ELtyaBBafhPTg9O5CnKkg=", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem", "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54-ab0e-4ec2-88e0-db410a0f2bee"}

Note

Em vez de seguir as etapas listadas abaixo, agora você pode inscrever uma fila do Amazon SQSem um tópico do Amazon SNS usando o console do Amazon SQS, que simplifica o processo.Para obter mais informações, consulte Subscribe Queue to Amazon SNS Topic

Para permitir que um tópico do Amazon SNS envie mensagens para uma fila do Amazon SQS, siga essasetapas:

1. Obtenha o Nome de recurso da Amazon (ARN) da fila para a qual deseja enviar mensagens e o tópicono qual você deseja inscrever a fila. (p. 108)

2. Conceda a permissão sqs:SendMessage para o tópico do Amazon SNS para que ele possa enviarmensagens para a fila. (p. 108)

Versão da API 2010-03-31107

Page 115: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 1. Obtenha o ARN da fila e do tópico.

3. Inscreva a fila no tópico do Amazon SNS. (p. 109)4. Conceda aos usuários do IAM ou de contas da AWS as permissões apropriadas para publicar no tópico

do Amazon SNS e leia as mensagens da fila do Amazon SQS. (p. 110)5. Faça um teste publicando uma mensagem no tópico e lendo a mensagem a partir da fila. (p. 112)

Para saber mais sobre como configurar um tópico para enviar mensagens para uma fila que está em umaconta diferente da AWS, consulte Envio de mensagens do Amazon SNS para uma fila do Amazon SQS emuma conta diferente (p. 113).

Para ver um modelo de AWS CloudFormation que cria um tópico que envia mensagens para duas filas,consulte Uso de um modelo do AWS CloudFormation para criar um tópico que envia mensagens para filasdo Amazon SQS (p. 116).

Etapa 1. Obtenha o ARN da fila e do tópico.Ao inscrever uma fila em seu tópico, você precisará de uma cópia do ARN da fila. Da mesma forma, aoconceder permissão para o tópico enviar mensagens para a fila, você precisará de uma cópia do ARN dotópico.

Para obter o ARN da fila, você pode usar o console do Amazon SQS ou a ação de APIGetQueueAttributes.

Para obter o ARN da fila do console do Amazon SQS

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SQS em https://console.aws.amazon.com/sqs/.

2. Marque a caixa de seleção da fila cujo ARN você deseja obter.3. Na guia Detalhes, copie o valor de ARN e use-o para se inscrever no tópico do Amazon SNS.

Para obter o ARN do tópico, você pode usar o console do Amazon SNS, o comando sns-get-topic-attributes ou a ação de API GetQueueAttributes.

Para obter o ARN do tópico do console do Amazon SNS

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No painel de navegação, selecione o tópico cujo ARN você deseja obter.3. No painel Detalhes do tópico, copie o valor ARN do tópico e use-o para possa conceder permissão de

envio de mensagens para a fila ao tópico do Amazon SNS.

Etapa 2. Conceda permissão para o tópico doAmazon SNS enviar mensagens para a fila doAmazon SQS

Para um tópico do Amazon SNS ser capaz de enviar mensagens para uma fila, você deve definir umapolítica na fila que permita que o tópico do Amazon SNS execute a ação sqs:SendMessage.

Versão da API 2010-03-31108

Page 116: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 3. Inscreva a fila no tópico do Amazon SNS

Antes de inscrever uma fila em um tópico, você precisa de um tópico e uma fila. Se ainda não criou umtópico ou uma fila, crie-os agora. Para obter mais informações, consulte Criação de um tópico e consulteCriação de uma fila no Guia do desenvolvedor do Amazon Simple Queue Service.

Para definir uma política em uma fila, você pode usar o console do Amazon SQS ou a ação de APISetQueueAttributes. Antes de começar, verifique se você tem o ARN do tópico que você deseja permitirque envie mensagens para a fila.

Para definir uma política de SendMessage em uma fila usando o console do Amazon SQS

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SQS em https://console.aws.amazon.com/sqs/.

2. Marque a caixa de seleção da fila cuja política você deseja definir, clique na guia Permissões e cliqueem Adicionar uma permissão.

3. Na caixa de diálogo Adicionar permissão, selecione Permitir para Efeito, selecione Todos (*) paraPrincipal e selecione SendMessage no menu Ações.

4. Adicione uma condição que permite a ação para o tópico. Clique em Adicionar condições (opcional),selecione ArnEquals em Condição, selecione aws:SourceArn em Chave e cole o ARN do tópico emValores. Clique em Adicionar condição. A nova condição deverá ser exibida na parte inferior da caixa(pode ser necessário rolar para baixo para visualizá-la).

5. Clique em Adicionar permissões.

Se você quiser criar o documento de política, faça isso da seguinte maneira. A política permite queMyTopic envie mensagens para MyQueue.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"MySQSPolicy001", "Effect":"Allow", "Principal":"*", "Action":"sqs:SendMessage", "Resource":"arn:aws:sqs:us-east-1:123456789012:MyQueue", "Condition":{ "ArnEquals":{ "aws:SourceArn":"arn:aws:sns:us-east-1:123456789012:MyTopic" } } } ]}

Etapa 3. Inscreva a fila no tópico do Amazon SNSPara enviar mensagens para uma fila por meio de um tópico, você deve inscrever a fila no tópico doAmazon SNS. Você especifica a fila por meio de sua ARN. Para inscrever um tópico, é possível usaro console do Amazon SNS, o comando sns-subscribe ou a ação da API Subscribe. Antes de começar,verifique se você tem o ARN para a fila que deseja inscrever.

Para inscrever uma fila em um tópico usando o console do Amazon SNS

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

Versão da API 2010-03-31109

Page 117: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 4. Conceda aos usuários permissõespara o tópico apropriado e as ações de fila

2. No painel de navegação, selecione o tópico.3. Clique em Criar inscrição, selecione Amazon SQS para Protocolo, cole o ARN da fila para a qual você

deseja que o tópico envie mensagens em Endpoint e clique em Inscrever-se.4. Para a mensagem Solicitação de inscrição recebida!, clique em Fechar.

Quando a inscrição for confirmada, o ID de inscrição da nova inscrição exibe o ID de inscrição. Se oproprietário da fila cria a inscrição, ela será automaticamente confirmada e deverá ser ativada quaseque imediatamente.

Geralmente, você inscreverá sua própria fila em seu próprio tópico em sua própria conta. No entanto,você também pode inscrever uma fila de uma conta diferente em seu tópico. Se o usuário que criaa inscrição não é o proprietário da fila (por exemplo, se um usuário da conta A inscreve uma fila daconta B para um tópico na conta A), a inscrição deve ser confirmada. Para obter mais informaçõessobre como inscrever uma fila de uma conta diferente e confirmar a inscrição, consulte Envio demensagens do Amazon SNS para uma fila do Amazon SQS em uma conta diferente (p. 113).

Etapa 4. Conceda aos usuários permissões para otópico apropriado e as ações de fila

Você deve usar AWS Identity and Access Management (IAM) para permitir que somente usuáriosadequados publiquem no tópico do Amazon SNS e leiam/excluam mensagens da fila do Amazon SQS.Para obter mais informações sobre como controlar ações nos tópicos e filas para usuários do IAM,consulte Controle do acesso do usuário em sua conta da AWS e Controle do acesso do usuário em suaconta da AWS no Guia do desenvolvedor do Amazon Simple Queue Service.

Há duas maneiras de controlar o acesso a um tópico ou uma fila:

• Adicione uma política para um usuário ou grupo do IAM (p. 110). A maneira mais simples de concederaos usuários permissões para tópicos ou filas é criar um grupo e adicionar a política adequada e osusuários ao grupo. É muito mais fácil adicionar e remover usuários de um grupo do que controlar aspolíticas definidas para usuários individualmente.

• Adicione uma política ao tópico ou à fila (p. 111). Se deseja conceder permissões para um tópico oufila para outra conta da AWS, a única maneira de fazer isso é adicionando uma política com a conta daAWS para a qual você deseja conceder permissões como principal.

Você deve usar o primeiro método para a maioria dos casos (aplicar políticas a grupos e gerenciarpermissões para usuários adicionando ou removendo os usuários adequados aos grupos). Se vocêprecisa conceder permissões para um usuário em outra conta, use o segundo método.

Adição de uma política para um usuário ou grupo doIAMSe você adicionar a seguinte política para um usuário ou grupo do IAM, estará concedendo a esse usuárioou aos membros do grupo permissão para executar a ação sns:Publish no tópico MyTopic.

{ "Version":"2012-10-17", "Statement":[{ "Sid":"AllowPublishToMyTopic", "Effect":"Allow", "Action":"sns:Publish",

Versão da API 2010-03-31110

Page 118: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAdição de uma política a um tópico ou uma fila

"Resource":"arn:aws:sns:us-east-1:123456789012:MyTopic" } ]}

Se você adicionar a seguinte política para um usuário ou grupo do IAM, estará concedendo a esseusuário ou aos membros do grupo permissão para executar as ações sqs:ReceiveMessage esqs:DeleteMessage nas filas MyQueue1 e MyQueue2.

{ "Version":"2012-10-17", "Statement":[{ "Sid":"AllowReadDeleteMessageOnMyQueue", "Effect":"Allow", "Action":[ "sqs:ReceiveMessage", "sqs:DeleteMessage" ], "Resource":[ "arn:aws:sns:us-east-1:123456789012:MyQueue1", "arn:aws:sns:us-east-1:123456789012:MyQueue2" ], } ]}

Adição de uma política a um tópico ou uma filaOs exemplos de políticas a seguir mostram como conceder a outra conta permissões para um tópico euma fila.

Note

Ao conceder à outra conta da AWS acesso a um recurso em sua conta, você também estáconcedendo permissões para o recurso em questão aos usuários do IAM com acesso denível de administrador (acesso coringa). Todos os outros usuários do IAM na outra conta têmautomaticamente o acesso negado a seus recursos. Se você deseja conceder a usuáriosespecíficos do IAM da conta da AWS acesso a seus recursos, a conta ou um usuário do IAM comacesso de nível de administrador deve delegar permissões para o recurso para esses usuáriosdo IAM. Para obter mais informações sobre a delegação entre contas, consulte Enabling Cross-Account Access no guia Using IAM.

Se adicionou a seguinte política a um tópico MyTopic na conta, você pode conceder à conta123456789012 permissão 111122223333 para executar a ação sns:Publish no tópico.

{ "Version":"2012-10-17", "Id":"MyTopicPolicy", "Statement":[{ "Sid":"Allow-publish-to-topic", "Effect":"Allow", "Principal":{ "AWS":"111122223333" }, "Action":"sns:Publish", "Resource":"arn:aws:sns:us-east-1:123456789012:MyTopic" } ]}

Versão da API 2010-03-31111

Page 119: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 5. Testar

Se adicionar a seguinte política à fila MyQueue na conta 123456789012, você concederá à conta111122223333 permissão para executar as ações sqs:ReceiveMessage e sqs:DeleteMessage nafila.

{ "Version":"2012-10-17", "Id":"MyQueuePolicy", "Statement":[ { "Sid":"Allow-Processing-Of-Messages-for-Queue", "Effect":"Allow", "Principal":{ "AWS":"111122223333" }, "Action":[ "sqs:DeleteMessage", "sqs:ReceiveMessage" ], "Resource":[ "arn:aws:sns:us-east-1:123456789012:MyQueue", ] } ]}

Etapa 5. TestarVocê pode testar as inscrições de fila de um tópico publicando nele e visualizando a mensagem que eleenvia para a fila.

Para publicar um tópico usando o console do Amazon SNS

1. Usando as credenciais da conta da AWS ou do usuário do IAM com permissão para publicar notópico, faça login no Console de gerenciamento da AWS e abra o console do Amazon SNS em https://console.aws.amazon.com/ sns/.

2. No painel de navegação, selecione o tópico e clique em Publicar o tópico.3. Na caixa Assunto, insira um assunto (por exemplo, Testes de publicação em uma fila), na

caixa Mensagem, insira texto (por exemplo, Olá mundo!) e clique em Publicar mensagem. Seráexibida a seguinte mensagem: Your message has been successfully published.

Para visualizar a mensagem do tópico usando o console do Amazon SQS

1. Usando as credenciais da conta da AWS ou do usuário do IAM com permissão para visualizarmensagens na fila, faça login no Console de gerenciamento da AWS e abra o console do AmazonSQS em https://console.aws.amazon.com/sqs/.

2. Marque a caixa da fila inscrita no tópico.3. No menu suspenso Ação de fila, selecione Visualizar/deletar mensagens e clique em Iniciar votação

de mensagens. Uma mensagem com um tipo de Notificação é exibida.4. Na coluna Corpo, clique em Mais detalhes. A caixa Detalhes da mensagem inclui um documento

JSON que contém o assunto e a mensagem publicada no tópico. A mensagem é semelhante aoseguinte documento JSON.

{ "Type" : "Notification",

Versão da API 2010-03-31112

Page 120: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEnvio de mensagens para uma fila em uma conta diferente

"MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Subject" : "Testing publish to subscribed queues", "Message" : "Hello world!", "Timestamp" : "2012-03-29T05:12:16.901Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEnTrFPa37tnVO0FF9Iau3MGzjlJLRfySEoWz4uZHSj6ycK4ph71Zmdv0NtJ4dC/El9FOGp3VuvchpaTraNHWhhq/OsN1HVz20zxmF9b88R8GtqjfKB5woZZmz87HiM6CYDTo3l7LMwFT4VU7ELtyaBBafhPTg9O5CnKkg=", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem", "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54-ab0e-4ec2-88e0-db410a0f2bee"}

5. Clique em Close. Você publicou com sucesso em um tópico que envia mensagens de notificação parauma fila.

Envio de mensagens do Amazon SNS para uma filado Amazon SQS em uma conta diferente

É possível publicar uma notificação em um tópico do Amazon SNS com uma ou mais inscrições de filasdo Amazon SQS em outra conta. Você pode configurar o tópico e as filas da mesma forma que faria seeles estivessem na mesma conta (consulte Envio de mensagens do Amazon SNS para filas do AmazonSQS (p. 107)). A única diferença é a forma de lidar com a confirmação de inscrição, e isso depende decomo você inscreve a fila no tópico.

Tópicos• Proprietário da fila cria inscrição (p. 113)• Usuário que não é proprietário da fila cria a inscrição (p. 114)

Proprietário da fila cria inscriçãoQuando o proprietário da fila cria a inscrição, ela não requer confirmação. A fila começa a recebernotificações do tópico assim que a ação Subscribe é concluída. Para permitir que o proprietárioda fila inscreva-se no tópico do proprietário, este último deve conceder à conta do proprietário dafila permissão para chamar a ação Subscribe no tópico. Quando adicionada ao tópico MyTopic naconta 123456789012, a seguinte política concede à conta 111122223333 permissão para chamarsns:Subscribe no MyTopic na conta 123456789012.

{ "Version":"2012-10-17", "Id":"MyTopicSubscribePolicy", "Statement":[{ "Sid":"Allow-other-account-to-subscribe-to-topic", "Effect":"Allow", "Principal":{ "AWS":"111122223333" }, "Action":"sns:Subscribe", "Resource":"arn:aws:sns:us-east-1:123456789012:MyTopic" } ]}

Versão da API 2010-03-31113

Page 121: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorUsuário que não é proprietário da fila cria a inscrição

Após essa política ter sido definida no MyTopic, um usuário pode fazer login no console do Amazon SNScom as credenciais da conta 111122223333 para se inscrever no tópico.

Para adicionar uma inscrição de uma fila do Amazon SQS a um tópico em outra conta usando oconsole do Amazon SQS

1. Usando as credenciais da conta da AWS que contém a fila ou um usuário do IAM nessa conta,faça login no Console de gerenciamento da AWS e abra o console do Amazon SNS em https://console.aws.amazon.com/sns/.

2. Verifique se você tem os ARNs do tópico e da fila. Você precisará deles quando criar a inscrição.3. Verifique se você definiu a permissão sqs:SendMessage na fila para que ela possa receber

mensagens do tópico. Para obter mais informações, consulte Etapa 2. Conceda permissão para otópico do Amazon SNS enviar mensagens para a fila do Amazon SQS (p. 108).

4. No painel de navegação, selecione o Painel do SNS.5. No Painel, na seção Ações adicionais, clique em Criar nova inscrição.6. Na caixa ARN do tópico, insira o ARN do tópico.7. Para Protocolo, selecione Amazon SQS.8. Na caixa Endpoint, insira o ARN da fila.9. Clique em Inscrever-se.10. Para a mensagem Solicitação de inscrição recebida!, você verá texto que diz que é necessário

confirmar a inscrição. Como você é o proprietário da fila, a inscrição não precisa ser confirmada.Clique em Close. Você concluiu o processo de inscrição e as mensagens de notificação publicadas notópico agora podem ser enviadas para a fila.

O usuário também pode usar a chave de acesso e a chave secreta da conta da AWS 111122223333para emitir o comando sns-subscribe ou chamar a ação de API Subscribe para inscrever uma fila doAmazon SQS no MyTopic na conta 123456789012. O seguinte comando sns-subscribe inscreve a fila MyQda conta 111122223333 no tópico MyTopic da conta 123456789012.

aws sns subscribe --topic-arn arn:aws:sns:us-east-1:123456789012:MyTopic --protocol sqs --notification-endpoint arn:aws:sqs:us-east-1:111122223333:MyQ

Note

Para ser capaz de enviar, a fila deve ter permissões para o Amazon SNS.

Usuário que não é proprietário da fila cria a inscriçãoQuando um usuário que não é o proprietário da fila cria a inscrição (por exemplo, quando o proprietário dotópico na conta A adiciona uma inscrição a uma fila na conta B), a assinatura deve ser confirmada.

Important

Antes de inscrever o tópico, verifique se você definiu a permissão sqs:SendMessage na fila paraque ela possa receber mensagens do tópico. Consulte Etapa 2. Conceda permissão para o tópicodo Amazon SNS enviar mensagens para a fila do Amazon SQS (p. 108).

Quando o usuário chama a ação Subscribe, uma mensagem do tipo SubscriptionConfirmation éenviada para a fila e a inscrição é exibida no console do Amazon SNS com seu ID de inscrição definidocomo Confirmação pendente. Para confirmar a inscrição, um usuário que pode ler mensagens da fila devevisitar o URL especificado no valor SubscribeURL na mensagem. Até que a inscrição seja confirmada,nenhuma notificação publicada no tópico é enviada para a fila. Para confirmar a inscrição, você pode usaro console do Amazon SQS ou a ação de API ReceiveMessage .

Versão da API 2010-03-31114

Page 122: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorUsuário que não é proprietário da fila cria a inscrição

Para confirmar uma inscrição usando o console do Amazon SQS

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SQS em https://console.aws.amazon.com/sqs/.

2. Selecione a fila que tem uma inscrição pendente no tópico.3. No menu suspenso Ação de fila, selecione Visualizar/deletar mensagens e clique em Iniciar votação

de mensagens. Uma mensagem com um tipo de SubscriptionConfirmation é exibida.4. Na coluna Corpo, clique em Mais detalhes.

5. Na caixa de texto, localize o valor SubscribeURL e copie o URL. Ele será semelhante ao URL aseguir.

https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=2336412f37fb687f5d51e6e241d09c805d352fe148e56f8cff30f023ff35db8bccbc62721725b074841be6524bb215b0c45ec571ba1e7faacc309940c0b4b9e511ab85eba671412a4c314ecd446127ff1a9cfe08642b8e3738e73c279dd3ae565bd98f842ed992a4742ebec0946ebd9a

6. Em um navegador da web, cole o URL na barra de endereços para visitar o URL. Você verá umaresposta semelhante ao seguinte documento XML.

<ConfirmSubscriptionResponse xmlns="http://sns.amazonaws.com/doc/2010-03-31/"> <ConfirmSubscriptionResult> <SubscriptionArn>arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54-ab0e-4ec2-88e0-db410a0f2bee</SubscriptionArn> </ConfirmSubscriptionResult> <ResponseMetadata>

Versão da API 2010-03-31115

Page 123: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorUso de um modelo do AWS CloudFormation para criar umtópico que envia mensagens para filas do Amazon SQS

<RequestId>dd266ecc-7955-11e1-b925-5140d02da9af</RequestId> </ResponseMetadata></ConfirmSubscriptionResponse>

Se você visualizar a inscrição do tópico no console do Amazon SNS, verá que o ARN da inscriçãosubstitui a mensagem Confirmação pendente na coluna ID de inscrição. A fila inscrita está pronta parareceber mensagens do tópico.

Uso de um modelo do AWS CloudFormation paracriar um tópico que envia mensagens para filas doAmazon SQS

AWS CloudFormation permite que você use um arquivo de modelo para criar e configurar um conjuntode recursos da AWS como uma unidade única. Esta seção tem um modelo de exemplo que facilita aimplantação de tópicos que publicam em filas. Os modelos processam as etapas de configuração paravocê, criando duas filas, criando um tópico com inscrições das filas, adicionando uma política às filas paraque o tópico possa enviar mensagens para as filas e criando usuários e grupos do IAM para controlar oacesso a esses recursos.

Para obter mais informações sobre a implantação de recursos da AWS usando um modelo do AWSCloudFormation, consulte Get Started no AWS CloudFormation User Guide.

Uso de um modelo do &CFN para definir tópicos efilas dentro de uma conta da AWSO modelo de exemplo cria um tópico do Amazon SNS que pode enviar mensagens para duas filas doAmazon SQS com as permissões adequadas para que os membros de um grupo do IAM publiquem notópico e os membros do outro leiam mensagens das filas. O modelo também cria usuários do IAM que sãoadicionados a cada grupo.

Você pode baixar esse modelo (https://s3.amazonaws.com//cloudformation-templates-us-east-1/SNSToSQS.template) na página de modelos de exemplo do AWS CloudFormation.

MySNSTopic está configurado para publicar dois endpoints inscritos, que são duas filas do Amazon SQS(MyQueue1 e MyQueue2). MyPublishTopicGroup é um grupo do IAM cujos membros têm permissão parapublicar no MySNSTopic usando a ação de API Publish ou o comando sns-publish. O modelo cria osusuários do IAM MyQueueUser e MyPublishUser e oferece a eles perfis de login e chaves de acesso. Ousuário que cria uma pilha com esse modelo especifica as senhas para os perfis de login como parâmetrosde entrada. O modelo cria chaves de acesso para os dois usuários do IAM com MyQueueUserKey eMyPublishUserKey. AddUserToMyPublishTopicGroup adiciona MyPublishUser ao MyPublishTopicGrouppara que o usuário tenha as permissões atribuídas ao grupo.

MyRDMessageQueueGroup é um grupo do IAM cujos membros têm permissão para ler e excluirmensagens das duas filas do Amazon SQS usando as ações de API ReceiveMessage e DeleteMessage.AddUserToMyQueueGroup adiciona MyQueueUser ao MyRDMessageQueueGroup para que o usuáriotenha as permissões atribuídas ao grupo. MyQueuePolicy concede permissão para MySNSTopic publicarsuas notificações nas duas filas.

{ "AWSTemplateFormatVersion":"2010-09-09",

"Description":"This Template creates an Amazon SNS topic that can send messages to two Amazon SQS queues with appropriate permissions for one IAM user to publish to the

Versão da API 2010-03-31116

Page 124: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorUso de um modelo do &CFN para definir

tópicos e filas dentro de uma conta da AWS

topic and another to read messages from the queues. MySNSTopic is set up to publish to two subscribed endpoints, which are two Amazon SQS queues (MyQueue1 and MyQueue2). MyPublishUser is an IAM user that can publish to MySNSTopic using the Publish API. MyTopicPolicy assigns that permission to MyPublishUser. MyQueueUser is an IAM user that can read messages from the two Amazon SQS queues. MyQueuePolicy assigns those permissions to MyQueueUser. It also assigns permission for MySNSTopic to publish its notifications to the two queues. The template creates access keys for the two IAM users with MyPublishUserKey and MyQueueUserKey. Note that you will be billed for the AWS resources used if you create a stack from this template.",

"Parameters":{ "MyPublishUserPassword":{ "NoEcho":"true", "Type":"String", "Description":"Password for the IAM user MyPublishUser", "MinLength":"1", "MaxLength":"41", "AllowedPattern":"[a-zA-Z0-9]*", "ConstraintDescription":"must contain only alphanumeric characters." }, "MyQueueUserPassword":{ "NoEcho":"true", "Type":"String", "Description":"Password for the IAM user MyQueueUser", "MinLength":"1", "MaxLength":"41", "AllowedPattern":"[a-zA-Z0-9]*", "ConstraintDescription":"must contain only alphanumeric characters." } },

"Resources":{ "MySNSTopic":{ "Type":"AWS::SNS::Topic", "Properties":{ "Subscription":[ { "Endpoint":{"Fn::GetAtt":["MyQueue1","Arn"]}, "Protocol":"sqs" }, { "Endpoint":{"Fn::GetAtt":["MyQueue2","Arn"]}, "Protocol":"sqs" } ] } }, "MyQueue1":{ "Type":"AWS::SQS::Queue" }, "MyQueue2":{ "Type":"AWS::SQS::Queue" }, "MyPublishUser":{ "Type":"AWS::IAM::User", "Properties":{ "LoginProfile":{ "Password":{"Ref":"MyPublishUserPassword"} } } }, "MyPublishUserKey":{ "Type":"AWS::IAM::AccessKey", "Properties":{ "UserName":{"Ref":"MyPublishUser"}

Versão da API 2010-03-31117

Page 125: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorUso de um modelo do &CFN para definir

tópicos e filas dentro de uma conta da AWS

} }, "MyPublishTopicGroup":{ "Type":"AWS::IAM::Group", "Properties":{ "Policies":[ { "PolicyName":"MyTopicGroupPolicy", "PolicyDocument":{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "sns:Publish" ], "Resource":{"Ref":"MySNSTopic"} } ]} } ] } }, "AddUserToMyPublishTopicGroup":{ "Type":"AWS::IAM::UserToGroupAddition", "Properties":{ "GroupName":{"Ref":"MyPublishTopicGroup"}, "Users":[{"Ref":"MyPublishUser"}] } }, "MyQueueUser":{ "Type":"AWS::IAM::User", "Properties":{ "LoginProfile":{ "Password":{"Ref":"MyQueueUserPassword"} } } }, "MyQueueUserKey":{ "Type":"AWS::IAM::AccessKey", "Properties":{ "UserName":{"Ref":"MyQueueUser"} } }, "MyRDMessageQueueGroup":{ "Type":"AWS::IAM::Group", "Properties":{ "Policies":[ { "PolicyName":"MyQueueGroupPolicy", "PolicyDocument":{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "sqs:DeleteMessage", "sqs:ReceiveMessage" ], "Resource":[ {"Fn::GetAtt":["MyQueue1","Arn"]}, {"Fn::GetAtt":["MyQueue2","Arn"]} ] } ]} }

Versão da API 2010-03-31118

Page 126: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorUso de um modelo do &CFN para definir

tópicos e filas dentro de uma conta da AWS

] } }, "AddUserToMyQueueGroup":{ "Type":"AWS::IAM::UserToGroupAddition", "Properties":{ "GroupName":{"Ref":"MyRDMessageQueueGroup"}, "Users":[{"Ref":"MyQueueUser"}] } }, "MyQueuePolicy":{ "Type":"AWS::SQS::QueuePolicy", "Properties":{ "PolicyDocument":{ "Version":"2012-10-17", "Id":"MyQueuePolicy", "Statement":[ { "Sid":"Allow-SendMessage-To-Both-Queues-From-SNS-Topic", "Effect":"Allow", "Principal":"*", "Action":["sqs:SendMessage"], "Resource":"*", "Condition":{ "ArnEquals":{ "aws:SourceArn":{"Ref":"MySNSTopic"} } } } ] }, "Queues":[{"Ref":"MyQueue1"},{"Ref":"MyQueue2"}] } } }, "Outputs":{ "MySNSTopicTopicARN":{ "Value":{"Ref":"MySNSTopic"} }, "MyQueue1Info":{ "Value":{"Fn::Join":[ " ", [ "ARN:", {"Fn::GetAtt":["MyQueue1","Arn"]}, "URL:", {"Ref":"MyQueue1"} ] ]} }, "MyQueue2Info":{ "Value":{"Fn::Join":[ " ", [ "ARN:", {"Fn::GetAtt":["MyQueue2","Arn"]}, "URL:", {"Ref":"MyQueue2"} ] ]} }, "MyPublishUserInfo":{ "Value":{"Fn::Join":[ " ", [ "ARN:",

Versão da API 2010-03-31119

Page 127: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorUso de um modelo do &CFN para definir

tópicos e filas dentro de uma conta da AWS

{"Fn::GetAtt":["MyPublishUser","Arn"]}, "Access Key:", {"Ref":"MyPublishUserKey"}, "Secret Key:", {"Fn::GetAtt":["MyPublishUserKey","SecretAccessKey"]} ] ]} }, "MyQueueUserInfo":{ "Value":{"Fn::Join":[ " ", [ "ARN:", {"Fn::GetAtt":["MyQueueUser","Arn"]}, "Access Key:", {"Ref":"MyQueueUserKey"}, "Secret Key:", {"Fn::GetAtt":["MyQueueUserKey","SecretAccessKey"]} ] ]} } }}

Versão da API 2010-03-31120

Page 128: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorDefinição de preferências

Envio de mensagens SMS com oAmazon SNS

Você pode usar o Amazon SNS para enviar mensagens de texto ou mensagens SMS paradispositivos habilitados para SMS. Você pode enviar uma mensagem diretamente para um número detelefone (p. 124), ou enviar uma mensagem para vários números de telefone (p. 127) de uma só vezinscrevendo esses números em um tópico e enviando sua mensagem para o tópico.

Você pode definir as preferências de SMS (p. 121) para sua conta da AWS para ajustar suas entregas deSMS de acordo com seus casos de uso e orçamento. Por exemplo, você pode escolher se as mensagenssão otimizadas para custo ou entrega confiável. Você também pode especificar os limites de gastos paraentregas de mensagens individuais e limites de gastos mensais para a sua conta da AWS.

Quando exigido pelas leis e regulamentos locais (como os Estados Unidos e Canadá), os destinatáriosde SMS podem cancelar a recepção (p. 136), o que significa que eles podem optar por interrompero recebimento de mensagens SMS de sua conta da AWS. Depois que um destinatário cancela orecebimento, você pode, com limitações, incluir o número de telefone para retomar o envio de mensagenspara ele.

O Amazon SNS é compatível com sistemas de mensagens SMS em várias regiões, e você pode enviarmensagens para mais de 200 países e regiões. Para obter mais informações, consulte Regiões e paísescompatíveis (p. 141).

Tópicos• Definição de preferências de mensagens SMS (p. 121)• Envio de uma mensagem SMS (p. 124)• Envio de uma mensagem SMS para vários números de telefone (p. 127)• Monitoramento de atividade de SMS (p. 131)• Gerenciamento de inscrições de números de telefone e SMS (p. 136)• Reservar um código simplificado dedicado para mensagens SMS (p. 140)• Regiões e países compatíveis (p. 141)

Definição de preferências de mensagens SMSUse o Amazon SNS para especificar as preferências para o uso de mensagens SMS, por exemplo, comosuas entregas serão otimizadas (para fins de custo ou confiabilidade), o limite de gastos mensais, como asentregas de mensagens serão registradas e a inscrição em relatórios diários de uso de SMS.

Essas preferências entrarão em vigor para cada mensagem SMS que você enviar de sua conta, mas serápossível substituir algumas delas quando enviar uma mensagem individual. Para obter mais informações,consulte Envio de uma mensagem SMS (p. 124).

Tópicos• Definição de preferências (console) (p. 122)

Versão da API 2010-03-31121

Page 129: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorDefinição de preferências (console)

• Definição de Preferências (AWS SDKs) (p. 123)

Definição de preferências (console)1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://

console.aws.amazon.com/sns/v2/home.2. No menu do console, defina a seleção de região para uma região que ofereça suporte a mensagens

SMS (p. 141).3. No painel de navegação, escolha Mensagens de texto (SMS).4. Na página Mensagens de texto (SMS), escolha Gerenciar preferências de mensagens de texto.5. Na página Preferências de mensagens de texto, para Tipo de mensagem padrão, selecione o tipo de

mensagem SMS que você normalmente envia:

• Promocional (padrão) – mensagens sem urgência, como mensagens de marketing. Amazon SNSotimiza a entrega de mensagens para gerar o custo mais baixo.

• Transacional – mensagens urgentes que oferecem suporte para transações do cliente, comosenhas únicas para autenticação multifator. Amazon SNS otimiza a entrega de mensagens paragerar a mais alta confiabilidade.

É possível substituir essa configuração ao enviar uma mensagem.

Para obter informações sobre a definição de preços para mensagens promocionais e transacionais,consulte Global SMS Pricing.

6. Para Limite de gastos da conta, digite a quantidade máxima em dólares americanos (USD) que vocêdeseja gastar em mensagens SMS a cada mês. Quando Amazon SNS determina que enviar umamensagem SMS pode gerar um custo que ultrapassaria o limite de gastos para o mês, o Amazon SNSinterrompe a publicação de mensagens SMS em poucos minutos.

Important

Como Amazon SNS é um sistema distribuído, ele interromperá o envio de mensagens SMSem um intervalo de minutos antes que o limite de gastos seja ultrapassado. Durante esseintervalo, se você continuar a enviar mensagens SMS, poderá gerar custos que ultrapassemo limite.

Por padrão, o limite definido é 1,00 USD. Se quiser aumentar o limite, envie um caso de mensagemde texto SNS com o AWS Support. Em New limit value, informe o limite de gastos mensal desejado.No campo Use Case Description, explique que você está solicitando um aumento de limite de gastosmensal de SMS. Normalmente, o AWS Support processa seu caso em 2 dias úteis. Dependendo dolimite de gastos solicitado e da complexidade do seu caso, o AWS Support pode precisar de 3 a 5 diasa mais para garantir que sua solicitação pode ser processada.

7. Em Funções do IAM para CloudWatch Logs, crie uma função do IAM que permite ao Amazon SNSgravar logs para as entregas de SMS em CloudWatch Logs:

a. Selecione Criar função do IAM.b. Na página SNS está solicitando permissão para usar recursos em sua conta, escolha Permitir.

8. Para Percentual de sucesso padrão de amostragem, especifique o percentual de entregas bem-sucedidas de SMS para as quais o Amazon SNS gravará os logs do CloudWatch Logs. Por exemplo,para gravar logs somente para entregas com falha, defina esse valor como 0. Para gravar logspara 10% de suas entregas bem-sucedidas, defina o valor como 10. Se você não especificar umaporcentagem, Amazon SNS grava logs para todas as entregas bem-sucedidas.

9. Para ID do remetente padrão, digite um ID personalizado que tenha até 11 caracteres alfanuméricossem espaços e incluindo, pelo menos, uma letra. O ID do remetente é exibido como o remetente da

Versão da API 2010-03-31122

Page 130: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorDefinição de Preferências (AWS SDKs)

mensagem no dispositivo receptor. Por exemplo, é possível usar a marca de sua empresa para tornara origem da mensagem mais fácil de reconhecer.

O suporte a IDs de remetentes varia de acordo com o país ou a região. Por exemplo, as mensagensenviadas para os números de telefone dos EUA não exibirão o ID do remetente. Para saberquais países e regiões oferecem suporte a IDs de remetentes, consulte Regiões e paísescompatíveis (p. 141).

Se você não especificar um ID do remetente, a mensagem exibirá um código longo como o ID doremetente nos países e regiões compatíveis. Para países e regiões que exigem um ID do remetentealfabético, a mensagem exibirá AVISO como o ID do remetente.

É possível substituir essa configuração ao enviar uma mensagem.10. Para Armazenamento de relatórios, digite o nome do bucket do Amazon S3 que receberá relatórios

diários de uso de SMS do Amazon SNS. Amazon SNS não cria diariamente relatórios de uso, amenos que você especifique um bucket do Amazon S3 para recebê-los. Para obter mais informações,consulte Exibição de Relatórios diários de uso de SMS (p. 134).

11. Escolha Atualizar preferências.

Definição de Preferências (AWS SDKs)Para configurar suas preferências de SMS usando AWS SDK, use a ação no SDK que corresponde àsolicitação SetSMSAttributes na API do Amazon SNS. Com essa solicitação, você atribui valores paraos diferentes atributos de SMS, como seu limite de gasto mensal e seu tipo de SMS padrão (promocionalou transacional). Para todos os atributos de SMS, consulte SetSMSAttributes no Amazon SimpleNotification Service API Reference.

Definição de Preferências (AWS SDK for Java)O exemplo a seguir usa o método setSMSAttributes da classe AmazonSNSClient para definir valorespara os diferentes nomes de atributos:

public static void main(String[] args) { AmazonSNS snsClient = AmazonSNSClientBuilder.defaultClient(); setDefaultSmsAttributes(snsClient);}

public static void setDefaultSmsAttributes(AmazonSNSClient snsClient) { SetSMSAttributesRequest setRequest = new SetSMSAttributesRequest() .addAttributesEntry("DefaultSenderID", "mySenderID") .addAttributesEntry("MonthlySpendLimit", "1") .addAttributesEntry("DeliveryStatusIAMRole", "arn:aws:iam::123456789012:role/mySnsRole") .addAttributesEntry("DeliveryStatusSuccessSamplingRate", "10") .addAttributesEntry("DefaultSMSType", "Transactional") .addAttributesEntry("UsageReportS3Bucket", "sns-sms-daily-usage"); snsClient.setSMSAttributes(setRequest); Map<String, String> myAttributes = snsClient.getSMSAttributes(new GetSMSAttributesRequest()) .getAttributes(); System.out.println("My SMS attributes:"); for (String key : myAttributes.keySet()) { System.out.println(key + " = " + myAttributes.get(key)); }}

Este exemplo define o valor 1,00 USD para o atributo MonthlySpendLimit. Por padrão, esse é o valormáximo permitido pelo Amazon SNS. Se quiser aumentar o limite, envie um caso de mensagem de texto

Versão da API 2010-03-31123

Page 131: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEnvio de uma mensagem

SNS com o AWS Support. Em New limit value, informe o limite de gastos mensal desejado. No campoUse Case Description, explique que você está solicitando um aumento de limite de gastos mensal deSMS. Normalmente, o AWS Support processa seu caso em 2 dias úteis. Dependendo do limite de gastossolicitado e da complexidade do seu caso, o AWS Support pode precisar de 3 a 5 dias a mais para garantirque sua solicitação pode ser processada.

Para verificar se os atributos foram definidos corretamente, o exemplo imprime o resultado do métodogetSMSAttributes. Ao executar esse exemplo, os atributos são exibidos na janela de resultados doconsole do IDE:

My SMS attributes:DeliveryStatusSuccessSamplingRate = 10UsageReportS3Bucket = sns-sms-daily-usageDefaultSMSType = TransactionalDeliveryStatusIAMRole = arn:aws:iam::123456789012:role/mySnsRoleMonthlySpendLimit = 1DefaultSenderID = mySenderID

Envio de uma mensagem SMSAmazon SNS pode ser usado para enviar mensagens SMS para dispositivos habilitados para SMS. Épossível publicar mensagens diretamente nos números de telefone desses dispositivos, sem necessidadede inscrever os números de telefone em um tópico do Amazon SNS.

A inscrição de números de telefone para um tópico ainda pode ser útil se você deseja publicar cadamensagem em vários números de telefone de uma só vez. Para obter etapas sobre como publicaruma mensagem SMS em um tópico, consulte Envio de uma mensagem SMS para vários números detelefone (p. 127).

Ao enviar uma mensagem, é possível controlar se a mensagem é otimizada para custos ou confiabilidadede entrega, e especificar um ID de remetente. A mensagem for enviada programaticamente usando a APIdo Amazon SNS ou AWS SDKs, você pode especificar um preço máximo para a entrega de mensagens.

Cada mensagem SMS pode ter até 140 bytes, e o limite de caracteres depende do esquema decodificação. Por exemplo, uma mensagem SMS pode incluir:

• 160 caracteres GSM• 140 caracteres ASCII• 70 caracteres UCS-2

Se você publicar uma mensagem que exceda o limite de tamanho, o Amazon SNS enviará o texto comovárias mensagens, cada uma delas respeitando o limite de caracteres. As mensagens não são cortadasno meio de uma palavra, mas dentro dos limites de cada palavra. O limite do tamanho total de uma únicaação de publicação de SMS é de 1.600 bytes.

Ao enviar uma mensagem SMS, especifique o número de telefone usando o formato E.164. E.164 é umpadrão para a estrutura de número de telefone usada para telecomunicações internacionais. Númerosde telefone que seguem esse formato podem ter um máximo de 15 dígitos, e eles são prefixados com ocaractere de mais (+) e o código do país. Por exemplo, um número de telefone dos EUA no formato E.164seria exibido como +1XXX5550100.

Tópicos• Envio de mensagem (console) (p. 125)• Envio de uma mensagem (AWS SDKs) (p. 125)

Versão da API 2010-03-31124

Page 132: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEnvio de mensagem (console)

Envio de mensagem (console)1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://

console.aws.amazon.com/sns/v2/home.2. No menu do console, defina a seleção de região para uma região que ofereça suporte a mensagens

SMS (p. 141).3. No painel de navegação, escolha Mensagens de texto (SMS).4. Na página Mensagens de texto (SMS), escolha Enviar uma mensagem de texto (SMS). A janela

Enviar mensagem de texto (SMS) é aberta.5. Em Tipo de mensagem, escolha uma das seguintes opções:

• Promocional – mensagens sem urgência, como mensagens de marketing. Amazon SNS otimiza aentrega de mensagens para gerar o custo mais baixo.

• Transacional – mensagens urgentes que oferecem suporte para transações do cliente, comosenhas únicas para autenticação multifator. Amazon SNS otimiza a entrega de mensagens paragerar a mais alta confiabilidade.

Essa configuração no nível de mensagem substitui o tipo de mensagem padrão que você define napágina Preferências de mensagens de texto.

Para obter informações sobre a definição de preços para mensagens promocionais e transacionais,consulte Global SMS Pricing.

6. Em Número, digite o número de telefone para o qual você deseja enviar a mensagem.7. Em Mensagem, digite a mensagem a ser enviada.8. (Opcional) Em ID do remetente, digite um ID personalizado que tenha até 11 caracteres alfanuméricos

sem espaços e incluindo, pelo menos, uma letra. O ID do remetente é exibido como o remetente damensagem no dispositivo receptor. Por exemplo, é possível usar a marca de sua empresa para tornara origem da mensagem mais fácil de reconhecer.

O suporte a IDs de remetentes varia de acordo com o país e/ou a região. Por exemplo, asmensagens enviadas para os números de telefone dos EUA não exibirão o ID do remetente. Parasaber quais países e regiões oferecem suporte a IDs de remetentes, consulte Regiões e paísescompatíveis (p. 141).

Se você não especificar um ID do remetente, a mensagem exibirá um código longo como o ID doremetente nos países ou regiões compatíveis. Para países e regiões que exigem um ID do remetentealfabético, a mensagem exibirá AVISO como o ID do remetente.

Esse ID do remetente no nível de mensagem substitui o ID de remetente padrão, que você define napágina Preferências de mensagens de texto.

9. Escolha Enviar mensagem de texto.

Envio de uma mensagem (AWS SDKs)Para enviar uma mensagem SMS empregando um dos SDKs da AWS, use a ação naquele SDK quecorresponder à solicitação Publish na API do Amazon SNS. Com essa solicitação, você pode enviaruma mensagem SMS diretamente para um número de telefone. Você também pode usar o parâmetroMessageAttributes para definir valores para os seguintes nomes de atributos:

AWS.SNS.SMS.SenderID

Um ID personalizado que contém até 11 caracteres alfanuméricos, incluindo pelo menos uma letra esem espaços. O ID do remetente é exibido como o remetente da mensagem no dispositivo receptor.

Versão da API 2010-03-31125

Page 133: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEnvio de uma mensagem (AWS SDKs)

Por exemplo, é possível usar a marca de sua empresa para tornar a origem da mensagem mais fácilde reconhecer.

O suporte a IDs de remetentes varia de acordo com o país e/ou a região. Por exemplo, asmensagens enviadas para os números de telefone dos EUA não exibirão o ID do remetente. Parasaber quais países e regiões oferecem suporte a IDs de remetentes, consulte Regiões e paísescompatíveis (p. 141).

Se você não especificar um ID do remetente, a mensagem exibirá um código longo como o ID doremetente nos países e regiões compatíveis. Para países ou regiões que exigem um ID do remetentealfabético, a mensagem exibirá AVISO como o ID do remetente.

Esse atributo de mensagem substitui o atributo de contas DefaultSenderID que você define usandoa solicitação SetSMSAttributes.

AWS.SNS.SMS.MaxPrice

A quantidade máxima em dólares americanos (USD) que você está disposto a gastar para enviar amensagem SMS. Amazon SNS não enviará a mensagem se isso gerar um custo que ultrapasse opreço máximo.

Esse atributo não tem efeito se os custos de SMS do mês atual já ultrapassaram o limite definido parao atributo MonthlySpendLimit, que você define usando a solicitação SetSMSAttributes.

Se você está enviando a mensagem para um tópico do Amazon SNS, o preço máximo se aplica acada entrega de mensagem para cada número de telefone inscrito no tópico.

AWS.SNS.SMS.SMSType

O tipo de mensagem que você está enviando:• Promotional (padrão) – Mensagens sem urgência, como mensagens de marketing. Amazon SNS

otimiza a entrega de mensagens para gerar o custo mais baixo.• Transactional – mensagens urgentes que oferecem suporte a transações do cliente, como

senhas únicas para autenticação multifator. Amazon SNS otimiza a entrega de mensagens paragerar a mais alta confiabilidade.

Esse atributo de mensagem substitui o atributo de contas DefaultSMSType que você define usandoa solicitação SetSMSAttributes.

(Opcional) Definição de atributos de mensagem (AWS SDK forJava)Você define valores de atributo de mensagem construindo um mapa que associa as chaves de atributoaos objetos MessageAttributeValue. Cada objeto MessageAttributeValue é inicializado com umvalor de atributo, e cada objeto declara o tipo de dados para o valor. O exemplo a seguir define o ID doremetente como “mySenderID” o preço máximo como 0,50 USD e o tipo de SMS como promocional:

Map<String, MessageAttributeValue> smsAttributes = new HashMap<String, MessageAttributeValue>();smsAttributes.put("AWS.SNS.SMS.SenderID", new MessageAttributeValue() .withStringValue("mySenderID") //The sender ID shown on the device. .withDataType("String"));smsAttributes.put("AWS.SNS.SMS.MaxPrice", new MessageAttributeValue() .withStringValue("0.50") //Sets the max price to 0.50 USD. .withDataType("Number"));smsAttributes.put("AWS.SNS.SMS.SMSType", new MessageAttributeValue() .withStringValue("Promotional") //Sets the type to promotional. .withDataType("String"));

Versão da API 2010-03-31126

Page 134: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEnvio de uma mensagem para vários números de telefone

Ao enviar uma mensagem SMS, é possível aplicar os atributos ao objeto PublishRequest.

Envio de mensagem (AWS SDK for Java)O exemplo a seguir usa o método publish da classe AmazonSNSClient para enviar uma mensagemdiretamente para um número de telefone:

public static void main(String[] args) { AmazonSNS snsClient = AmazonSNSClientBuilder.defaultClient(); String message = "My SMS message"; String phoneNumber = "+1XXX5550100"; Map<String, MessageAttributeValue> smsAttributes = new HashMap<String, MessageAttributeValue>(); //<set SMS attributes> sendSMSMessage(snsClient, message, phoneNumber, smsAttributes);}

public static void sendSMSMessage(AmazonSNSClient snsClient, String message, String phoneNumber, Map<String, MessageAttributeValue> smsAttributes) { PublishResult result = snsClient.publish(new PublishRequest() .withMessage(message) .withPhoneNumber(phoneNumber) .withMessageAttributes(smsAttributes)); System.out.println(result); // Prints the message ID.}

Ao executar esse exemplo, o ID de mensagem é exibido na janela de resultados do console do IDE:

{MessageId: 9b888f80-15f7-5c30-81a2-c4511a3f5229}

Envio de uma mensagem SMS para váriosnúmeros de telefone

É possível publicar uma única mensagem SMS em vários números de telefone de uma só vez inscrevendoesses números de telefone em um tópico. Um tópico é um canal de comunicação para o qual vocêpode adicionar inscritos e publicar mensagens para todos esses inscritos. Um inscrito receberá todas asmensagens publicadas no tópico até que você cancele a inscrição ou que ele cancele o recebimento demensagens SMS de sua conta.

Tópicos• Envio de uma mensagem para um tópico (console) (p. 127)• Envio de uma mensagem para um tópico (AWS SDKs) (p. 128)

Envio de uma mensagem para um tópico (console)Para criar um tópico

Realize as seguintes etapas se você ainda não tiver um tópico para o qual deseja enviar mensagens SMS.

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No menu do console, defina a seleção de região para uma região que ofereça suporte a mensagensSMS (p. 141).

Versão da API 2010-03-31127

Page 135: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEnvio de uma mensagem para um tópico (AWS SDKs)

3. No painel de navegação, escolha Tópicos.4. Na página Topics, escolha Create new topic. A janela Criar novo tópico é exibida.5. Para Nome do tópico, digite um nome.6. (Opcional) Para Nome de exibição, digite um prefixo personalizado para suas mensagens SMS.

Quando você envia uma mensagem para o tópico, Amazon SNS acrescenta o nome de exibiçãoseguido por uma seta para a direita (>) e um espaço. Os nomes de exibição não fazem distinção entremaiúsculas e minúsculas e Amazon SNS converte os nomes de exibição para caracteres maiúsculos.Por exemplo, se o nome de exibição de um tópico é MyTopic e a mensagem é Hello World!, amensagem será exibida como:

MYTOPIC> Hello World!

7. Escolha Create topic. O nome do tópico e o nome de recurso da Amazon (ARN) são adicionados àtabela na página Tópicos.

Para adicionar inscrições de SMS

As inscrições permitem que você envie uma mensagem SMS para vários destinatários por meio dapublicação da mensagem somente uma vez no tópico.

1. Na página Tópicos, escolha o ARN do tópico.2. Na página Detalhes do tópico, selecione Criar inscrição.3. Para Protocolo, selecione SMS.4. Para Endpoint, digite o número de telefone para o qual você deseja enviar as mensagens.5. Escolha Create Subscription. As informações de inscrição são adicionadas à tabela Inscrições.

É possível repetir essas etapas para adicionar mais números de telefone e adicionar outros tipos deinscrições, como e-mail.

Para enviar a mensagem

Quando você publicar uma mensagem em um tópico, Amazon SNS tenta entregar essa mensagem paracada número de telefone inscrito no tópico.

1. Na página Detalhes do tópico, selecione Publicar em um tópico.2. Na página Publicar uma mensagem, em Assunto, deixe o campo em branco, a menos que o tópico

contenha inscrições de e-mail e você queira publicar nas inscrições por e-mail e por SMS. O texto quevocê digita em Assunto é usado como linha de assunto do e-mail.

3. Em Mensagem, digite uma mensagem.

Para obter mais informações sobre os limites de tamanho das mensagens SMS, consulte Envio deuma mensagem SMS (p. 124).

Se o tópico tem um nome de exibição, Amazon SNS adiciona-o à mensagem, o que aumenta otamanho da mensagem. O tamanho do nome de exibição é o número de caracteres no nome, maisdois caracteres para a seta (>) e o espaço adicionado pelo Amazon SNS.

4. Escolha Publicar mensagem. Amazon SNS envia a mensagem SMS e exibe uma mensagem desucesso.

Envio de uma mensagem para um tópico (AWS SDKs)Para enviar uma mensagem SMS para um tópico usando AWS SDK, use as ações no SDK quecorrespondem às seguintes solicitações na API do Amazon SNS:

Versão da API 2010-03-31128

Page 136: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEnvio de uma mensagem para um tópico (AWS SDKs)

CreateTopic

Cria um tópico no qual você pode inscrever números de telefone e publicar mensagens para todos osnúmeros de telefone de uma só vez, publicando no tópico.

Subscribe

Inscreve um número de telefone em um tópico.Publish

Envia uma mensagem para cada número de telefone inscrito em um tópico.

Você pode usar o parâmetro MessageAttributes para definir vários atributos para a mensagem(por exemplo, o preço máximo). Para obter mais informações, consulte Envio de uma mensagem(AWS SDKs) (p. 125).

Criação de um tópico (AWS SDK for Java)O exemplo a seguir usa o método createTopic da classe AmazonSNSClient para criar um tópicochamado “mySNSTopic”:

public static void main(String[] args) { AmazonSNS snsClient = AmazonSNSClientBuilder.defaultClient(); String topicArn = createSNSTopic(snsClient);}

public static String createSNSTopic(AmazonSNSClient snsClient) { CreateTopicRequest createTopic = new CreateTopicRequest("mySNSTopic"); CreateTopicResult result = snsClient.createTopic(createTopic); System.out.println("Create topic request: " + snsClient.getCachedResponseMetadata(createTopic)); System.out.println("Create topic result: " + result); return result.getTopicArn();}

O exemplo usa o método getCachedResponseMetadata para obter o ID de solicitação.

Ao executar esse exemplo, o seguinte resultado é exibido na janela de resultados do console do IDE:

{TopicArn: arn:aws:sns:us-east-1:123456789012:mySNSTopic}CreateTopicRequest - {AWS_REQUEST_ID=93f7fc90-f131-5ca3-ab18-b741fef918b5}

Adição de uma inscrição SMS ao tópico (AWS SDK for Java)O exemplo a seguir usa o método subscribe da classe AmazonSNSClient para adicionar uma inscriçãoa um tópico:

public static void main(String[] args) { AmazonSNS snsClient = AmazonSNSClientBuilder.defaultClient(); String phoneNumber = "+1XXX5550100"; String topicArn = createSNSTopic(snsClient); subscribeToTopic(snsClient, topicArn, "sms", phoneNumber);}

//<create SNS topic>

public static void subscribeToTopic(AmazonSNSClient snsClient, String topicArn, String protocol, String endpoint) { SubscribeRequest subscribe = new SubscribeRequest(topicArn, protocol,

Versão da API 2010-03-31129

Page 137: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEnvio de uma mensagem para um tópico (AWS SDKs)

endpoint); SubscribeResult subscribeResult = snsClient.subscribe(subscribe); System.out.println("Subscribe request: " + snsClient.getCachedResponseMetadata(subscribe)); System.out.println("Subscribe result: " + subscribeResult);}

Esse exemplo cria o objeto subscribeRequest e o envia com os seguintes argumentos:

• topicArn – o Amazon Resource Name (ARN – Nome de recurso da Amazon) do tópico ao qual vocêestá adicionando uma inscrição.

• "sms" – a opção de protocolo para uma inscrição de SMS.• endpoint – o número de telefone que você está inscrevendo no tópico.

O exemplo usa o método getCachedResponseMetadata para obter o ID de solicitação da solicitação deinscrição.

Ao executar esse exemplo, o ID da solicitação de inscrição é exibido na janela do console do IDE:

SubscribeRequest - {AWS_REQUEST_ID=f38fe925-8093-5bd4-9c19-a7c7625de38c}

(Opcional) Definição de atributos de mensagem (AWS SDK forJava)Você define valores de atributo de mensagem construindo um mapa que associa as chaves de atributoaos objetos MessageAttributeValue. Cada objeto MessageAttributeValue é inicializado com umvalor de atributo, e cada objeto declara o tipo de dados para o valor. O exemplo a seguir define o ID doremetente como “mySenderID” o preço máximo como 0,50 USD e o tipo de SMS como promocional:

Map<String, MessageAttributeValue> smsAttributes = new HashMap<String, MessageAttributeValue>();smsAttributes.put("AWS.SNS.SMS.SenderID", new MessageAttributeValue() .withStringValue("mySenderID") //The sender ID shown on the device. .withDataType("String"));smsAttributes.put("AWS.SNS.SMS.MaxPrice", new MessageAttributeValue() .withStringValue("0.50") //Sets the max price to 0.50 USD. .withDataType("Number"));smsAttributes.put("AWS.SNS.SMS.SMSType", new MessageAttributeValue() .withStringValue("Promotional") //Sets the type to promotional. .withDataType("String"));

Para obter mais informações sobre os atributos de mensagem, consulte Envio de uma mensagem (AWSSDKs) (p. 125)

Ao enviar uma mensagem SMS, é possível aplicar os atributos ao objeto PublishRequest.

Publicação de uma mensagem no tópico (AWS SDK for Java)O exemplo a seguir usa o método publish da classe AmazonSNSClient para publicar uma mensagemSMS em um tópico:

public static void main(String[] args) { AmazonSNS snsClient = AmazonSNSClientBuilder.defaultClient(); String message = "My SMS message"; Map<String, MessageAttributeValue> smsAttributes = new HashMap<String, MessageAttributeValue>(); //<set SMS attributes>

Versão da API 2010-03-31130

Page 138: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorMonitoramento de atividade de SMS

String topicArn = createSNSTopic(snsClient); //<subscribe to topic> sendSMSMessageToTopic(snsClient, topicArn, message, smsAttributes);}

//<create topic method>

//<subscribe to topic method>

public static void sendSMSMessageToTopic(AmazonSNSClient snsClient, String topicArn, String message, Map<String, MessageAttributeValue> smsAttributes) { PublishResult result = snsClient.publish(new PublishRequest() .withTopicArn(topicArn) .withMessage(message) .withMessageAttributes(smsAttributes)); System.out.println(result);}

Amazon SNS tentará entregar essa mensagem para cada número de telefone inscrito no tópico.

Este exemplo cria o objeto publishRequest ao passar o ARN do tópico e os argumentos da mensagem.O objeto publishResult captura o ID de mensagem do Amazon SNS retornado pelo Amazon SNS.

Ao executar esse exemplo, o ID de mensagem é exibido na janela de resultados do console do IDE:

{MessageId: 9b888f80-15f7-5c30-81a2-c4511a3f5229}

Monitoramento de atividade de SMSAo monitorar a atividade de SMS, é possível manter o controle dos números de telefone de destino, dasentregas bem-sucedidas ou com falha, dos motivos para falha, dos custos e outras informações. AmazonSNS ajuda resumindo estatísticas no console, enviando informações para o Amazon CloudWatch eenviando relatórios de uso diário de SMS para um bucket do Amazon S3 que você especificar.

Tópicos• Exibição de estatísticas de entrega de SMS (p. 131)• Exibição de métricas e logs do Amazon CloudWatch para entregas de SMS (p. 132)• Exibição de Relatórios diários de uso de SMS (p. 134)

Exibição de estatísticas de entrega de SMSVocê pode usar o console do Amazon SNS para exibir estatísticas sobre suas entregas recentes de SMS.

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No menu do console, defina a seleção de região para uma região que ofereça suporte a mensagensSMS (p. 141).

3. No painel de navegação, escolha Mensagens de texto (SMS).4. Na página Mensagens de texto (SMS), na seção Estatísticas da conta, veja os gráficos para suas

entregas de mensagens SMS promocionais e transacionais. Cada gráfico mostra os seguintes dadospara os 15 dias anteriores:

• Taxa de entrega (porcentagem de entregas bem-sucedidas)• Enviadas (número de tentativas de entrega)

Versão da API 2010-03-31131

Page 139: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorExibição de métricas e logs do CloudWatch

• Falhas (número de falhas na entrega)

Nessa página, você também pode selecionar o botão Uso para acessar o bucket do Amazon S3 emque você armazena seus relatórios diários de uso. Para obter mais informações, consulte Exibição deRelatórios diários de uso de SMS (p. 134).

Exibição de métricas e logs do Amazon CloudWatchpara entregas de SMSÉ possível usar Amazon CloudWatch e Amazon CloudWatch Logs para monitorar as entregas demensagens SMS.

Tópicos• Exibição de métricas do Amazon CloudWatch (p. 132)• Exibição do CloudWatch Logs (p. 132)• Exemplo de log para entrega de SMS bem-sucedida (p. 133)• Exemplo de log para entrega de SMS com falha (p. 133)• Motivos para falha de entrega de SMS (p. 133)

Exibição de métricas do Amazon CloudWatchAmazon SNS coleta automaticamente as métricas sobre suas entregas de mensagens SMS e as enviapara o Amazon CloudWatch. Você pode usar CloudWatch para monitorar essas métricas e criar alertaspara avisá-lo quando uma métrica ultrapassar um limite. Por exemplo, você pode monitorar as métricas doCloudWatch para saber a taxa de entrega de SMS e seus encargos de SMS acumulados no mês.

Para obter informações sobre o monitoramento das métricas do CloudWatch, a configuração de alertasdo CloudWatch e os tipos de métricas disponíveis, consulte Monitoramento do Amazon SNS com oCloudWatch (p. 196).

Exibição do CloudWatch LogsVocê pode coletar informações sobre entregas de mensagens SMS bem ou malsucedidas, permitindo queAmazon SNS grave dados no Amazon CloudWatch Logs. Para cada mensagem SMS que você enviar,Amazon SNS gravará um log que inclui o preço da mensagem, o status de sucesso ou falha, o motivo dafalha (se a mensagem falhou), o tempo de permanência da mensagem e outras informações.

Para habilitar CloudWatch Logs para suas mensagens SMS

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No menu do console, defina a seleção de região para uma região que ofereça suporte a mensagensSMS (p. 141).

3. No painel de navegação, escolha Mensagens de texto (SMS).4. Na página Mensagens de texto (SMS), escolha Gerenciar preferências de mensagens de texto.5. Na página Preferências de mensagens de texto, em Função do IAM para o CloudWatch Logs,

crie uma função do IAM que permite ao Amazon SNS gravar logs para as entregas de SMS emCloudWatch Logs:

a. Selecione Criar função do IAM.b. Na página SNS está solicitando permissão para usar recursos em sua conta, escolha Permitir.

Versão da API 2010-03-31132

Page 140: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorExibição de métricas e logs do CloudWatch

6. Para Percentual de sucesso padrão de amostragem, especifique o percentual de entregas bem-sucedidas de SMS para as quais o Amazon SNS gravará os logs do CloudWatch Logs. Por exemplo,para gravar logs somente para entregas com falha, defina esse valor como 0. Para gravar logspara 10% de suas entregas bem-sucedidas, defina o valor como 10. Se você não especificar umaporcentagem, Amazon SNS grava logs para todas as entregas bem-sucedidas.

7. Escolha Atualizar preferências.

Para obter mais informações sobre outras opções na página Preferências de mensagens de texto, consulteDefinição de preferências (console) (p. 122).

Exemplo de log para entrega de SMS bem-sucedidaO log de status de entrega para uma entrega de SMS bem-sucedida será parecido ao exemplo a seguir:

{ "notification": { "messageId": "34d9b400-c6dd-5444-820d-fbeb0f1f54cf", "timestamp": "2016-06-28 00:40:34.558" }, "delivery": { "phoneCarrier": "My Phone Carrier", "mnc": 270, "destination": "+1XXX5550100”, "priceInUSD": 0.00645, "smsType": "Transactional", "mcc": 310, "providerResponse": "Message has been accepted by phone carrier", "dwellTimeMs": 599, "dwellTimeMsUntilDeviceAck": 1344 }, "status": "SUCCESS"}

Exemplo de log para entrega de SMS com falhaO log de status de entrega para uma entrega de SMS com falha será parecido ao exemplo a seguir:

{ "notification": { "messageId": "1077257a-92f3-5ca3-bc97-6a915b310625", "timestamp": "2016-06-28 00:40:34.559" }, "delivery": { "mnc": 0, "destination": "+1XXX5550100”, "priceInUSD": 0.00645, "smsType": "Transactional", "mcc": 0, "providerResponse": "Unknown error attempting to reach phone", "dwellTimeMs": 1420, "dwellTimeMsUntilDeviceAck": 1692 }, "status": "FAILURE"}

Motivos para falha de entrega de SMSO motivo da falha é fornecido com o atributo providerResponse. As mensagens SMS podem não serentregues pelas seguintes razões:

Versão da API 2010-03-31133

Page 141: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorExibição de relatórios de uso

• Bloqueada como spam pela operadora de telefonia• O destino está na lista negra• Número de telefone inválido• O corpo da mensagem é inválido• A operadora de telefonia bloqueou essa mensagem• A operadora de telefonia está inacessível/indisponível no momento• O telefone bloqueou SMS• O telefone está na lista negra• O telefone está inacessível/indisponível no momento• O número de telefone solicitou o cancelamento do recebimento• Essa entrega excede o preço máximo• Erro desconhecido ao tentar entrar em contato com o telefone

Exibição de Relatórios diários de uso de SMSÉ possível monitorar suas entregas de SMS inscrevendo-se para relatórios diários de uso do AmazonSNS. A cada dia que você enviar pelo menos uma mensagem SMS, o Amazon SNS fornecerá um relatóriode uso como um arquivo CSV para um bucket do Amazon S3 que você especificar.

Tópicos• Informações sobre relatório de uso diário (p. 134)• Inscrição para relatórios de uso diário (p. 134)

Informações sobre relatório de uso diárioO relatório de uso inclui as seguintes informações para cada mensagem SMS que foi entregue comsucesso por sua conta:

• Hora em que a mensagem foi publicada (em UTC)• ID de mensagem• Número de telefone de destino• Tipo de mensagem• Status da entrega• Preço da mensagem (em USD)• Número da parte (uma mensagem é dividida em várias partes se for muito longa para uma única

mensagem)• Número total de partes

Inscrição para relatórios de uso diárioPara inscrever-se para relatórios de uso diário, você deve criar um bucket do Amazon S3 com aspermissões apropriadas.

Para criar um bucket do Amazon S3 para seus relatórios de uso diário

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon S3 em https://console.aws.amazon.com/s3/.

2. Escolha Criar bucket.

Versão da API 2010-03-31134

Page 142: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorExibição de relatórios de uso

3. Para Nome do bucket, digite um nome, como sns-sms-de-uso-cotidiano. Para obterinformações sobre convenções e restrições para nomes de bucket, consulte Rules for Bucket Namingno Guia do desenvolvedor do Amazon Simple Storage Service.

4. Escolha Criar.5. Na tabela Todos os buckets, selecione o bucket e escolha Propriedades.6. Na seção Permissões, escolha Adicionar política de bucket.7. Na janela Editor de política de bucket, forneça uma política que permita ao principal de

serviço Amazon SNS gravar no bucket. Para ver um exemplo, consulte Exemplo de política debucket (p. 135).

Se você usar a política de exemplo, lembre-se de substituir my-s3-bucket com o nome de seubucket.

8. Escolha Salvar.

Para inscrever-se para relatórios de uso diário

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No painel de navegação, escolha Mensagens de texto (SMS).3. Na página Mensagens de texto (SMS), escolha Gerenciar preferências de mensagens de texto.4. Na página Preferências de mensagens de texto, para Relatórios de armazenamento, digite o nome do

bucket do Amazon S3 que receberá os relatórios de uso diário de SMS.5. Escolha Atualizar preferências.

Para obter mais informações sobre outras opções na página Preferências de mensagens de texto, consulteDefinição de preferências (console) (p. 122).

Depois de inscrever-se em relatórios de uso diário, você pode visualizar os relatórios no console doAmazon S3. Também é possível acessar a página Mensagens de texto (SMS) no console do Amazon SNSe selecionar o botão Uso.

Exemplo de política de bucket

A política a seguir permite que o principal de serviço Amazon SNS execute as ações s3:PutObject es3:GetBucketLocation. Você pode usar esse exemplo ao criar um bucket do Amazon S3 para receberrelatórios de uso diário de SMS do Amazon SNS.

{ "Version": "2012-10-17", "Id": "sns-sms-daily-usage-policy", "Statement": [ { "Sid": "AllowPutObject", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-s3-bucket/*" }, { "Sid": "AllowGetBucketLocation", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" },

Versão da API 2010-03-31135

Page 143: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorGerenciamento de inscrições

"Action": "s3:GetBucketLocation", "Resource": "arn:aws:s3:::my-s3-bucket" } ]}

Exemplo de relatório de uso diárioDepois de inscrever-se para relatórios de uso diário, a cada dia, Amazon SNS coloca um arquivo CSV comos dados de uso no seguinte local:

<my-s3-bucket>/SMSUsageReports/<region>/YYYY/MM/DD/00x.csv.gz

Cada arquivo pode conter até 50.000 registros. Se os registros de um dia excederem esse limite, AmazonSNS adicionará vários arquivos.

A seguir, um exemplo de relatório:

PublishTimeUTC,MessageId,DestinationPhoneNumber,MessageType,DeliveryStatus,PriceInUSD,PartNumber,TotalParts2016-05-10T03:00:29.476Z,96a298ac-1458-4825-a7eb-7330e0720b72,1XXX5550100,Promotional,Message has been accepted by phone carrier,0.90084,1,12016-05-10T03:00:29.561Z,1e29d394-d7f4-4dc9-996e-26412032c344,1XXX5550100,Promotional,Message has been accepted by phone carrier,0.34322,1,12016-05-10T03:00:30.769Z,98ba941c-afc7-4c51-ba2c-56c6570a6c08,1XXX5550100,Transactional,Message has been accepted by phone carrier,0.27815,1,1. . .

Gerenciamento de inscrições de números detelefone e SMS

Amazon SNS oferece várias opções para gerenciar quem recebe mensagens SMS de sua conta. Comuma frequência limitada, você poderá incluir números de telefone que cancelaram o recebimento demensagens SMS de sua conta. Para interromper o envio de mensagens para inscrições de SMS, vocêpode remover as inscrições ou os tópicos que publicam neles.

Tópicos• Cancelamento do recebimento de mensagens SMS (p. 136)• Gerenciamento de números de telefone e inscrições (console) (p. 137)• Gerenciamento de números de telefone e inscrições (AWS SDKs) (p. 138)

Cancelamento do recebimento de mensagens SMSQuando exigido pelas leis e regulamentos locais (como nos Estados Unidos e Canadá), os destinatários deSMS podem usar seus dispositivos para cancelar a inscrição respondendo à mensagem com uma destasopções:

• ARRET (Francês)• CANCEL• END

Versão da API 2010-03-31136

Page 144: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorGerenciamento de números detelefone e inscrições (console)

• CANCELAR• CANCELAR• SAIR• REMOVER• STOP• TD• CANCELAR INSCRIÇÃO

Para cancelar o recebimento, o destinatário deve responder ao mesmo código longo ou simplificado usadopelo Amazon SNS para entregar a mensagem. Depois de cancelar a inscrição, o destinatário não receberámais mensagens SMS entregues de sua conta da AWS, a menos que você inclua o número de telefone.

Se o número de telefone estiver inscrito em um tópico do Amazon SNS, o cancelamento não removeráa inscrição, mas mensagens SMS apresentarão falha na entrega para essa inscrição, a menos que vocêinclua o número de telefone.

Gerenciamento de números de telefone e inscrições(console)É possível usar o console do Amazon SNS para controlar quais números de telefone recebem mensagensSMS de sua conta.

Inclusão de um número de telefone que cancelou a inscriçãoÉ possível ver quais números de telefone cancelaram o recebimento de mensagens SMS de sua conta, eincluí-los para retomar o envio de mensagens para eles.

Você pode incluir um número de telefone somente uma vez a cada 30 dias.

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No menu do console, defina a seleção de região para uma região que ofereça suporte a mensagensSMS (p. 141).

3. No painel de navegação, escolha Mensagens de texto (SMS).4. Na página Mensagens de texto (SMS), selecione Visualizar cancelamento de números de telefone. A

página Números de telefone cancelados exibe os números de telefones cancelados.5. Marque a caixa de seleção para o número de telefone que você deseja incluir e selecione Incluir. O

número de telefone não terá mais o recebimento cancelado e receberá mensagens SMS que vocêenviar a ele.

Exclusão de uma inscrição de SMSExclua uma inscrição de SMS para interromper o envio de mensagens SMS para aquele número detelefone quando você publicar nos tópicos.

1. No painel de navegação, escolha Subscriptions.2. Marque as caixas de seleção para as inscrições que você deseja excluir. Escolha Ações e escolha

Excluir inscrições.3. Na janela Delete , escolha Delete. Amazon SNS exclui a inscrição e exibe uma mensagem de

sucesso.

Versão da API 2010-03-31137

Page 145: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorGerenciamento de números de

telefone e inscrições (AWS SDKs)

Exclusão de um tópicoExclua um tópico quando você não desejar mais publicar mensagens em seus endpoints inscritos.

1. No painel de navegação, escolha Tópicos.2. Marque as caixas de seleção para os tópicos que você deseja excluir. Escolha Ações e escolha

Excluir tópicos.3. Na janela Delete , escolha Delete. Amazon SNS exclui o tópico e exibe uma mensagem de sucesso.

Gerenciamento de números de telefone e inscrições(AWS SDKs)É possível usar AWS SDKs para fazer solicitações programáticas para o Amazon SNS e gerenciar quaisnúmeros de telefone recebem mensagens SMS de sua conta.

Visualização de todos os números de telefone que cancelaram orecebimentoPara visualizar todos os números de telefone cancelados, envie uma solicitaçãoListPhoneNumbersOptedOut com a API do Amazon SNS. Por exemplo, usando AWS SDK for Java,você pode usar o método listPhoneNumbersOptedOut da classe AmazonSNSClient:

public static void main(String[] args) { AmazonSNSClient snsClient = new AmazonSNSClient(); listOptOut(snsClient);}

public static void listOptOut(AmazonSNSClient snsClient) { String nextToken = null; do { ListPhoneNumbersOptedOutResult result = snsClient .listPhoneNumbersOptedOut(new ListPhoneNumbersOptedOutRequest() .withNextToken(nextToken)); nextToken = result.getNextToken(); for (String phoneNum : result.getPhoneNumbers()) { System.out.println(phoneNum); } } while (nextToken != null);}

Amazon SNS retorna uma resposta paginada, de modo que esse exemplo repete a solicitação cada vezque Amazon SNS retorna o próximo token. Ao executar esse exemplo, ele exibe uma lista de todos osnúmeros de telefone que cancelaram o recebimento na janela de resultados do console do IDE.

Verificação do cancelamento de um número de telefonePara verificar se um número de telefone cancelou o recebimento, envie uma solicitaçãoCheckIfPhoneNumberIsOptedOut com a API do Amazon SNS. Por exemplo, usando AWS SDK forJava, você pode usar o método checkIfPhoneNumberIsOptedOut da classe AmazonSNSClient:

CheckIfPhoneNumberIsOptedOutRequest request = new CheckIfPhoneNumberIsOptedOutRequest().withPhoneNumber(phoneNumber);System.out.println(snsClient.checkIfPhoneNumberIsOptedOut(request));

Versão da API 2010-03-31138

Page 146: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorGerenciamento de números de

telefone e inscrições (AWS SDKs)

Ao executar esse exemplo, um resultado de verdadeiro ou falso é exibido na janela de resultados doconsole do IDE:

{IsOptedOut: false}

Inclusão de um número de telefone que cancelou a inscriçãoPara incluir um número de telefone que cancelou o recebimento, envie uma solicitaçãoOptInPhoneNumber com a API do Amazon SNS. Por exemplo, usando AWS SDK for Java, você podeusar o método optInPhoneNumber da classe AmazonSNSClient:

snsClient.optInPhoneNumber(new OptInPhoneNumberRequest().withPhoneNumber(phoneNumber));

Você pode incluir um número de telefone somente uma vez a cada 30 dias.

Exclusão de uma inscrição de SMSPara excluir uma inscrição de SMS de um tópico do Amazon SNS, obtenha o ARN da inscrição enviandouma solicitação ListSubscriptions com a API do Amazon SNS e, em seguida, informe o ARN em umasolicitação Unsubscribe.

Por exemplo, usando AWS SDK for Java, é possível obter o ARN da inscrição usando o métodolistSubscriptions da classe AmazonSNSClient:

ListSubscriptionsResult result = snsClient.listSubscriptions();for (Subscription sub : result.getSubscriptions()) { System.out.println(sub);}

Você pode excluir uma inscrição informando seu ARN como um argumento de string no métodounsubscribe:

snsClient.unsubscribe(subscriptionArn);

Exclusão de um tópicoPara excluir um tópico e todas as suas inscrições, obtenha o ARN do tópico enviando uma solicitaçãoListTopics com a API do Amazon SNS e, em seguida, informe o ARN em uma solicitaçãoDeleteTopic.

Por exemplo, usando AWS SDK for Java, é possível obter o ARN do tópico usando o método listTopicsda classe AmazonSNSClient:

ListTopicsResult result = snsClient.listTopics();for (Topic t : result.getTopics()) { System.out.println(t);}

Você pode excluir um tópico informando o ARN dele como um argumento de string no métododeleteTopic:

snsClient.deleteTopic(topicArn);

Versão da API 2010-03-31139

Page 147: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorReservar um código simplificado

Reservar um código simplificado dedicado paramensagens SMS

Para enviar mensagens SMS usando um código simplificado contínuo, reserve um código simplificadodedicado, o qual é atribuído à sua conta e fica disponível exclusivamente para você.

Um código simplificado é um número de 5 ou 6 dígitos que você pode usar para enviar mensagens SMSpara determinados destinos. Geralmente, os códigos simplificados são usados para mensagens deaplicativo para pessoa (A2P), autenticação de dois fatores (2FA) e marketing. A não ser que você reserveum código simplificado, o Amazon SNS atribuirá um código simplificado a suas mensagens. Este códigosimplificado é compartilhado com outros usuários do Amazon SNS, e varia com base na estrutura dedestino e tipo de mensagem (transacionais ou promocionais). Ao reservar um código simplificado, vocêfacilitará para o público reconhecer que as mensagens estão sendo enviadas pela sua empresa.

Seu código curto dedicado está disponível exclusivamente para você, dessa forma, outras pessoasnão conseguem enviar mensagens para o seu público usando o mesmo código simplificado.Consequentemente, seu código simplificado tem alguma proteção contra atividades maliciosas que podemameaçar a reputação de sua marca ou fazer com que operadoras sem fio bloqueiem suas mensagens.

O Amazon SNS pode usar seu código simplificado para enviar mensagens para números de telefone nosEstados Unidos. Para outros destinos, o Amazon SNS atribui um código longo ou alfanumérico, conformenecessário.

Um código simplificado dedicado oferece suporte a uma maior taxa de entrega, o que permite que vocêenvie até 100 mensagens SMS por segundo. Depois de reservar um código simplificado, você podesolicitar um aumento desse limite enviando um Caso de aumento de limite do SNS.

Para obter informações, consulte Preço mundial de SMS.

Para reservar um código simplificado dedicado

1. Acesse AWS Support Center.2. Selecione Criar caso.3. Em Referente, selecione Aumento de limite de serviço.4. Em Tipo de limite, selecione SNS.5. Em Tipo de recurso, selecione Códigos SMS simplificados dedicados para destinos nos EUA.6. Em Limite, selecione a opção que melhor se assemelha ao seu caso de uso.7. Em Novo valor de limite, especifique quantos códigos simplificados você deseja reservar (geralmente,

esse valor é 1).8. Em Descrição do caso de uso, resuma o seu caso de uso e explique como os destinatários se

inscreverão para as mensagens enviadas com o seu código simplificado.9. Selecione seu idioma de preferência e método de contato e escolha Enviar.

O serviço de atendimento ao cliente entrará em contato com você para obter mais informações sobreseu caso de uso, incluindo as mensagens personalizadas que seu público verá quando responderemao seu código simplificado com AJUDA ou PARAR. A AWS trabalhará com operadoras sem fio em seunome para fornecer seu código simplificado. Normalmente, são necessárias 6 a 12 semanas para todas asoperadoras aprovarem o seu caso de uso e fornecerem o código simplificado para que você possa enviarmensagens para os assinantes em suas redes. A AWS vai notificá-lo quando o provisionamento do códigosimplificado estiver concluído.

Para interromper sua reserva de código simplificado, envie uma solicitação para o AWS Support.

Versão da API 2010-03-31140

Page 148: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorRegiões e países compatíveis

Regiões e países compatíveisNo momento, o Amazon SNS é compatível com mensagens SMS nas seguintes regiões da AWS:

Nome da região Região Endpoint Protocolo

Leste dos EUA (Norteda Virgínia)

us-east-1 sns.us-east-1.amazonaws.com

HTTP e HTTPS

Oeste dos EUA(Oregon)

us-west-2 sns.us-west-2.amazonaws.com

HTTP e HTTPS

UE (Irlanda) eu-west-1 sns.eu-west-1.amazonaws.com

HTTP e HTTPS

Ásia-Pacífico (Tóquio) ap-northeast-1 sns.ap-northeast-1.amazonaws.com

HTTP e HTTPS

Ásia-Pacífico(Cingapura)

ap-southeast-1 sns.ap-southeast-1.amazonaws.com

HTTP e HTTPS

Ásia-Pacífico (Sydney) ap-southeast-2 sns.ap-southeast-2.amazonaws.com

HTTP e HTTPS

O Amazon SNS pode ser usado para enviar mensagens SMS para os seguintes países e regiões:

País/Região Código ISO Oferece suporte a IDs deremetente

Afeganistão AF  

Albânia AL Sim

Argélia DZ  

Andorra AD Sim

Angola AO Sim

Anguila AI Sim

Antígua e Barbuda AG Sim

Argentina AR  

Armênia AM Sim

Aruba AW Sim

Austrália AU Sim

Áustria AT Sim

Azerbaijão AZ  

Bahamas BS Sim

Bahrein BH Sim

Versão da API 2010-03-31141

Page 149: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorRegiões e países compatíveis

País/Região Código ISO Oferece suporte a IDs deremetente

Bangladesh BD  

Barbados BB Sim

Bielorrússia BY Sim

Bélgica BE  

Belize BZ Sim

Benin BJ Sim

Bermudas BM Sim

Butão BT Sim

Bolívia BO Sim

Bósnia e Herzegovina BA Sim

Botsuana BW Sim

Brasil BR  

Brunei BN Sim

Bulgária BG Sim

Burkina Faso BF Sim

Burundi BI Sim

Camboja KH Sim

Camarões CM Sim

Canadá CA  

Cabo Verde CV Sim

Ilhas Cayman KY Sim

República Centro-Africana CF Sim

Chade TD Sim

Chile CL  

China CN  

Colômbia CO  

Comoros KM Sim

Ilhas Cook CK Sim

Costa Rica CR  

Croácia HR  

Versão da API 2010-03-31142

Page 150: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorRegiões e países compatíveis

País/Região Código ISO Oferece suporte a IDs deremetente

Chipre CY Sim

República Tcheca CZ Sim

República Democrática do Congo CD  

Dinamarca DK Sim

Djibuti DJ Sim

Dominica DM Sim

República Dominicana DO  

Timor Leste TL  

Equador EC  

Egito EG  

El Salvador SV  

Guiné Equatorial GQ Sim

Estônia EE Sim

Etiópia ET  

Ilhas Faroe FO Sim

Fiji FJ Sim

Finlândia FI Sim

França FR Sim

Guiana Francesa GF  

Gabão GA Sim

Gâmbia GM Sim

Geórgia GE Sim

Alemanha DE Sim

Gana GH  

Gibraltar GI Sim

Grécia GR Sim

Groenlândia GL Sim

Granada GD Sim

Guadalupe GP Sim

Guam GU  

Versão da API 2010-03-31143

Page 151: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorRegiões e países compatíveis

País/Região Código ISO Oferece suporte a IDs deremetente

Guatemala GT  

Guiné GN Sim

Guiné-Bissau GW Sim

Guiana GY Sim

Haiti HT Sim

Honduras HN  

Hong Kong HK Sim

Hungria HU  

Islândia IS Sim

Índia IN  

Indonésia ID  

Iraque IQ  

Irlanda IE Sim

Israel IL Sim

Itália IT Sim

Costa do Marfim CI  

Jamaica JM Sim

Japão JP  

Jordânia JO Sim

Cazaquistão KZ  

Quênia KE  

Quiribati KI  

Kuwait KW  

Quirguistão KG  

Laos LA  

Letônia LV Sim

Líbano LB Sim

Lesoto LS Sim

Libéria LR Sim

Líbia LY Sim

Versão da API 2010-03-31144

Page 152: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorRegiões e países compatíveis

País/Região Código ISO Oferece suporte a IDs deremetente

Liechtenstein LI Sim

Lituânia LT Sim

Luxemburgo LU Sim

Macau MO Sim

Macedônia MK Sim

Madagascar MG Sim

Malawi MW Sim

Malásia MY  

Ilhas Maldivas MV Sim

Mali ML  

Malta MT Sim

Martinica MQ Sim

Mauritânia MR Sim

Ilhas Maurício MU Sim

México MX  

Moldávia MD Sim

Mônaco MC  

Mongólia MO Sim

Montenegro ME Sim

Montserrat MS Sim

Marrocos MA  

Moçambique MZ  

Mianmar MM  

Namíbia NA  

Nepal NP  

Holanda NL Sim

Antilhas Holandesas AN Sim

Nova Caledônia NC Sim

Nova Zelândia NZ  

Nicarágua NI  

Versão da API 2010-03-31145

Page 153: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorRegiões e países compatíveis

País/Região Código ISO Oferece suporte a IDs deremetente

Níger NE Sim

Nigéria NG Sim

Noruega NO Sim

Omã OM  

Paquistão PK  

Palau PW  

Territórios palestinos PS Sim

Panamá PA  

Papua Nova Guiné PG Sim

Paraguai PY Sim

Peru PE Sim

Filipinas PH  

Polônia PL Sim

Portugal PT Sim

Porto Rico PR  

Catar QA  

República do Congo CG  

Ilha Reunião RE Sim

Romênia RO  

Rússia RU Sim

Ruanda RW Sim

São Cristóvão e Nevis KN  

Santa Lúcia LC  

São Vicente e Granadinas VC  

Samoa WS Sim

São Tomé e Príncipe ST Sim

Arábia Saudita SA  

Senegal SN Sim

Sérvia RS  

Seichelles SC Sim

Versão da API 2010-03-31146

Page 154: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorRegiões e países compatíveis

País/Região Código ISO Oferece suporte a IDs deremetente

Serra Leoa SL Sim

Cingapura SG Sim

Eslováquia SK Sim

Eslovênia SI Sim

Ilhas Salomão SB Sim

Somália SO Sim

África do Sul ZA  

Coreia do Sul KR  

Sudão do Sul SS Sim

Espanha ES Sim

Sri Lanka LK  

Suriname SR Sim

Suazilândia SZ Sim

Suécia SE Sim

Suíça CH Sim

Taiwan TW  

Tajiquistão TJ Sim

Tanzânia TZ Sim

Tailândia TH  

Togo TG Sim

Tonga TO Sim

Trinidad e Tobago TT Sim

Tunísia TN  

Turquia TR  

Turcomenistão TM Sim

Ilhas Turcas e Caicos TC Sim

Uganda UG Sim

Ucrânia UA Sim

Emirados Árabes Unidos AE  

Reino Unido GB Sim

Versão da API 2010-03-31147

Page 155: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorRegiões e países compatíveis

País/Região Código ISO Oferece suporte a IDs deremetente

Estados Unidos US  

Uruguai UY  

Uzbequistão UZ Sim

Vanuatu VU Sim

Venezuela VE  

Vietnã VN  

Ilhas Virgens Britânicas VG Sim

Ilhas Virgens Americanas VI  

Iêmen YE Sim

Zâmbia ZM Sim

Zimbábue ZW Sim

Versão da API 2010-03-31148

Page 156: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedor

Envio de mensagens do AmazonSNS para endpoints HTTP/HTTPS

Amazon SNS pode ser usado para enviar mensagens de notificação para um ou mais endpoints HTTPou HTTPS. Quando você inscrever um endpoint em um tópico, será possível publicar uma notificação notópico, e Amazon SNS envia uma solicitação HTTP POST entregando o conteúdo da notificação para oendpoint inscrito. Ao inscrever o endpoint, você seleciona se Amazon SNS usa HTTP ou HTTPS paraenviar a solicitação POST ao endpoint. Se você usar HTTPS, poderá aproveitar o suporte do Amazon SNSpara o seguinte:

• Server Name Indication (SNI – Indicação de nome do servidor)— isso permite que Amazon SNS ofereçasuporte a endpoints HTTPS que exigem SNI, como um servidor que exige vários certificados parahospedar vários domínios. Para obter mais informações sobre o SNI, consulte http://en.wikipedia.org/wiki/Server_Name_Indication.

• Autenticação de acesso Basic e Digest— isso permite que você especifique um nome de usuárioe uma senha no URL HTTPS para a solicitação HTTP POST, como, por exemplo, https://user:[email protected] ou https://[email protected]. O nome de usuário e a senha sãocriptografados pela conexão SSL estabelecida ao usar HTTPS. Somente o nome de domínio é enviadoem texto sem formatação. Para obter mais informações sobre autenticação de acesso Basic e Digest,consulte http://www.rfc-editor.org/info/rfc2617

A solicitação contém o assunto e a mensagem que foram publicados no tópico juntamente com osmetadados sobre a notificação em um documento JSON. A solicitação será semelhante à seguintesolicitação POST HTTP. Para obter detalhes sobre o cabeçalho HTTP e o formato JSON do corpode solicitação, consulte Cabeçalhos HTTP/HTTPS (p. 217) e Formato JSON de notificação HTTP/HTTPS (p. 220).

POST / HTTP/1.1x-amz-sns-message-type: Notificationx-amz-sns-message-id: da41e39f-ea4d-435a-b922-c6aae3915ebex-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopicx-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55Content-Length: 761Content-Type: text/plain; charset=UTF-8Host: ec2-50-17-44-49.compute-1.amazonaws.comConnection: Keep-AliveUser-Agent: Amazon Simple Notification Service Agent

{ "Type" : "Notification", "MessageId" : "da41e39f-ea4d-435a-b922-c6aae3915ebe", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Subject" : "test", "Message" : "test message", "Timestamp" : "2012-04-25T21:49:25.719Z", "SignatureVersion" : "1", "Signature" : "EXAMPLElDMXvB8r9R83tGoNn0ecwd5UjllzsvSvbItzfaMpN2nk5HVSw7XnOn/49IkxDKz8YrlH2qJXj2iZB0Zo2O71c4qQk1fMUDi3LGpij7RCW7AW9vYYsSqIKRnFS94ilu7NFhUzLiieYr4BKHpdTmdD6c0esKEYBpabxDSc=", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem",

Versão da API 2010-03-31149

Page 157: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 1: Verificar se o endpoint está pronto

para processar mensagens do Amazon SNS

"UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55"}

Para permitir que um tópico do Amazon SNS envie mensagens a um endpoint HTTP ou HTTPS, sigaessas etapas:

Etapa 1: Verificar se o endpoint está pronto para processar mensagens do Amazon SNS (p. 150)

Etapa 2: Inscrever o endpoint HTTP/HTTPS no tópico do Amazon SNS (p. 153)

Etapa 3: Confirmar a inscrição (p. 153)

Etapa 4: Definir a política de novas tentativas de entrega para a inscrição (opcional) (p. 154)

Etapa 5: Conceder aos usuários permissões para publicar no tópico (opcional) (p. 154)

Etapa 6: Enviar mensagens para o endpoint HTTP/HTTPS (p. 155)

Etapa 1: Verificar se o endpoint está pronto paraprocessar mensagens do Amazon SNS

Antes de inscrever um endpoint HTTP ou HTTPS em um tópico, você deve garantir que ele tem acapacidade de lidar com as solicitações HTTP POST que Amazon SNS usa para enviar a confirmaçãode inscrição e as mensagens de notificação. Geralmente, isso significa a criação e a implantação de umaaplicação web (por exemplo, um servlet Java se o host do endpoint está executando Linux com Apachee Tomcat) que processa solicitações HTTP do Amazon SNS. Quando você inscreve um endpoint HTTP,Amazon SNS envia uma solicitação de confirmação de inscrição. Seu endpoint deve estar preparadopara receber e processar essa solicitação no momento em que você cria a inscrição porque Amazon SNSenvia essa solicitação nesse momento. Amazon SNS não enviará notificações para o endpoint até quevocê confirme a inscrição. Assim que você confirmar a inscrição, Amazon SNS enviará notificações para oendpoint quando uma ação de publicação for realizada no tópico inscrito.

Para configurar o endpoint para processar as mensagens de notificação e de confirmação deinscrição

1. Seu código deve conter os cabeçalhos HTTP de solicitações HTTP POST que Amazon SNS enviapara seu endpoint. Seu código deve procurar o campo do cabeçalho x-amz-sns-message-type,que mostra o tipo de mensagem que Amazon SNS enviou para você. Ao visualizar o cabeçalho, vocêpode determinar o tipo da mensagem sem a necessidade de analisar o corpo da solicitação HTTP.Há dois tipos com os quais você precisa lidar: SubscriptionConfirmation e Notification.A mensagem UnsubscribeConfirmation é usada somente quando a assinatura é excluída dotópico.

Para obter detalhes sobre o cabeçalho HTTP, consulte Cabeçalhos HTTP/HTTPS (p. 217). Aseguinte solicitação HTTP POST é um exemplo de uma mensagem de confirmação de inscrição.

POST / HTTP/1.1x-amz-sns-message-type: SubscriptionConfirmationx-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1bx-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopicContent-Length: 1336Content-Type: text/plain; charset=UTF-8Host: example.comConnection: Keep-Alive

Versão da API 2010-03-31150

Page 158: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 1: Verificar se o endpoint está pronto

para processar mensagens do Amazon SNS

User-Agent: Amazon Simple Notification Service Agent

{ "Type" : "SubscriptionConfirmation", "MessageId" : "165545c9-2a5c-472c-8df2-7ff2be2b3b1b", "Token" : "2336412f37fb687f5d51e6e241d09c805a5a57b30d712f794cc5f6a988666d92768dd60a747ba6f3beb71854e285d6ad02428b09ceece29417f1f02d609c582afbacc99c583a916b9981dd2728f4ae6fdb82efd087cc3b7849e05798d2d2785c03b0879594eeac82c01f235d0e717736", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Message" : "You have chosen to subscribe to the topic arn:aws:sns:us-west-2:123456789012:MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.", "SubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=2336412f37fb687f5d51e6e241d09c805a5a57b30d712f794cc5f6a988666d92768dd60a747ba6f3beb71854e285d6ad02428b09ceece29417f1f02d609c582afbacc99c583a916b9981dd2728f4ae6fdb82efd087cc3b7849e05798d2d2785c03b0879594eeac82c01f235d0e717736", "Timestamp" : "2012-04-26T20:45:04.751Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEpH+DcEwjAPg8O9mY8dReBSwksfg2S7WKQcikcNKWLQjwu6A4VbeS0QHVCkhRS7fUQvi2egU3N858fiTDN6bkkOxYDVrY0Ad8L10Hs3zH81mtnPk5uvvolIC1CXGu43obcgFxeL3khZl8IKvO61GWB6jI9b5+gLPoBc1Q=", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem" }

2. Seu código deve analisar o documento JSON no corpo da solicitação HTTP POST para ler os paresde nome/valor que compõem a mensagem do Amazon SNS. Use um analisador JSON que faça aconversão da representação em sequência de escape dos caracteres de controle de volta para seusvalores de caracteres ASCII (por exemplo, converter \n para um caractere de nova linha). Você podeusar um analisador JSON existente, como o processador Jackson JSON (http://wiki.fasterxml.com/JacksonHome) ou criar um seu. Para enviar o texto nos campos de assunto e mensagem em formatoJSON válido, Amazon SNS deve converter alguns caracteres de controle para representações emsequência de escape para inclusão no documento JSON. Ao receber o documento JSON no corpoda solicitação POST enviada para o endpoint, você deve converter os caracteres em sequênciade escape de volta para seus valores de caractere originais se quiser uma representação exata doassunto e das mensagens originais publicadas no tópico. Isso é essencial se você deseja verificar aassinatura de uma notificação, pois a assinatura usa a mensagem e o assunto em seus formuláriosoriginais como parte da string para assinar.

3. Seu código deve verificar a autenticidade de uma mensagem de notificação, confirmação de inscriçãoou confirmação de cancelamento de inscrição enviada pelo Amazon SNS. Ao usar informaçõescontidas na mensagem do Amazon SNS, o endpoint pode recriar a assinatura para que você possaverificar o conteúdo da mensagem comparando sua assinatura com a assinatura enviada peloAmazon SNS junto com a mensagem. Para obter mais informações sobre como verificar a assinaturade uma mensagem, consulte Verificação das assinaturas de mensagens do Amazon SNS (p. 169).

4. Com base no tipo especificado pelo campo de cabeçalho x-amz-sns-message-type, seu códigodeve ler o documento JSON contido no corpo da solicitação HTTP e processar a mensagem. A seguir,são apresentadas as diretrizes para lidar com os dois tipos principais de mensagens:

SubscriptionConfirmation

Leia o valor para SubscribeURL e acesse o URL. Para confirmar a assinatura e começar areceber notificações no endpoint, é necessário visitar o URLSubscribeURL (por exemplo,enviando uma solicitação HTTP GET para o URL). Consulte o exemplo de solicitação HTTP naetapa anterior para ver qual a aparência de SubscribeURL. Para obter mais informações sobre oformato da mensagem SubscriptionConfirmation, consulte Formato JSON de confirmaçãode inscrição HTTP/HTTPS (p. 218). Ao acessar o URL, você receberá de volta uma respostaque se parece com o seguinte documento XML. O documento retorna o ARN da inscrição para oendpoint no elemento ConfirmSubscriptionResult.

<ConfirmSubscriptionResponse xmlns="http://sns.amazonaws.com/doc/2010-03-31/"> <ConfirmSubscriptionResult> <SubscriptionArn>arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55</SubscriptionArn>

Versão da API 2010-03-31151

Page 159: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 1: Verificar se o endpoint está pronto

para processar mensagens do Amazon SNS

</ConfirmSubscriptionResult> <ResponseMetadata> <RequestId>075ecce8-8dac-11e1-bf80-f781d96e9307</RequestId> </ResponseMetadata> </ConfirmSubscriptionResponse>

Como alternativa para visitar o SubscribeURL, você pode confirmar a inscrição usando aação ConfirmSubscription com o Token definido como seu valor correspondente na mensagemSubscriptionConfirmation. Se você deseja permitir que somente o proprietário dotópico e o proprietário da inscrição cancelem o recebimento para o endpoint, chame a açãoConfirmSubscription com uma assinatura AWS.

Notificação

Leia os valores de Subject e Message para obter as informações da notificação que foipublicada no tópico.

Para obter mais detalhes sobre o formato da mensagem Notification, consulte CabeçalhosHTTP/HTTPS (p. 217). A seguinte solicitação HTTP POST é um exemplo de uma mensagem denotificação enviada para o endpoint example.com.

POST / HTTP/1.1x-amz-sns-message-type: Notificationx-amz-sns-message-id: 22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopicx-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96Content-Length: 773Content-Type: text/plain; charset=UTF-8Host: example.comConnection: Keep-AliveUser-Agent: Amazon Simple Notification Service Agent

{ "Type" : "Notification", "MessageId" : "22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Subject" : "My First Message", "Message" : "Hello world!", "Timestamp" : "2012-05-02T00:54:06.655Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEw6JRNwm1LFQL4ICB0bnXrdB8ClRMTQFGBqwLpGbM78tJ4etTwC5zU7O3tS6tGpey3ejedNdOJ+1fkIp9F2/LmNVKb5aFlYq+9rk9ZiPph5YlLmWsDcyC5T+Sy9/umic5S0UQc2PEtgdpVBahwNOdMW4JPwk0kAJJztnc=", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem", "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96" }

5. Certifique-se de que o endpoint responde à mensagem de HTTP POST do Amazon SNS com o códigode status apropriado. A conexão atingirá o tempo limite em 15 segundos. Se o endpoint não responderantes da conexão atingir o tempo limite ou retornar um código de status fora do intervalo de 200-4xx,Amazon SNS considerará que a entrega da mensagem apresentou falha.

6. Certifique-se de que o seu código pode lidar com novas tentativas de entrega de mensagens doAmazon SNS. Se Amazon SNS não receber uma resposta bem-sucedida do endpoint, ele tentaentregar a mensagem novamente. Isso se aplica a todas as mensagens, incluindo a mensagem deconfirmação de inscrição. Por padrão, se a entrega inicial da mensagem falhar, Amazon SNS faz atétrês novas tentativas com uma espera de 20 segundos entre as tentativas malsucedidas. Observe quea solicitação da mensagem atinge o tempo limite em 15 segundos. Isso significa que, se a falha na

Versão da API 2010-03-31152

Page 160: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 2: Inscrever o endpoint HTTP/

HTTPS no tópico do Amazon SNS

entrega da mensagem foi causada por exceder o tempo limite, Amazon SNS tentará outra vez, poraproximadamente 35 segundos, após a última tentativa de entrega. Se você não estiver satisfeito coma política de entrega padrão, será possível definir uma política de entrega diferente no endpoint.

Para ser claro, Amazon SNS faz novas tentativas apenas após uma tentativa de entrega apresentarfalha. Você pode identificar uma mensagem usando o campo de cabeçalho x-amz-sns-message-id. Ao comparar os IDs das mensagens que foram processadas com as mensagens recebidas, vocêpode determinar se a mensagem é uma nova tentativa.

7. Se estiver inscrevendo um endpoint HTTPS, certifique-se de que o endpoint tem um certificado doservidor de uma autoridade de certificação confiável (CA). Amazon SNS só enviará mensagens paraendpoints HTTPS que têm um certificado do servidor assinado por uma CA confiável para o AmazonSNS. Para obter uma lista de CAs confiáveis, consulte Autoridades de certificação (CA) reconhecidapelo Amazon SNS para endpoints HTTPS (p. 162).

8. Implante o código que você criou para receber mensagens do Amazon SNS. Quando você assinar oendpoint, ele deve estar pronto para receber pelo menos a mensagem de confirmação de inscrição.

Etapa 2: Inscrever o endpoint HTTP/HTTPS notópico do Amazon SNS

Para enviar mensagens para um endpoint HTTP ou HTTPS por meio de um tópico, você deve inscrevero endpoint no tópico do Amazon SNS. Você especifica o endpoint usando seu URL. Para inscrever umtópico, é possível usar o console do Amazon SNS, o comando sns-subscribe ou a ação da API Subscribe.Antes de começar, verifique se você tem o URL do endpoint que deseja inscrever e se o endpoint estápreparado para receber a confirmação e as mensagens de notificação, como descrito na Etapa 1.

Para inscrever um endpoint HTTP ou HTTPS em um tópico usando o console do Amazon SNS

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No painel de navegação à esquerda, clique em Tópicos e selecione o tópico.3. Clique na lista suspensa Outras ações e selecione Inscrever-se no tópico.4. Na lista suspensa Protocolo, selecione HTTP ou HTTPS.5. Na caixa Endpoint, cole o URL do endpoint para o qual você deseja que o tópico envie mensagens e

clique em Criar inscrição.6. Para a mensagem Solicitação de inscrição recebida!, clique em Fechar.

Seu novo ID da inscrição exibe PendingConfirmation. Quando você confirmar a inscrição, o ID dainscrição exibirá o ID da inscrição.

Etapa 3: Confirmar a inscriçãoApós inscrever o endpoint, Amazon SNS enviará uma mensagem de confirmação de inscrição paraele. Você já deve ter um código que executa as ações descritas na Etapa 1 (p. 150) implantado noendpoint. Especificamente, o código no endpoint deve recuperar o valor SubscribeURL da mensagemde confirmação de inscrição e visitar o local especificado por SubscribeURL ou torná-lo disponívelpara você, para que seja possível visitar manualmente o SubscribeURL, por exemplo, usando umnavegador da web. Amazon SNS não enviará mensagens para o endpoint até que a assinatura tenha sidoconfirmada. Ao acessar o SubscribeURL, a resposta conterá um documento XML com um elementoSubscriptionArn que especifica o ARN da inscrição. Você também pode usar o console do AmazonSNS para verificar se a inscrição foi confirmada: o ID da inscrição exibirá o ARN da inscrição, em vez dovalor PendingConfirmation exibido ao adicionar a inscrição.

Versão da API 2010-03-31153

Page 161: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 4: Definir a política de novas tentativas

de entrega para a inscrição (opcional)

Etapa 4: Definir a política de novas tentativas deentrega para a inscrição (opcional)

Por padrão, se a entrega inicial da mensagem falhar, Amazon SNS faz até três novas tentativas comuma espera de 20 segundos entre as tentativas malsucedidas. Conforme foi dito na Etapa 1 (p. 150),o endpoint deve ter o código que pode processar novas tentativas de mensagens. Ao definir a políticade entrega em um tópico ou inscrição, você pode controlar a frequência e o intervalo com que AmazonSNS tentará entregar novamente mensagens com falha. Você pode definir uma política de entrega em umtópico ou em uma determinada inscrição.

Etapa 5: Conceder aos usuários permissões parapublicar no tópico (opcional)

Por padrão, o proprietário do tópico tem permissão para publicar no tópico. Para permitir que outrosusuários ou aplicativos publiquem no tópico, você deve usar AWS Identity and Access Management(IAM) para conceder permissão pública ao tópico. Para obter mais informações sobre como concederpermissões para ações do Amazon SNS a usuários do IAM, consulte Controlling User Access to Your AWSAccount.

Há duas maneiras de controlar o acesso a um tópico:

• Adicione uma política para um usuário ou grupo do IAM. A maneira mais simples de conceder aosusuários permissões para tópicos é criar um grupo e adicionar a política adequada e os usuáriosao grupo. É muito mais fácil adicionar e remover usuários de um grupo do que controlar as políticasdefinidas para usuários individualmente.

• Adicione uma política ao tópico. Se deseja conceder permissões para um tópico para outra conta daAWS, a única maneira de fazer isso é adicionando uma política com a conta da AWS para a qual vocêdeseja conceder permissões como principal.

Você deve usar o primeiro método para a maioria dos casos (aplicar políticas a grupos e gerenciarpermissões para usuários adicionando ou removendo os usuários adequados aos grupos). Se vocêprecisa conceder permissões a um usuário em outra conta, use o segundo método.

Se você adicionar a seguinte política para um usuário ou grupo do IAM, estará concedendo a esse usuárioou aos membros do grupo permissão para executar a ação sns:Publish no tópico MyTopic.

{ "Version":"2012-10-17", "Statement":[{ "Sid":"AllowPublishToMyTopic", "Effect":"Allow", "Action":"sns:Publish", "Resource":"arn:aws:sns:us-east-1:123456789012:MyTopic" } ]}

O exemplo a seguir de política mostra como conceder permissão à outra conta para um tópico.Note

Ao conceder à outra conta da AWS acesso a um recurso em sua conta, você também estáconcedendo permissões para o recurso em questão aos usuários do IAM com acesso de

Versão da API 2010-03-31154

Page 162: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 6: Enviar mensagens para o endpoint HTTP/HTTPS

nível de administrador (acesso coringa). Todos os outros usuários do IAM na outra conta têmautomaticamente o acesso negado a seus recursos. Se você deseja conceder a usuáriosespecíficos do IAM da conta da AWS acesso a seus recursos, a conta ou um usuário do IAM comacesso de nível de administrador deve delegar permissões para o recurso para esses usuáriosdo IAM. Para obter mais informações sobre a delegação entre contas, consulte Enabling Cross-Account Access no guia Using IAM.

Se adicionou a seguinte política a um tópico MyTopic na conta, você pode conceder à conta123456789012 permissão 111122223333 para executar a ação sns:Publish no tópico.

{ "Version":"2012-10-17", "Id":"MyTopicPolicy", "Statement":[{ "Sid":"Allow-publish-to-topic", "Effect":"Allow", "Principal":{ "AWS":"111122223333" }, "Action":"sns:Publish", "Resource":"arn:aws:sns:us-east-1:123456789012:MyTopic" } ]}

Etapa 6: Enviar mensagens para o endpoint HTTP/HTTPS

É possível enviar uma mensagem para inscrições em um tópico publicando no tópico. Para publicar umtópico, você pode usar o console do Amazon SNS, o comando sns-publish ou a API Publish.

Se seguiu a Etapa 1 (p. 150), o código que você implantou no endpoint deve processar a notificação.

Para publicar um tópico usando o console do Amazon SNS

1. Usando as credenciais da conta da AWS ou do usuário do IAM com permissão para publicar notópico, faça login no Console de gerenciamento da AWS e abra o console do Amazon SNS em https://console.aws.amazon.com/ sns/.

2. No painel de navegação à esquerda, clique em Tópicos e selecione um tópico.3. Clique no botão Publicar em um tópico.4. Na caixa Assunto, insira um assunto (por exemplo, Testes de publicação no meu endpoint).5. Na caixa Mensagem, insira texto (por exemplo, Olá, mundo!) e clique em Publicar Mensagem.

Será exibida a seguinte mensagem: Your message has been successfully published.

Configuração de políticas de nova tentativa deentrega do Amazon SNS para endpoints HTTP/HTTPS

Tópicos

Versão da API 2010-03-31155

Page 163: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorConfiguração de políticas de nova tentativa de entrega

do Amazon SNS para endpoints HTTP/HTTPS

• Aplicação de políticas de entrega em tópicos e inscrições (p. 158)• Configuração da taxa de recebimento máxima (p. 159)• Fase de nova tentativa imediata (p. 160)• Fase de pré-recuo (p. 160)• Fase de recuo (p. 160)• Fase de pós-recuo (p. 161)

Algumas vezes, a entrega bem-sucedida do Amazon SNS a um endpoint HTTP/HTTPS exige mais deuma tentativa. Esse pode ser o caso, por exemplo, quando o servidor da Web que hospeda o endpointinscrito está desativado para manutenção ou está com tráfego intenso. Se uma tentativa de entrega inicialnão resultar em uma resposta bem-sucedida do inscrito, o Amazon SNS tentará entregar a mensagemnovamente. Chamamos uma tentativa como essa de nova tentativa. Em outras palavras, uma novatentativa é uma tentativa de entrega que ocorre após a tentativa de entrega inicial.

Amazon SNS apenas tenta uma nova tentativa após uma falha na tentativa de entrega. Amazon SNSconsidera as seguintes situações como uma tentativa de entrega com falha.

• Status do HTTP dentro do intervalo de 500-599.• Status do HTTP fora do intervalo de 200-599.• Um timeout de solicitação (15 segundos). Observe que, se um timeout de solicitação ocorrer, a próxima

nova tentativa acontecerá no intervalo especificado após o timeout. Por exemplo, se o intervalo de novatentativa for de 20 segundos, e uma solicitação expirar, o início da próxima solicitação será 35 segundosapós o início da solicitação que expirou.

• Qualquer erro de conexão, como timeout de conexão, endpoint inalcançável, certificado SSL inválido,etc.

Você pode usar as políticas de entrega para controlar não apenas o número total de novas tentativas, mastambém o tempo de atraso entre cada nova tentativa. Você pode especificar um total de até 100 novastentativas distribuídas entre quatro fases distintas. O tempo de vida máximo de uma mensagem no sistemaé de uma hora. Esse limite de uma hora não pode ser estendido por uma política de entrega.

1. Fase de nova tentativa imediata (p. 160)– também chamada de fase sem atraso, essa fase ocorreimediatamente após a tentativa inicial de entrega. O valor definido para Tentativas sem atraso determinao número de novas tentativas imediatamente após a tentativa de entrega inicial. Não há um intervaloentre novas tentativas nessa fase.

2. Fase de pré-recuo (p. 160)– a fase de pré-recuo segue a fase de nova tentativa imediata. Use essafase para criar um conjunto de novas tentativas que ocorrem antes de uma função de recuo se aplicar anovas tentativas. Use a configuração Tentativas com atraso mínimo para especificar o número de novastentativas na fase de pré-recuo. Você pode controlar o tempo de atraso entre novas tentativas nessafase usando a configuração Atraso mínimo.

Versão da API 2010-03-31156

Page 164: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorConfiguração de políticas de nova tentativa de entrega

do Amazon SNS para endpoints HTTP/HTTPS

3. Fase de recuo (p. 160)– essa fase é chamada de fase de recuo, pois você pode controlar o atrasoentre novas tentativas nessa fase usando a função de recuo de nova tentativa. Defina o Atraso mínimoe o Atraso máximo, e selecione uma Função de tentativa de recuo para definir a rapidez com que oatraso aumenta do atraso mínimo até o atraso máximo.

4. Fase de pós-recuo (p. 161)– a fase de pós-recuo segue a fase de recuo. Use a configuraçãoTentativas com atraso máximo para especificar o número de novas tentativas na fase de pós-recuo.Você pode controlar o tempo de atraso entre novas tentativas nessa fase usando a configuração Atrasomáximo.

A fase de recuo é a mais usada. Se nenhuma política de entrega for definida, o padrão será tentarnovamente três vezes na fase de recuo, com um tempo de atraso de 20 segundos entre cada novatentativa. O valor padrão para os atrasos mínimo e máximo é 20. O número padrão de novas tentativas é 3e, por isso, a política de nova tentativa padrão solicita um total de 3 novas tentativas com um atraso de 20segundos entre cada nova tentativa. O diagrama a seguir mostra o atraso associado a cada nova tentativa.

Para ver como a função de recuo de nova tentativa afeta o atraso entre novas tentativas, você pode definiro atraso máximo para 40 segundos e deixar as configurações restantes em seus valores padrão. Comessa mudança, sua política de entrega agora especifica 3 novas tentativas durante a fase de recuo, umatraso mínimo de 20 segundos e um atraso máximo de 40 segundos. Como a função de recuo padrão élinear, o atraso entre as mensagens aumenta a uma taxa constante ao longo da fase de recuo. AmazonSNS tenta a primeira nova tentativa depois de 20 segundos, a segunda nova tentativa após 30 segundose a nova tentativa final após 40 segundos. O diagrama a seguir mostra o atraso associado a cada novatentativa.

O tempo de vida máximo de uma mensagem no sistema é de uma hora. Esse limite de uma hora não podeser estendido por uma política de entrega.

Versão da API 2010-03-31157

Page 165: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAplicação de políticas de entrega em tópicos e inscrições

Note

Somente os tipos de inscrição HTTP e HTTPS são compatíveis com as políticas de entrega. Osuporte para outros tipos de inscrição do Amazon SNS (por exemplo, e-mail, Amazon SQS eSMS) não está disponível no momento.

Aplicação de políticas de entrega em tópicos einscriçõesVocê pode aplicar políticas de entrega aos tópicos do Amazon SNS. Se você definir uma política deentrega em um tópico, a política se aplicará a todas as inscrições do tópico. O diagrama a seguir ilustra umtópico com uma política de entrega que se aplica a todas as três inscrições associadas a esse tópico.

Você também pode aplicar as políticas de entrega a inscrições individuais. Se você atribuir uma política deentrega a uma inscrição, a política em nível de inscrição terá precedência sobre a política de entrega emnível de tópico. No diagrama a seguir, uma inscrição tem uma política de entrega em nível de inscrição,enquanto as duas outras inscrições não.

Em alguns casos, ignore todas as políticas de entrega de inscrição para que a política de entrega do tópicose aplique a todas as inscrições, mesmo se uma inscrição definiu sua própria política de entrega. Paraconfigurar o Amazon SNS para aplicar suas políticas de entrega de tópico a todas as inscrições, cliqueem Ignorar substituição de inscrição na caixa de diálogo Exibir/editar políticas de entrega de tópico. Odiagrama a seguir mostra uma política de entrega em nível de tópico que se aplica a todas as inscrições,

Versão da API 2010-03-31158

Page 166: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorConfiguração da taxa de recebimento máxima

até mesmo à inscrição que tem uma política de entrega de inscrição, pois as políticas em nível de inscriçãoforam especificamente ignoradas.

Configuração da taxa de recebimento máximaVocê pode definir o número máximo de mensagens por segundo que o Amazon SNS envia para umendpoint inscrito definindo a configuração Taxa máxima de recebimento Amazon SNS contém mensagensque estão aguardando a entrega por até uma hora. As mensagens retidas por mais de uma hora sãodescartadas.

• Para definir uma taxa máxima de recebimento que se aplica a todas as inscrições de um tópico, apliquea configuração no nível de tópico usando a caixa de diálogo Editar política de entrega de tópico Paraobter mais informações, consulte Para definir a taxa máxima de recebimento para um tópico (p. 159).

• Para definir uma taxa máxima de recebimento que se aplica a inscrições específicas, aplique aconfiguração no nível de inscrição usando a caixa de diálogo Editar política de entrega de inscrição.Para obter mais informações, consulte Para definir a taxa máxima de recebimento para umainscrição (p. 159).

Para definir a taxa máxima de recebimento para um tópico

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No painel de navegação à esquerda, clique em Tópicos e selecione o tópico.

3. Clique na lista suspensa Outras ações e selecione Editar política de entrega de tópico.4. Na caixa Taxa máxima de recebimento, digite um valor inteiro (por exemplo, 2).5. Selecione Atualizar política para salvar suas alterações.

Para definir a taxa máxima de recebimento para uma inscrição

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No painel de navegação à esquerda, clique em Tópicos e selecione um ARN do tópico.3. No painel Detalhes do tópico, selecione uma inscrição e clique em Editar política de entrega de tópico.4. Na caixa Taxa máxima de recebimento, digite um valor inteiro (por exemplo, 2).5. Selecione Atualizar política para salvar suas alterações.

Versão da API 2010-03-31159

Page 167: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorFase de nova tentativa imediata

Fase de nova tentativa imediataA fase de nova tentativa imediata ocorre diretamente após a tentativa de entrega inicial. Essa fase tambémé conhecida como Sem atraso porque acontece sem nenhum tempo de atraso entre as novas tentativas. Onúmero padrão de novas tentativas para essa fase é 0.

Para definir o número de novas tentativas na fase de nova tentativa imediata

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No painel de navegação à esquerda, clique em Tópicos e selecione um ARN do tópico.3. No painel Detalhes do tópico, selecione Editar política de entrega de tópico na lista suspensa Outras

ações de tópico.4. Na caixa Tentativas sem atraso, digite um valor inteiro.5. Selecione Atualizar política para salvar suas alterações.

Fase de pré-recuoA fase de pré-recuo segue a fase de nova tentativa imediata. Use essa fase se quiser criar um conjuntode uma ou mais novas tentativas que ocorrem antes que a função de recuo afete o atraso entre novastentativas. Nessa fase, o tempo entre as novas tentativas é constante e é igual à configuração quevocê escolhe para Atraso mínimo. A configuração Atraso mínimo afeta novas tentativas em duas fases,aplicando-se a todas as novas tentativas na fase de pré-recuo e servindo como tempo de atraso inicialpara novas tentativas na fase de recuo. O número padrão de novas tentativas para essa fase é 0.

Para definir o número de novas tentativas na fase de pré-recuo

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No painel de navegação à esquerda, clique em Tópicos e selecione um ARN do tópico.3. No painel Detalhes do tópico, selecione Editar política de entrega de tópico na lista suspensa Outras

ações de tópico.4. Na caixa Tentativas com atraso mínimo, digite um valor inteiro.5. Na caixa Atraso mínimo, digite um valor inteiro para definir o atraso entre as mensagens nessa fase.

O valor definido deve ser menor ou igual ao valor definido para Atraso máximo.6. Selecione Atualizar política para salvar suas alterações.

Fase de recuoA fase de recuo é a única fase que se aplica por padrão. Você pode controlar o número de novastentativas na fase de recuo usando Número de tentativas.

Important

O valor que você escolher para Número de tentativas representa o número total de tentativas,incluindo as novas tentativas definidas para Tentativas sem atraso, Tentativas com atraso mínimoe Tentativas com atraso máximo.

Você pode controlar a frequência de novas tentativas na fase de recuo com três parâmetros.

• Atraso mínimo – o atraso mínimo define o atraso associado à primeira tentativa de repetição na fase derecuo.

Versão da API 2010-03-31160

Page 168: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorFase de pós-recuo

• Atraso máximo – o atraso máximo define o atraso associado à tentativa de repetição final na fase derecuo.

• Função recuo de nova tentativa – a função de recuo de nova tentativa define o algoritmo que AmazonSNS usa para calcular os atrasos associados a todas as tentativas de repetição entre a primeira e aúltima nova tentativa na fase de recuo.

Você pode escolher entre quatro funções de recuo de nova tentativa.

• Linear• Aritmética• Geométrica• Exponencial

A seguinte captura de tela mostra como cada função de recuo de nova tentativa afeta o atraso associadoa mensagens durante o período de recuo. O eixo vertical representa o atraso em segundos associado acada uma das 10 novas tentativas. O eixo horizontal representa o número de novas tentativas. O atrasomínimo é de 5 segundos, e o atraso máximo é de 260 segundos.

Fase de pós-recuoA fase de pós-recuo é a fase final. Use essa fase se quiser criar um conjunto de uma ou mais novastentativas que ocorram após a função de recuo afetar o atraso entre novas tentativas. Nessa fase, o tempoentre as novas tentativas é constante e é igual à configuração que você escolhe para Atraso máximo.A configuração de atraso máximo afeta novas tentativas em duas fases, ela se aplica a todas as novastentativas na fase de pós-recuo e serve como o tempo de atraso final para novas tentativas na fase derecuo. O número padrão de novas tentativas para essa fase é 0.

Para definir o número de novas tentativas na fase de pós-recuo

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No painel de navegação à esquerda, clique em Tópicos e selecione um ARN do tópico.3. No painel Detalhes do tópico, selecione Editar política de entrega de tópico na lista suspensa Outras

ações de tópico.4. Na caixa Tentativas com atraso máximo, digite um valor inteiro.5. Na caixa Atraso máximo, digite um valor inteiro para definir o atraso entre as mensagens nessa fase.

Versão da API 2010-03-31161

Page 169: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAutoridades de certificação para endpoints HTTPS

O valor definido deve ser maior ou igual ao valor definido para Atraso mínimo.6. Selecione Atualizar política para salvar suas alterações.

Autoridades de certificação (CA) reconhecida peloAmazon SNS para endpoints HTTPS

Se você assinar um endpoint HTTPS para um tópico, esse endpoint deve ter um certificado do servidorassinado por uma autoridade de certificação (CA) confiável. Amazon SNS somente entregará mensagenspara endpoints HTTPS que têm um certificado assinado de uma CA confiável reconhecida pelo AmazonSNS. Amazon SNS reconhece as seguintes CAs.

mozillacert81.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 07:E0:32:E0:20:B7:2C:3F:19:2F:06:28:A2:59:3A:19:A7:0F:06:9Emozillacert99.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): F1:7F:6F:B6:31:DC:99:E3:A3:C8:7F:FE:1C:F1:81:10:88:D9:60:33swisssignplatinumg2ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 56:E0:FA:C0:3B:8F:18:23:55:18:E5:D3:11:CA:E8:C2:43:31:AB:66mozillacert145.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 10:1D:FA:3F:D5:0B:CB:BB:9B:B5:60:0C:19:55:A4:1A:F4:73:3A:04mozillacert37.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): B1:2E:13:63:45:86:A4:6F:1A:B2:60:68:37:58:2D:C4:AC:FD:94:97mozillacert4.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): E3:92:51:2F:0A:CF:F5:05:DF:F6:DE:06:7F:75:37:E1:65:EA:57:4Bamzninternalitseccag2, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): FA:07:FA:A6:35:D0:BC:98:72:3D:B3:08:8A:CD:CD:CD:3E:23:F9:EDmozillacert70.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 78:6A:74:AC:76:AB:14:7F:9C:6A:30:50:BA:9E:A8:7E:FE:9A:CE:3Cmozillacert88.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): FE:45:65:9B:79:03:5B:98:A1:61:B5:51:2E:AC:DA:58:09:48:22:4Dmozillacert134.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 70:17:9B:86:8C:00:A4:FA:60:91:52:22:3F:9F:3E:32:BD:E0:05:62mozillacert26.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 87:82:C6:C3:04:35:3B:CF:D2:96:92:D2:59:3E:7D:44:D9:34:FF:11verisignclass2g2ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): B3:EA:C4:47:76:C9:C8:1C:EA:F2:9D:95:B6:CC:A0:08:1B:67:EC:9Dmozillacert77.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 13:2D:0D:45:53:4B:69:97:CD:B2:D5:C3:39:E2:55:76:60:9B:5C:C6mozillacert123.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 2A:B6:28:48:5E:78:FB:F3:AD:9E:79:10:DD:6B:DF:99:72:2C:96:E5utndatacorpsgcca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 58:11:9F:0E:12:82:87:EA:50:FD:D9:87:45:6F:4F:78:DC:FA:D6:D4mozillacert15.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 74:20:74:41:72:9C:DD:92:EC:79:31:D8:23:10:8D:C2:81:92:E2:BBdigicertglobalrootca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C:54:36mozillacert66.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): DD:E1:D2:A9:01:80:2E:1D:87:5E:84:B3:80:7E:4B:B1:FD:99:41:34mozillacert112.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 43:13:BB:96:F1:D5:86:9B:C1:4E:6A:92:F6:CF:F6:34:69:87:82:37utnuserfirstclientauthemailca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): B1:72:B1:A5:6D:95:F9:1F:E5:02:87:E1:4D:37:EA:6A:44:63:76:8Averisignc2g1.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 67:82:AA:E0:ED:EE:E2:1A:58:39:D3:C0:CD:14:68:0A:4F:60:14:2Amozillacert55.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): AA:DB:BC:22:23:8F:C4:01:A1:27:BB:38:DD:F4:1D:DB:08:9E:F0:12mozillacert101.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 99:A6:9B:E6:1A:FE:88:6B:4D:2B:82:00:7C:B8:54:FC:31:7E:15:39mozillacert119.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 75:E0:AB:B6:13:85:12:27:1C:04:F8:5F:DD:DE:38:E4:B7:24:2E:FE

Versão da API 2010-03-31162

Page 170: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAutoridades de certificação para endpoints HTTPS

verisignc3g1.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): A1:DB:63:93:91:6F:17:E4:18:55:09:40:04:15:C7:02:40:B0:AE:6Bmozillacert44.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 5F:43:E5:B1:BF:F8:78:8C:AC:1C:C7:CA:4A:9A:C6:22:2B:CC:34:C6mozillacert108.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): B1:BC:96:8B:D4:F4:9D:62:2A:A8:9A:81:F2:15:01:52:A4:1D:82:9Cmozillacert95.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): DA:FA:F7:FA:66:84:EC:06:8F:14:50:BD:C7:C2:81:A5:BC:A9:64:57keynectisrootca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 9C:61:5C:4D:4D:85:10:3A:53:26:C2:4D:BA:EA:E4:A2:D2:D5:CC:97mozillacert141.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 31:7A:2A:D0:7F:2B:33:5E:F5:A1:C3:4E:4B:57:E8:B7:D8:F1:FC:A6equifaxsecureglobalebusinessca1, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 7E:78:4A:10:1C:82:65:CC:2D:E1:F1:6D:47:B4:40:CA:D9:0A:19:45baltimorecodesigningca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 30:46:D8:C8:88:FF:69:30:C3:4A:FC:CD:49:27:08:7C:60:56:7B:0Dmozillacert33.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): FE:B8:C4:32:DC:F9:76:9A:CE:AE:3D:D8:90:8F:FD:28:86:65:64:7Dmozillacert0.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 97:81:79:50:D8:1C:96:70:CC:34:D8:09:CF:79:44:31:36:7E:F4:74mozillacert84.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): D3:C0:63:F2:19:ED:07:3E:34:AD:5D:75:0B:32:76:29:FF:D5:9A:F2mozillacert130.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): E5:DF:74:3C:B6:01:C4:9B:98:43:DC:AB:8C:E8:6A:81:10:9F:E4:8Emozillacert148.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 04:83:ED:33:99:AC:36:08:05:87:22:ED:BC:5E:46:00:E3:BE:F9:D7mozillacert22.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 32:3C:11:8E:1B:F7:B8:B6:52:54:E2:E2:10:0D:D6:02:90:37:F0:96verisignc1g1.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 90:AE:A2:69:85:FF:14:80:4C:43:49:52:EC:E9:60:84:77:AF:55:6Fmozillacert7.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): AD:7E:1C:28:B0:64:EF:8F:60:03:40:20:14:C3:D0:E3:37:0E:B5:8Amozillacert73.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): B5:1C:06:7C:EE:2B:0C:3D:F8:55:AB:2D:92:F4:FE:39:D4:E7:0F:0Emozillacert137.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 4A:65:D5:F4:1D:EF:39:B8:B8:90:4A:4A:D3:64:81:33:CF:C7:A1:D1swisssignsilverg2ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 9B:AA:E5:9F:56:EE:21:CB:43:5A:BE:25:93:DF:A7:F0:40:D1:1D:CBmozillacert11.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 05:63:B8:63:0D:62:D7:5A:BB:C8:AB:1E:4B:DF:B5:A8:99:B2:4D:43mozillacert29.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 74:F8:A3:C3:EF:E7:B3:90:06:4B:83:90:3C:21:64:60:20:E5:DF:CEmozillacert62.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): A1:DB:63:93:91:6F:17:E4:18:55:09:40:04:15:C7:02:40:B0:AE:6Bmozillacert126.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 25:01:90:19:CF:FB:D9:99:1C:B7:68:25:74:8D:94:5F:30:93:95:42soneraclass1ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 07:47:22:01:99:CE:74:B9:7C:B0:3D:79:B2:64:A2:C8:55:E9:33:FFmozillacert18.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 79:98:A3:08:E1:4D:65:85:E6:C2:1E:15:3A:71:9F:BA:5A:D3:4A:D9mozillacert51.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): FA:B7:EE:36:97:26:62:FB:2D:B0:2A:F6:BF:03:FD:E8:7C:4B:2F:9Bmozillacert69.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 2F:78:3D:25:52:18:A7:4A:65:39:71:B5:2C:A2:9C:45:15:6F:E9:19mozillacert115.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 59:0D:2D:7D:88:4F:40:2E:61:7E:A5:62:32:17:65:CF:17:D8:94:E9verisignclass3g5ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 4E:B6:D5:78:49:9B:1C:CF:5F:58:1E:AD:56:BE:3D:9B:67:44:A5:E5utnuserfirsthardwareca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 04:83:ED:33:99:AC:36:08:05:87:22:ED:BC:5E:46:00:E3:BE:F9:D7addtrustqualifiedca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 4D:23:78:EC:91:95:39:B5:00:7F:75:8F:03:3B:21:1E:C5:4D:8B:CFmozillacert40.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 80:25:EF:F4:6E:70:C8:D4:72:24:65:84:FE:40:3B:8A:8D:6A:DB:F5mozillacert58.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 8D:17:84:D5:37:F3:03:7D:EC:70:FE:57:8B:51:9A:99:E6:10:D7:B0

Versão da API 2010-03-31163

Page 171: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAutoridades de certificação para endpoints HTTPS

verisignclass3g3ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 13:2D:0D:45:53:4B:69:97:CD:B2:D5:C3:39:E2:55:76:60:9B:5C:C6mozillacert104.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 4F:99:AA:93:FB:2B:D1:37:26:A1:99:4A:CE:7F:F0:05:F2:93:5D:1Emozillacert91.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 3B:C0:38:0B:33:C3:F6:A6:0C:86:15:22:93:D9:DF:F5:4B:81:C0:04thawtepersonalfreemailca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): E6:18:83:AE:84:CA:C1:C1:CD:52:AD:E8:E9:25:2B:45:A6:4F:B7:E2certplusclass3pprimaryca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 21:6B:2A:29:E6:2A:00:CE:82:01:46:D8:24:41:41:B9:25:11:B2:79verisignc3g4.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 22:D5:D8:DF:8F:02:31:D1:8D:F7:9D:B7:CF:8A:2D:64:C9:3F:6C:3Aswisssigngoldg2ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): D8:C5:38:8A:B7:30:1B:1B:6E:D4:7A:E6:45:25:3A:6F:9F:1A:27:61mozillacert47.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 1B:4B:39:61:26:27:6B:64:91:A2:68:6D:D7:02:43:21:2D:1F:1D:96mozillacert80.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): B8:23:6B:00:2F:1D:16:86:53:01:55:6C:11:A4:37:CA:EB:FF:C3:BBmozillacert98.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): C9:A8:B9:E7:55:80:5E:58:E3:53:77:A7:25:EB:AF:C3:7B:27:CC:D7mozillacert144.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 37:F7:6D:E6:07:7C:90:C5:B1:3E:93:1A:B7:41:10:B4:F2:E4:9A:27starfieldclass2ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): AD:7E:1C:28:B0:64:EF:8F:60:03:40:20:14:C3:D0:E3:37:0E:B5:8Amozillacert36.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 23:88:C9:D3:71:CC:9E:96:3D:FF:7D:3C:A7:CE:FC:D6:25:EC:19:0Dmozillacert3.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 87:9F:4B:EE:05:DF:98:58:3B:E3:60:D6:33:E7:0D:3F:FE:98:71:AFglobalsignr2ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 75:E0:AB:B6:13:85:12:27:1C:04:F8:5F:DD:DE:38:E4:B7:24:2E:FEmozillacert87.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 5F:3B:8C:F2:F8:10:B3:7D:78:B4:CE:EC:19:19:C3:73:34:B9:C7:74mozillacert133.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 85:B5:FF:67:9B:0C:79:96:1F:C8:6E:44:22:00:46:13:DB:17:92:84mozillacert25.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 4E:B6:D5:78:49:9B:1C:CF:5F:58:1E:AD:56:BE:3D:9B:67:44:A5:E5verisignclass1g2ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 27:3E:E1:24:57:FD:C4:F9:0C:55:E8:2B:56:16:7F:62:F5:32:E5:47mozillacert76.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): F9:B5:B6:32:45:5F:9C:BE:EC:57:5F:80:DC:E9:6E:2C:C7:B2:78:B7mozillacert122.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 02:FA:F3:E2:91:43:54:68:60:78:57:69:4D:F5:E4:5B:68:85:18:68godaddysecurecertificationauthority, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 7C:46:56:C3:06:1F:7F:4C:0D:67:B3:19:A8:55:F6:0E:BC:11:FC:44mozillacert14.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 5F:B7:EE:06:33:E2:59:DB:AD:0C:4C:9A:E6:D3:8F:1A:61:C7:DC:25equifaxsecureca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): D2:32:09:AD:23:D3:14:23:21:74:E4:0D:7F:9D:62:13:97:86:63:3Amozillacert65.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 69:BD:8C:F4:9C:D3:00:FB:59:2E:17:93:CA:55:6A:F3:EC:AA:35:FBmozillacert111.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 9C:BB:48:53:F6:A4:F6:D3:52:A4:E8:32:52:55:60:13:F5:AD:AF:65certumtrustednetworkca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 07:E0:32:E0:20:B7:2C:3F:19:2F:06:28:A2:59:3A:19:A7:0F:06:9Emozillacert129.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): E6:21:F3:35:43:79:05:9A:4B:68:30:9D:8A:2F:74:22:15:87:EC:79mozillacert54.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 03:9E:ED:B8:0B:E7:A0:3C:69:53:89:3B:20:D2:D9:32:3A:4C:2A:FDmozillacert100.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 58:E8:AB:B0:36:15:33:FB:80:F7:9B:1B:6D:29:D3:FF:8D:5F:00:F0mozillacert118.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 7E:78:4A:10:1C:82:65:CC:2D:E1:F1:6D:47:B4:40:CA:D9:0A:19:45mozillacert151.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): AC:ED:5F:65:53:FD:25:CE:01:5F:1F:7A:48:3B:6A:74:9F:61:78:C6thawteprimaryrootcag3, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): F1:8B:53:8D:1B:E9:03:B6:A6:F0:56:43:5B:17:15:89:CA:F3:6B:F2

Versão da API 2010-03-31164

Page 172: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAutoridades de certificação para endpoints HTTPS

quovadisrootca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): DE:3F:40:BD:50:93:D3:9B:6C:60:F6:DA:BC:07:62:01:00:89:76:C9thawteprimaryrootcag2, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): AA:DB:BC:22:23:8F:C4:01:A1:27:BB:38:DD:F4:1D:DB:08:9E:F0:12deprecateditsecca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 12:12:0B:03:0E:15:14:54:F4:DD:B3:F5:DE:13:6E:83:5A:29:72:9Dentrustrootcag2, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 8C:F4:27:FD:79:0C:3A:D1:66:06:8D:E8:1E:57:EF:BB:93:22:72:D4mozillacert43.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): F9:CD:0E:2C:DA:76:24:C1:8F:BD:F0:F0:AB:B6:45:B8:F7:FE:D5:7Amozillacert107.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 8E:1C:74:F8:A6:20:B9:E5:8A:F4:61:FA:EC:2B:47:56:51:1A:52:C6trustcenterclass4caii, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): A6:9A:91:FD:05:7F:13:6A:42:63:0B:B1:76:0D:2D:51:12:0C:16:50mozillacert94.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 49:0A:75:74:DE:87:0A:47:FE:58:EE:F6:C7:6B:EB:C6:0B:12:40:99mozillacert140.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): CA:3A:FB:CF:12:40:36:4B:44:B2:16:20:88:80:48:39:19:93:7C:F7ttelesecglobalrootclass3ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 55:A6:72:3E:CB:F2:EC:CD:C3:23:74:70:19:9D:2A:BE:11:E3:81:D1amzninternalcorpca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 43:E3:E6:37:C5:88:05:67:91:37:E3:72:4D:01:7F:F4:1B:CE:3A:97mozillacert32.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 60:D6:89:74:B5:C2:65:9E:8A:0F:C1:88:7C:88:D2:46:69:1B:18:2Cmozillacert83.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): A0:73:E5:C5:BD:43:61:0D:86:4C:21:13:0A:85:58:57:CC:9C:EA:46verisignroot.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 36:79:CA:35:66:87:72:30:4D:30:A5:FB:87:3B:0F:A7:7B:B7:0D:54mozillacert147.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 58:11:9F:0E:12:82:87:EA:50:FD:D9:87:45:6F:4F:78:DC:FA:D6:D4camerfirmachambersca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 78:6A:74:AC:76:AB:14:7F:9C:6A:30:50:BA:9E:A8:7E:FE:9A:CE:3Cmozillacert21.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 9B:AA:E5:9F:56:EE:21:CB:43:5A:BE:25:93:DF:A7:F0:40:D1:1D:CBmozillacert39.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): AE:50:83:ED:7C:F4:5C:BC:8F:61:C6:21:FE:68:5D:79:42:21:15:6Emozillacert6.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 27:96:BA:E6:3F:18:01:E2:77:26:1B:A0:D7:77:70:02:8F:20:EE:E4verisignuniversalrootca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 36:79:CA:35:66:87:72:30:4D:30:A5:FB:87:3B:0F:A7:7B:B7:0D:54mozillacert72.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 47:BE:AB:C9:22:EA:E8:0E:78:78:34:62:A7:9F:45:C2:54:FD:E6:8Bgeotrustuniversalca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): E6:21:F3:35:43:79:05:9A:4B:68:30:9D:8A:2F:74:22:15:87:EC:79mozillacert136.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): D1:EB:23:A4:6D:17:D6:8F:D9:25:64:C2:F1:F1:60:17:64:D8:E3:49mozillacert10.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 5F:3A:FC:0A:8B:64:F6:86:67:34:74:DF:7E:A9:A2:FE:F9:FA:7A:51mozillacert28.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 66:31:BF:9E:F7:4F:9E:B6:C9:D5:A6:0C:BA:6A:BE:D1:F7:BD:EF:7Bmozillacert61.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): E0:B4:32:2E:B2:F6:A5:68:B6:54:53:84:48:18:4A:50:36:87:43:84mozillacert79.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): D8:A6:33:2C:E0:03:6F:B1:85:F6:63:4F:7D:6A:06:65:26:32:28:27mozillacert125.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): B3:1E:B1:B7:40:E3:6C:84:02:DA:DC:37:D4:4D:F5:D4:67:49:52:F9mozillacert17.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 40:54:DA:6F:1C:3F:40:74:AC:ED:0F:EC:CD:DB:79:D1:53:FB:90:1Dmozillacert50.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 8C:96:BA:EB:DD:2B:07:07:48:EE:30:32:66:A0:F3:98:6E:7C:AE:58mozillacert68.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): AE:C5:FB:3F:C8:E1:BF:C4:E5:4F:03:07:5A:9A:E8:00:B7:F7:B6:FAmozillacert114.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 51:C6:E7:08:49:06:6E:F3:92:D4:5C:A0:0D:6D:A3:62:8F:C3:52:39mozillacert57.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): D6:DA:A8:20:8D:09:D2:15:4D:24:B5:2F:CB:34:6E:B2:58:B2:8A:58

Versão da API 2010-03-31165

Page 173: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAutoridades de certificação para endpoints HTTPS

verisignc2g3.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 61:EF:43:D7:7F:CA:D4:61:51:BC:98:E0:C3:59:12:AF:9F:EB:63:11verisignclass2g3ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 61:EF:43:D7:7F:CA:D4:61:51:BC:98:E0:C3:59:12:AF:9F:EB:63:11mozillacert103.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 70:C1:8D:74:B4:28:81:0A:E4:FD:A5:75:D7:01:9F:99:B0:3D:50:74mozillacert90.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): F3:73:B3:87:06:5A:28:84:8A:F2:F3:4A:CE:19:2B:DD:C7:8E:9C:ACverisignc3g3.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 13:2D:0D:45:53:4B:69:97:CD:B2:D5:C3:39:E2:55:76:60:9B:5C:C6mozillacert46.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 40:9D:4B:D9:17:B5:5C:27:B6:9B:64:CB:98:22:44:0D:CD:09:B8:89godaddyclass2ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 27:96:BA:E6:3F:18:01:E2:77:26:1B:A0:D7:77:70:02:8F:20:EE:E4verisignc4g3.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): C8:EC:8C:87:92:69:CB:4B:AB:39:E9:8D:7E:57:67:F3:14:95:73:9Dmozillacert97.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 85:37:1C:A6:E5:50:14:3D:CE:28:03:47:1B:DE:3A:09:E8:F8:77:0Fmozillacert143.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 36:B1:2B:49:F9:81:9E:D7:4C:9E:BC:38:0F:C6:56:8F:5D:AC:B2:F7mozillacert35.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 2A:C8:D5:8B:57:CE:BF:2F:49:AF:F2:FC:76:8F:51:14:62:90:7A:41mozillacert2.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 22:D5:D8:DF:8F:02:31:D1:8D:F7:9D:B7:CF:8A:2D:64:C9:3F:6C:3Autnuserfirstobjectca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): E1:2D:FB:4B:41:D7:D9:C3:2B:30:51:4B:AC:1D:81:D8:38:5E:2D:46mozillacert86.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 74:2C:31:92:E6:07:E4:24:EB:45:49:54:2B:E1:BB:C5:3E:61:74:E2mozillacert132.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 39:21:C1:15:C1:5D:0E:CA:5C:CB:5B:C4:F0:7D:21:D8:05:0B:56:6Aaddtrustclass1ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): CC:AB:0E:A0:4C:23:01:D6:69:7B:DD:37:9F:CD:12:EB:24:E3:94:9Dmozillacert24.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 59:AF:82:79:91:86:C7:B4:75:07:CB:CF:03:57:46:EB:04:DD:B7:16verisignc1g3.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 20:42:85:DC:F7:EB:76:41:95:57:8E:13:6B:D4:B7:D1:E9:8E:46:A5mozillacert9.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): F4:8B:11:BF:DE:AB:BE:94:54:20:71:E6:41:DE:6B:BE:88:2B:40:B9amzninternalrootca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): A7:B7:F6:15:8A:FF:1E:C8:85:13:38:BC:93:EB:A2:AB:A4:09:EF:06mozillacert75.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): D2:32:09:AD:23:D3:14:23:21:74:E4:0D:7F:9D:62:13:97:86:63:3Aentrustevca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): B3:1E:B1:B7:40:E3:6C:84:02:DA:DC:37:D4:4D:F5:D4:67:49:52:F9secomscrootca2, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 5F:3B:8C:F2:F8:10:B3:7D:78:B4:CE:EC:19:19:C3:73:34:B9:C7:74camerfirmachambersignca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 4A:BD:EE:EC:95:0D:35:9C:89:AE:C7:52:A1:2C:5B:29:F6:D6:AA:0Csecomscrootca1, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 36:B1:2B:49:F9:81:9E:D7:4C:9E:BC:38:0F:C6:56:8F:5D:AC:B2:F7mozillacert121.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): CC:AB:0E:A0:4C:23:01:D6:69:7B:DD:37:9F:CD:12:EB:24:E3:94:9Dmozillacert139.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): DE:3F:40:BD:50:93:D3:9B:6C:60:F6:DA:BC:07:62:01:00:89:76:C9mozillacert13.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 06:08:3F:59:3F:15:A1:04:A0:69:A4:6B:A9:03:D0:06:B7:97:09:91mozillacert64.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 62:7F:8D:78:27:65:63:99:D2:7D:7F:90:44:C9:FE:B3:F3:3E:FA:9Amozillacert110.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 93:05:7A:88:15:C6:4F:CE:88:2F:FA:91:16:52:28:78:BC:53:64:17mozillacert128.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): A9:E9:78:08:14:37:58:88:F2:05:19:B0:6D:2B:0D:2B:60:16:90:7Dentrust2048ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 50:30:06:09:1D:97:D4:F5:AE:39:F7:CB:E7:92:7D:7D:65:2D:34:31mozillacert53.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 7F:8A:B0:CF:D0:51:87:6A:66:F3:36:0F:47:C8:8D:8C:D3:35:FC:74

Versão da API 2010-03-31166

Page 174: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAutoridades de certificação para endpoints HTTPS

mozillacert117.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): D4:DE:20:D0:5E:66:FC:53:FE:1A:50:88:2C:78:DB:28:52:CA:E4:74mozillacert150.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 33:9B:6B:14:50:24:9B:55:7A:01:87:72:84:D9:E0:2F:C3:D2:D8:E9thawteserverca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 9F:AD:91:A6:CE:6A:C6:C5:00:47:C4:4E:C9:D4:A5:0D:92:D8:49:79secomvalicertclass1ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): E5:DF:74:3C:B6:01:C4:9B:98:43:DC:AB:8C:E8:6A:81:10:9F:E4:8Emozillacert42.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 85:A4:08:C0:9C:19:3E:5D:51:58:7D:CD:D6:13:30:FD:8C:DE:37:BFgtecybertrustglobalca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 97:81:79:50:D8:1C:96:70:CC:34:D8:09:CF:79:44:31:36:7E:F4:74mozillacert106.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): E7:A1:90:29:D3:D5:52:DC:0D:0F:C6:92:D3:EA:88:0D:15:2E:1A:6Bequifaxsecureebusinessca1, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): DA:40:18:8B:91:89:A3:ED:EE:AE:DA:97:FE:2F:9D:F5:B7:D1:8A:41mozillacert93.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 31:F1:FD:68:22:63:20:EE:C6:3B:3F:9D:EA:4A:3E:53:7C:7C:39:17quovadisrootca3, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 1F:49:14:F7:D8:74:95:1D:DD:AE:02:C0:BE:FD:3A:2D:82:75:51:85quovadisrootca2, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): CA:3A:FB:CF:12:40:36:4B:44:B2:16:20:88:80:48:39:19:93:7C:F7soneraclass2ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 37:F7:6D:E6:07:7C:90:C5:B1:3E:93:1A:B7:41:10:B4:F2:E4:9A:27mozillacert31.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 9F:74:4E:9F:2B:4D:BA:EC:0F:31:2C:50:B6:56:3B:8E:2D:93:C3:11mozillacert49.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 61:57:3A:11:DF:0E:D8:7E:D5:92:65:22:EA:D0:56:D7:44:B3:23:71mozillacert82.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 2E:14:DA:EC:28:F0:FA:1E:8E:38:9A:4E:AB:EB:26:C0:0A:D3:83:C3mozillacert146.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 21:FC:BD:8E:7F:6C:AF:05:1B:D1:B3:43:EC:A8:E7:61:47:F2:0F:8Abaltimorecybertrustca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): D4:DE:20:D0:5E:66:FC:53:FE:1A:50:88:2C:78:DB:28:52:CA:E4:74mozillacert20.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): D8:C5:38:8A:B7:30:1B:1B:6E:D4:7A:E6:45:25:3A:6F:9F:1A:27:61mozillacert38.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): CB:A1:C5:F8:B0:E3:5E:B8:B9:45:12:D3:F9:34:A2:E9:06:10:D3:36mozillacert5.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): B8:01:86:D1:EB:9C:86:A5:41:04:CF:30:54:F3:4C:52:B7:E5:58:C6mozillacert71.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 4A:BD:EE:EC:95:0D:35:9C:89:AE:C7:52:A1:2C:5B:29:F6:D6:AA:0Cverisignclass3g4ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 22:D5:D8:DF:8F:02:31:D1:8D:F7:9D:B7:CF:8A:2D:64:C9:3F:6C:3Amozillacert89.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): C8:EC:8C:87:92:69:CB:4B:AB:39:E9:8D:7E:57:67:F3:14:95:73:9Dmozillacert135.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 62:52:DC:40:F7:11:43:A2:2F:DE:9E:F7:34:8E:06:42:51:B1:81:18camerfirmachamberscommerceca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 6E:3A:55:A4:19:0C:19:5C:93:84:3C:C0:DB:72:2E:31:30:61:F0:B1mozillacert27.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 3A:44:73:5A:E5:81:90:1F:24:86:61:46:1E:3B:9C:C4:5F:F5:3A:1Bverisignclass3g2ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 85:37:1C:A6:E5:50:14:3D:CE:28:03:47:1B:DE:3A:09:E8:F8:77:0Fmozillacert60.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 3B:C4:9F:48:F8:F3:73:A0:9C:1E:BD:F8:5B:B1:C3:65:C7:D8:11:B3mozillacert78.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 29:36:21:02:8B:20:ED:02:F5:66:C5:32:D1:D6:ED:90:9F:45:00:2Fcertumca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 62:52:DC:40:F7:11:43:A2:2F:DE:9E:F7:34:8E:06:42:51:B1:81:18deutschetelekomrootca2, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 85:A4:08:C0:9C:19:3E:5D:51:58:7D:CD:D6:13:30:FD:8C:DE:37:BFmozillacert124.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 4D:23:78:EC:91:95:39:B5:00:7F:75:8F:03:3B:21:1E:C5:4D:8B:CFmozillacert16.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): DA:C9:02:4F:54:D8:F6:DF:94:93:5F:B1:73:26:38:CA:6A:D7:7C:13

Versão da API 2010-03-31167

Page 175: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAutoridades de certificação para endpoints HTTPS

secomevrootca1, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): FE:B8:C4:32:DC:F9:76:9A:CE:AE:3D:D8:90:8F:FD:28:86:65:64:7Dmozillacert67.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): D6:9B:56:11:48:F0:1C:77:C5:45:78:C1:09:26:DF:5B:85:69:76:ADglobalsignr3ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): D6:9B:56:11:48:F0:1C:77:C5:45:78:C1:09:26:DF:5B:85:69:76:ADmozillacert113.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 50:30:06:09:1D:97:D4:F5:AE:39:F7:CB:E7:92:7D:7D:65:2D:34:31aolrootca2, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 85:B5:FF:67:9B:0C:79:96:1F:C8:6E:44:22:00:46:13:DB:17:92:84trustcenteruniversalcai, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 6B:2F:34:AD:89:58:BE:62:FD:B0:6B:5C:CE:BB:9D:D9:4F:4E:39:F3aolrootca1, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 39:21:C1:15:C1:5D:0E:CA:5C:CB:5B:C4:F0:7D:21:D8:05:0B:56:6Amozillacert56.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): F1:8B:53:8D:1B:E9:03:B6:A6:F0:56:43:5B:17:15:89:CA:F3:6B:F2verisignc2g2.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): B3:EA:C4:47:76:C9:C8:1C:EA:F2:9D:95:B6:CC:A0:08:1B:67:EC:9Dverisignclass1g3ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 20:42:85:DC:F7:EB:76:41:95:57:8E:13:6B:D4:B7:D1:E9:8E:46:A5mozillacert102.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 96:C9:1B:0B:95:B4:10:98:42:FA:D0:D8:22:79:FE:60:FA:B9:16:83addtrustexternalca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 02:FA:F3:E2:91:43:54:68:60:78:57:69:4D:F5:E4:5B:68:85:18:68verisignclass3ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): A1:DB:63:93:91:6F:17:E4:18:55:09:40:04:15:C7:02:40:B0:AE:6Bverisignc3g2.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 85:37:1C:A6:E5:50:14:3D:CE:28:03:47:1B:DE:3A:09:E8:F8:77:0Fmozillacert45.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 67:65:0D:F1:7E:8E:7E:5B:82:40:A4:F4:56:4B:CF:E2:3D:69:C6:F0verisignc4g2.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 0B:77:BE:BB:CB:7A:A2:47:05:DE:CC:0F:BD:6A:02:FC:7A:BD:9B:52digicertassuredidrootca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 05:63:B8:63:0D:62:D7:5A:BB:C8:AB:1E:4B:DF:B5:A8:99:B2:4D:43verisignclass1ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): CE:6A:64:A3:09:E4:2F:BB:D9:85:1C:45:3E:64:09:EA:E8:7D:60:F1mozillacert109.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): B5:61:EB:EA:A4:DE:E4:25:4B:69:1A:98:A5:57:47:C2:34:C7:D9:71thawtepremiumserverca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): E0:AB:05:94:20:72:54:93:05:60:62:02:36:70:F7:CD:2E:FC:66:66verisigntsaca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): BE:36:A4:56:2F:B2:EE:05:DB:B3:D3:23:23:AD:F4:45:08:4E:D6:56mozillacert96.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 55:A6:72:3E:CB:F2:EC:CD:C3:23:74:70:19:9D:2A:BE:11:E3:81:D1mozillacert142.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 1F:49:14:F7:D8:74:95:1D:DD:AE:02:C0:BE:FD:3A:2D:82:75:51:85thawteprimaryrootca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 91:C6:D6:EE:3E:8A:C8:63:84:E5:48:C2:99:29:5C:75:6C:81:7B:81mozillacert34.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 59:22:A1:E1:5A:EA:16:35:21:F8:98:39:6A:46:46:B0:44:1B:0F:A9mozillacert1.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 23:E5:94:94:51:95:F2:41:48:03:B4:D5:64:D2:A3:A3:F5:D8:8B:8Cmozillacert85.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): CF:9E:87:6D:D3:EB:FC:42:26:97:A3:B5:A3:7A:A0:76:A9:06:23:48valicertclass2ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 31:7A:2A:D0:7F:2B:33:5E:F5:A1:C3:4E:4B:57:E8:B7:D8:F1:FC:A6mozillacert131.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 37:9A:19:7B:41:85:45:35:0C:A6:03:69:F3:3C:2E:AF:47:4F:20:79mozillacert149.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 6E:3A:55:A4:19:0C:19:5C:93:84:3C:C0:DB:72:2E:31:30:61:F0:B1geotrustprimaryca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 32:3C:11:8E:1B:F7:B8:B6:52:54:E2:E2:10:0D:D6:02:90:37:F0:96mozillacert23.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 91:C6:D6:EE:3E:8A:C8:63:84:E5:48:C2:99:29:5C:75:6C:81:7B:81verisignc1g2.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 27:3E:E1:24:57:FD:C4:F9:0C:55:E8:2B:56:16:7F:62:F5:32:E5:47

Versão da API 2010-03-31168

Page 176: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorVerificando assinaturas de mensagens

mozillacert8.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 3E:2B:F7:F2:03:1B:96:F3:8C:E6:C4:D8:A8:5D:3E:2D:58:47:6A:0Fmozillacert74.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 92:5A:8F:8D:2C:6D:04:E0:66:5F:59:6A:FF:22:D8:63:E8:25:6F:3Fmozillacert120.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): DA:40:18:8B:91:89:A3:ED:EE:AE:DA:97:FE:2F:9D:F5:B7:D1:8A:41geotrustglobalca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): DE:28:F4:A4:FF:E5:B9:2F:A3:C5:03:D1:A3:49:A7:F9:96:2A:82:12mozillacert138.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): E1:9F:E3:0E:8B:84:60:9E:80:9B:17:0D:72:A8:C5:BA:6E:14:09:BDmozillacert12.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C:54:36comodoaaaca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): D1:EB:23:A4:6D:17:D6:8F:D9:25:64:C2:F1:F1:60:17:64:D8:E3:49mozillacert63.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 89:DF:74:FE:5C:F4:0F:4A:80:F9:E3:37:7D:54:DA:91:E1:01:31:8Ecertplusclass2primaryca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 74:20:74:41:72:9C:DD:92:EC:79:31:D8:23:10:8D:C2:81:92:E2:BBmozillacert127.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): DE:28:F4:A4:FF:E5:B9:2F:A3:C5:03:D1:A3:49:A7:F9:96:2A:82:12ttelesecglobalrootclass2ca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 59:0D:2D:7D:88:4F:40:2E:61:7E:A5:62:32:17:65:CF:17:D8:94:E9mozillacert19.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): B4:35:D4:E1:11:9D:1C:66:90:A7:49:EB:B3:94:BD:63:7B:A7:82:B7digicerthighassuranceevrootca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 5F:B7:EE:06:33:E2:59:DB:AD:0C:4C:9A:E6:D3:8F:1A:61:C7:DC:25mozillacert52.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 8B:AF:4C:9B:1D:F0:2A:92:F7:DA:12:8E:B9:1B:AC:F4:98:60:4B:6Fmozillacert116.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 2B:B1:F5:3E:55:0C:1D:C5:F1:D4:E6:B7:6A:46:4B:55:06:02:AC:21globalsignca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): B1:BC:96:8B:D4:F4:9D:62:2A:A8:9A:81:F2:15:01:52:A4:1D:82:9Cmozillacert41.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 6B:2F:34:AD:89:58:BE:62:FD:B0:6B:5C:CE:BB:9D:D9:4F:4E:39:F3mozillacert59.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 36:79:CA:35:66:87:72:30:4D:30:A5:FB:87:3B:0F:A7:7B:B7:0D:54mozillacert105.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 77:47:4F:C6:30:E4:0F:4C:47:64:3F:84:BA:B8:C6:95:4A:8A:41:ECtrustcenterclass2caii, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): AE:50:83:ED:7C:F4:5C:BC:8F:61:C6:21:FE:68:5D:79:42:21:15:6Emozillacert92.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): A3:F1:33:3F:E2:42:BF:CF:C5:D1:4E:8F:39:42:98:40:68:10:D1:A0geotrustprimarycag3, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 03:9E:ED:B8:0B:E7:A0:3C:69:53:89:3B:20:D2:D9:32:3A:4C:2A:FDentrustsslca, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 99:A6:9B:E6:1A:FE:88:6B:4D:2B:82:00:7C:B8:54:FC:31:7E:15:39verisignc3g5.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 4E:B6:D5:78:49:9B:1C:CF:5F:58:1E:AD:56:BE:3D:9B:67:44:A5:E5geotrustprimarycag2, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): 8D:17:84:D5:37:F3:03:7D:EC:70:FE:57:8B:51:9A:99:E6:10:D7:B0mozillacert30.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): E7:B4:F6:9D:61:EC:90:69:DB:7E:90:A7:40:1A:3C:F4:7D:4F:E8:EEmozillacert48.pem, Apr 22, 2014, trustedCertEntry, Certificate fingerprint (SHA1): A0:A1:AB:90:C9:FC:84:7B:3B:12:61:E8:97:7D:5F:D3:22:61:D3:CC

Verificação das assinaturas de mensagens doAmazon SNS

Você deve verificar a autenticidade de uma mensagem de notificação, confirmação de inscrição ouconfirmação de cancelamento de inscrição enviada pelo Amazon SNS. Ao usar informações contidasna mensagem do Amazon SNS, o endpoint pode recriar a string para assinar e a assinatura para que

Versão da API 2010-03-31169

Page 177: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorVerificando assinaturas de mensagens

você possa verificar o conteúdo da mensagem comparando a assinatura recriada a partir do conteúdo damensagem com a assinatura enviada pelo Amazon SNS junto com a mensagem.

Para ajudar a impedir ataques de falsificação, você deve fazer o seguinte ao verificar mensagens enviadaspelo Amazon SNS:

• Sempre use HTTPS ao obter o certificado do Amazon SNS.• Valide a autenticidade do certificado.• Verifique se o certificado foi recebido do Amazon SNS.• Quando possível, use um dos AWS SDKs compatíveis para o Amazon SNS validar e verificar as

mensagens. Por exemplo, com o AWS SDK para PHP você usaria o método isValid da classeMessageValidator.

Para ver um exemplo de código para um servlet Java que processa mensagens do Amazon SNS , consulteExemplo de código para um servlet Java de endpoint do Amazon SNS (p. 172).

Para verificar a assinatura de uma mensagem do Amazon SNS ao usar solicitações baseadas emconsulta HTTP

1. Extraia os pares nome/valor do documento JSON no corpo da solicitação HTTP POST enviadapelo Amazon SNS para o endpoint. Você estará usando os valores de alguns dos pares nome/valor para criar a string para assinar. Ao verificar a assinatura de uma mensagem do Amazon SNS,é fundamental que você converta os caracteres de controle em sequência de escape para suasrepresentações de caracteres originais nos valores Message e Subject. Esses valores devemestar em seus formatos originais quando você os usa como parte da string para assinar. Para obterinformações sobre como analisar o documento JSON, consulte Etapa 1: Verificar se o endpoint estápronto para processar mensagens do Amazon SNS (p. 150).

SignatureVersion mostra a versão da assinatura. A partir da versão da assinatura, você podedeterminar os requisitos para gerar a assinatura. Para notificações do Amazon SNS, Amazon SNSatualmente oferece suporte à versão 1 da assinatura. Esta seção apresenta as etapas para a criaçãode uma assinatura usando a versão 1 da assinatura.

2. Obtenha o certificado X509 usado pelo Amazon SNS para assinar a mensagem. O valorSigningCertURL aponta para a localização do certificado X509 usado para criar a assinatura digitalda mensagem. Recupere o certificado nesse local.

3. Extraia a chave pública do certificado. A chave pública do certificado especificado porSigningCertURL é usada para verificar a autenticidade e a integridade da mensagem.

4. Determinar o tipo de mensagem. O formato de string a ser assinada depende do tipo de mensagem,que é especificado pelo valor Type.

5. Crie a string para assinar. A string para assinar é um caractere de nova linha – lista delimitada dospares nome/valor específicos da mensagem. Cada par nome/valor é representado pelo nome primeiroseguido por um caractere de nova linha, seguido pelo valor e terminando com um caractere de novalinha. Os pares nome/valor devem ser listados em ordem de classificação por bytes.

Dependendo do tipo de mensagem, a string para assinar deve ter os seguintes pares nome/valor.

Notificação

As mensagens de notificação devem conter os seguintes pares nome/valor:

MessageMessageIdSubject (if included in the message)TimestampTopicArnType

Versão da API 2010-03-31170

Page 178: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorVerificando assinaturas de mensagens

O exemplo a seguir é uma string para assinar para uma Notification.

MessageMy Test MessageMessageId4d4dc071-ddbf-465d-bba8-08f81c89da64SubjectMy subjectTimestamp2012-06-05T04:37:04.321ZTopicArnarn:aws:sns:us-east-1:123456789012:s4-MySNSTopic-1G1WEFCOXTC0PTypeNotification

SubscriptionConfirmation e UnsubscribeConfirmation

Mensagens de SubscriptionConfirmation e UnsubscribeConfirmation devem conteros seguintes pares nome/valor:

MessageMessageIdSubscribeURLTimestampTokenTopicArnType

O exemplo a seguir é uma string para assinar para uma SubscriptionConfirmation.

MessageMy Test MessageMessageId3d891288-136d-417f-bc05-901c108273eeSubscribeURLhttps://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:s4-MySNSTopic-1G1WEFCOXTC0P&Token=2336412f37fb687f5d51e6e241d09c8058323f60b964268bfe08ce35640228c208a66d3621bd9f7b012918cfdcfe65e153df551f76df58ed147f1245e330ce77ceff06dedab9f051f7028657e6c42750bf64bc9ef711d494e9f7637b86e690779eb5568f72466806b246bd244fa9392b1bc01eeb1c5e420847a745b7aa4b0085Timestamp2012-06-03T19:25:13.719ZToken2336412f37fb687f5d51e6e241d09c8058323f60b964268bfe08ce35640228c208a66d3621bd9f7b012918cfdcfe65e153df551f76df58ed147f1245e330ce77ceff06dedab9f051f7028657e6c42750bf64bc9ef711d494e9f7637b86e690779eb5568f72466806b246bd244fa9392b1bc01eeb1c5e420847a745b7aa4b0085TopicArnarn:aws:sns:us-west-2:123456789012:s4-MySNSTopic-1G1WEFCOXTC0PTypeSubscriptionConfirmation

6. Decodifique o valor Signature do formato Base64. A mensagem oferece a assinatura no valorSignature, que é codificado como Base64. Antes de comparar o valor da assinatura com aassinatura que você calculou, certifique-se de decodificar o valor Signature do Base64 paracomparar os valores usando o mesmo formato.

7. Gere o valor de hash derivado da mensagem do Amazon SNS. Envie a mensagem do Amazon SNSno formato canônico, para a mesma função de hash usada para gerar a assinatura.

8. Gere o valor de hash declarado da mensagem do Amazon SNS. O valor de hash declarado é oresultado de usar o valor de chave pública (da etapa 3) para decodificar a assinatura entregue com amensagem do Amazon SNS.

9. Verificar a autenticidade e a integridade da mensagem do Amazon SNS. Compare o valor de hashderivado (da etapa 7) com o valor de hash declarado (da etapa 8). Se os valores forem idênticos, odestinatário poderá ter certeza de que a mensagem não foi modificada durante a transferência e que

Versão da API 2010-03-31171

Page 179: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorExemplo de código para um servlet Java de endpoint

deve ter origem no Amazon SNS. Se os valores não forem idênticos, ela não deve ser confiável para odestinatário.

Exemplo de código para um servlet Java deendpoint do Amazon SNS

Important

Os seguintes trechos de código ajudam você a entender um servlet Java que processasolicitações HTTP POST do Amazon SNS. Certifique-se de que esses fragmentos de códigosão adequados para os seus propósitos antes de implantá-los em seu ambiente de produção.Por exemplo, em um ambiente de produção, para ajudar a impedir ataques de falsificação,você deve verificar se a identidade das mensagens recebidas do Amazon SNS é do AmazonSNS. É possível fazer isso verificando se o valor de nome de DNS (DNS Name=sns.us-west-2.amazonaws.com in us-west-2; isso varia conforme a região) para o campo SubjectAlternative Name, conforme apresentado no certificado do Amazon SNS, é o mesmo para asmensagens recebidas do Amazon SNS. Para obter mais informações sobre a verificação deidentidade do servidor, consulte a seção 3.1. Server Identity no RFC 2818. Além disso, consulteVerificação das assinaturas de mensagens do Amazon SNS (p. 169)

O seguinte método implanta um exemplo de um manipulador para solicitações HTTP POST do AmazonSNS em um servlet Java.

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SecurityException {

//Get the message type header. String messagetype = request.getHeader("x-amz-sns-message-type"); //If message doesn't have the message type header, don't process it. if (messagetype == null) { return; }

// Parse the JSON message in the message body // and hydrate a Message object with its contents // so that we have easy access to the name/value pairs // from the JSON message. Scanner scan = new Scanner(request.getInputStream()); StringBuilder builder = new StringBuilder(); while (scan.hasNextLine()) { builder.append(scan.nextLine()); } Message msg = readMessageFromJson(builder.toString());

// The signature is based on SignatureVersion 1. // If the sig version is something other than 1, // throw an exception. if (msg.getSignatureVersion().equals("1")) { // Check the signature and throw an exception if the signature verification fails. if (isMessageSignatureValid(msg)) { log.info(">>Signature verification succeeded"); } else { log.info(">>Signature verification failed"); } throw new SecurityException("Signature verification failed."); } else { log.info(">>Unexpected signature version. Unable to verify signature."); throw new SecurityException("Unexpected signature version. Unable to verify signature."); }

Versão da API 2010-03-31172

Page 180: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorExemplo de código para um servlet Java de endpoint

// Process the message based on type. if (messagetype.equals("Notification")) { //TODO: Do something with the Message and Subject. //Just log the subject (if it exists) and the message. String logMsgAndSubject = ">>Notification received from topic " + msg.getTopicArn(); if (msg.getSubject() != null) { logMsgAndSubject += " Subject: " + msg.getSubject(); } logMsgAndSubject += " Message: " + msg.getMessage(); log.info(logMsgAndSubject); } else if (messagetype.equals("SubscriptionConfirmation")) { //TODO: You should make sure that this subscription is from the topic you expect. Compare topicARN to your list of topics //that you want to enable to add this endpoint as a subscription.

//Confirm the subscription by going to the subscribeURL location //and capture the return value (XML message body as a string) Scanner sc = new Scanner(new URL(msg.getSubscribeURL()).openStream()); StringBuilder sb = new StringBuilder(); while (sc.hasNextLine()) { sb.append(sc.nextLine()); } log.info(">>Subscription confirmation (" + msg.getSubscribeURL() + ") Return value: " + sb.toString()); //TODO: Process the return value to ensure the endpoint is subscribed. } else if (messagetype.equals("UnsubscribeConfirmation")) { //TODO: Handle UnsubscribeConfirmation message. //For example, take action if unsubscribing should not have occurred. //You can read the SubscribeURL from this message and //re-subscribe the endpoint. log.info(">>Unsubscribe confirmation: " + msg.getMessage()); } else { //TODO: Handle unknown message type. log.info(">>Unknown message type."); } log.info(">>Done processing message: " + msg.getMessageId());}

O exemplo a seguir de um método Java cria uma assinatura usando informações de um objeto Messageque contém os dados enviados no corpo da solicitação e compara a assinatura com a assinatura originalcodificada por Base64 da mensagem, que também é lida pelo objeto Message.

private static boolean isMessageSignatureValid(Message msg) { try { URL url = new URL(msg.getSigningCertURL()); InputStream inStream = url.openStream(); CertificateFactory cf = CertificateFactory.getInstance("X.509"); X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream); inStream.close();

Signature sig = Signature.getInstance("SHA1withRSA"); sig.initVerify(cert.getPublicKey()); sig.update(getMessageBytesToSign(msg)); return sig.verify(Base64.decodeBase64(msg.getSignature())); } catch (Exception e) { throw new SecurityException("Verify method failed.", e); }}

Os exemplos a seguir de métodos Java funcionam em conjunto para criar a string para assinar para umamensagem do Amazon SNS. O método getMessageBytesToSign chama o método apropriado de

Versão da API 2010-03-31173

Page 181: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorExemplo de código para um servlet Java de endpoint

string-to-sign com base no tipo de mensagem e executa a string para assinar como uma matriz de bytes.Os métodos buildNotificationStringToSign e buildSubscriptionStringToSign criam astring para assinar com base nos formatos descritos em Verificação das assinaturas de mensagens doAmazon SNS (p. 169).

private static byte [] getMessageBytesToSign (Message msg) { byte [] bytesToSign = null; if (msg.getType().equals("Notification")) bytesToSign = buildNotificationStringToSign(msg).getBytes(); else if (msg.getType().equals("SubscriptionConfirmation") || msg.getType().equals("UnsubscribeConfirmation")) bytesToSign = buildSubscriptionStringToSign(msg).getBytes(); return bytesToSign;}

//Build the string to sign for Notification messages.public static String buildNotificationStringToSign(Message msg) { String stringToSign = null;

//Build the string to sign from the values in the message. //Name and values separated by newline characters //The name value pairs are sorted by name //in byte sort order. stringToSign = "Message\n"; stringToSign += msg.getMessage() + "\n"; stringToSign += "MessageId\n"; stringToSign += msg.getMessageId() + "\n"; if (msg.getSubject() != null) { stringToSign += "Subject\n"; stringToSign += msg.getSubject() + "\n"; } stringToSign += "Timestamp\n"; stringToSign += msg.getTimestamp() + "\n"; stringToSign += "TopicArn\n"; stringToSign += msg.getTopicArn() + "\n"; stringToSign += "Type\n"; stringToSign += msg.getType() + "\n"; return stringToSign;}

//Build the string to sign for SubscriptionConfirmation //and UnsubscribeConfirmation messages.public static String buildSubscriptionStringToSign(Message msg) { String stringToSign = null; //Build the string to sign from the values in the message. //Name and values separated by newline characters //The name value pairs are sorted by name //in byte sort order. stringToSign = "Message\n"; stringToSign += msg.getMessage() + "\n"; stringToSign += "MessageId\n"; stringToSign += msg.getMessageId() + "\n"; stringToSign += "SubscribeURL\n"; stringToSign += msg.getSubscribeURL() + "\n"; stringToSign += "Timestamp\n"; stringToSign += msg.getTimestamp() + "\n"; stringToSign += "Token\n"; stringToSign += msg.getToken() + "\n"; stringToSign += "TopicArn\n"; stringToSign += msg.getTopicArn() + "\n"; stringToSign += "Type\n"; stringToSign += msg.getType() + "\n"; return stringToSign;}

Versão da API 2010-03-31174

Page 182: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorPré-requisitos

Chamada de funções de Lambdausando notificações do Amazon SNS

Amazon SNS e AWS Lambda são integrados, de modo que você pode chamar funções do Lambda comnotificações do Amazon SNS. Quando uma mensagem é publicada em um tópico do SNS que tem umafunção do Lambda inscrita nele, a função do Lambda é chamada com a carga da mensagem publicada.A função do Lambda recebe a carga da mensagem como um parâmetro de entrada e pode manipular asinformações na mensagem, publicar a mensagem em outros tópicos do SNS ou enviar a mensagem aoutros serviços da AWS.

Além disso, Amazon SNS também oferece suporte a atributos de status de entrega de mensagens paranotificações de mensagens enviadas para endpoints do Lambda. Para obter mais informações, consulteUsing Amazon SNS Topic Attributes for Message Delivery Status.

Pré-requisitosPara chamar funções do Lambda usando notificações do Amazon SNS, é necessário o seguinte:

• Função do Lambda• Tópico do Amazon SNS

Para obter informações sobre a criação de uma função do Lambda, consulte Getting Started with AWSLambda. Para obter informações sobre a criação de um tópico do Amazon SNS, consulte Create a Topic.

Configuração do Amazon SNS com endpoints doLambda com o Console de gerenciamento da AWS

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No painel Navegação à esquerda, clique em Tópicos e clique no tópico ao qual você quer inscriver umendpoint Lambda.

3. Clique em Ações e clique em Inscrever-se no tópico.4. Na caixa suspensa Protocolo, selecione AWS Lambda.5. Na caixa suspensa Endpoint, selecione o ARN para a função Lambda.6. Na caixa suspensa Versão ou Alias, selecione uma versão ou alias disponível para usar. Você

também pode selecionar $LATEST para especificar a versão mais recente da função Lambda. Sevocê não deseja especificar uma versão ou alias, também pode escolher a opção padrão, que éfuncionalmente igual a $LATEST. Para obter mais informações, consulte AWS Lambda FunctionVersioning and Aliases.

7. Clique em Criar inscrição.

Quando uma mensagem é publicada em um tópico do SNS que tem uma função do Lambda inscrita nele,a função do Lambda é chamada com a carga da mensagem publicada. Para obter informações sobre

Versão da API 2010-03-31175

Page 183: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorConfiguração do Amazon SNS com endpoints do

Lambda com o Console de gerenciamento da AWS

como criar uma amostra de histórico de mensagem, usando SNS, Lambda e Amazon DynamoDB, consultea publicação no blog de desenvolvimento móvel da AWS Invoking AWS Lambda functions via AmazonSNS.

Versão da API 2010-03-31176

Page 184: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorConfiguração de atributos de status de entrega de

mensagens com Console de gerenciamento da AWS

Uso dos atributos de tópico doAmazon SNS para status de entregade mensagens

Amazon SNS oferece suporte para registrar o status de entrega de mensagens de notificação enviadaspara tópicos com os seguintes endpoints do Amazon SNS:

• Aplicativo• HTTP• Lambda• SQS

Após configurar os atributos de status de entrega de mensagens, as entradas de log serão enviadas parao CloudWatch Logs para mensagens enviadas para um tópico inscrito em um endpoint do Amazon SNS. Oregistro de status de entrega de mensagens proporciona uma melhor percepção operacional, por exemplo:

• Saber se uma mensagem foi entregue para o endpoint do Amazon SNS.• Identificar a resposta enviada do endpoint do Amazon SNS para o Amazon SNS.• Determinar o tempo de permanência da mensagem (o tempo entre o carimbo de data e hora da

publicação e antes do envio para um endpoint do Amazon SNS).

Para configurar os atributos de tópico para o status de entrega de mensagens, você pode usar Console degerenciamento da AWS, AWS Software Development Kits (SDKs) ou API de consulta.

Tópicos• Configuração de atributos de status de entrega de mensagens com Console de gerenciamento da

AWS (p. 177)• Configuração de atributos de status de entrega de mensagens para tópicos inscritos de endpoints do

Amazon SNS com AWS SDKs (p. 178)

Configuração de atributos de status de entrega demensagens com Console de gerenciamento daAWS

As etapas a seguir descrevem como usar o console para configurar os atributos de status de entrega demensagens para notificações do Amazon SNS para um endpoint do AWS Lambda.

Para configurar o status de entrega de mensagens para notificações do Amazon SNS para umendpoint do Lambda:

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

Versão da API 2010-03-31177

Page 185: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorConfiguração de atributos de status de entrega

de mensagens para tópicos inscritos deendpoints do Amazon SNS com AWS SDKs

2. No painel Navegação à esquerda, clique em Tópicos e clique no tópico sobre o qual você desejareceber informações de status de entrega de mensagens.

3. Clique em Ações e clique em Status da entrega.4. Clique na caixa de seleção Lambda.5. Na caixa de diálogo Status da entrega, clique em Criar funções do IAM.

Você será redirecionado para o console IAM.6. Clique em Permitir para conceder ao Amazon SNS acesso de gravação para usar CloudWatch Logs

em seu nome.7. Volte para a caixa de diálogo Status de entrega e insira um número no campo Percentual de sucesso

de amostragem (0-100) para a porcentagem de mensagens bem-sucedidas enviadas para as quaisvocê deseja receber CloudWatch Logs.

Note

Depois de configurar os atributos do aplicativo para o status da entrega de mensagens, todasas entregas de mensagens com falha geram CloudWatch Logs.

8. Finalmente, clique em Salvar configuração.

Agora, você será capaz de visualizar e analisar o CloudWatch Logs contendo o status de entrega demensagens. Para obter mais informações sobre o uso do CloudWatch, consulte a Documentação doCloudWatch.

Configuração de atributos de status de entrega demensagens para tópicos inscritos de endpoints doAmazon SNS com AWS SDKs

AWS SDKs fornecem APIs em vários idiomas para usar atributos de status de entrega de mensagens comAmazon SNS.

Atributos de tópicosVocê pode usar os seguintes valores de nome de atributo de tópico para o status de entrega demensagens:

Aplicativo

• ApplicationSuccessFeedbackRoleArn• ApplicationSuccessFeedbackSampleRate• ApplicationFailureFeedbackRoleArn

Note

Além de configurar os atributos de tópico para o status de entrega das mensagens denotificação enviadas para endpoints do aplicativo Amazon SNS também é possível configuraros atributos do aplicativo para o status de entrega de mensagens de notificação por pushenviadas para serviços de notificação por push. Para obter mais informações, consulte UsingAmazon SNS Application Attributes for Message Delivery Status.

HTTP

• HTTPSuccessFeedbackRoleArn

Versão da API 2010-03-31178

Page 186: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorExemplo do Java sobre configurar os atributos de tópicos

• HTTPSuccessFeedbackSampleRate• HTTPFailureFeedbackRoleArn

Lambda

• LambdaSuccessFeedbackRoleArn• LambdaSuccessFeedbackSampleRate• LambdaFailureFeedbackRoleArn

SQS

• SQSSuccessFeedbackRoleArn• SQSSuccessFeedbackSampleRate• SQSFailureFeedbackRoleArn

Os atributos <ENDPOINT>SuccessFeedbackRoleArn e <ENDPOINT>FailureFeedbackRoleArnsão usados para oferecer acesso de gravação ao Amazon SNS para usar CloudWatch Logsem seu nome. O atributo <ENDPOINT>SuccessFeedbackSampleRate é para especificar aporcentagem de taxa de amostra (0-100) de mensagens bem-sucedidas. Após configurar o atributo<ENDPOINT>FailureFeedbackRoleArn, todas as entregas de mensagens com falha geramCloudWatch Logs.

Exemplo do Java sobre configurar os atributos detópicosO seguinte exemplo do Java mostra como usar a API SetTopicAttributes para configurar os atributosde tópico para o status de entrega de mensagens de notificação enviadas para os tópicos inscritos deendpoints do Amazon SNS. Nesse exemplo, presume-se que os valores da string foram definidos paratopicArn, attribName e attribValue.

final static String topicArn = ("arn:aws:sns:us-east-2:123456789012:MyTopic");final static String attribName = ("LambdaSuccessFeedbackRoleArn");final static String attribValue = ("arn:aws:iam::123456789012:role/SNSSuccessFeedback");

SetTopicAttributesRequest setTopicAttributesRequest = new SetTopicAttributesRequest();setTopicAttributesRequest.withTopicArn(topicArn);setTopicAttributesRequest.setAttributeName(attribName);setTopicAttributesRequest.setAttributeValue(attribValue);

Para obter mais informações sobre SDK para Java, consulte Getting Started with the AWS SDK for Java.

Versão da API 2010-03-31179

Page 187: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorValidação e itens de atributos de mensagem

Uso de atributos de mensagem doAmazon SNS

O Amazon Simple Notification Service (Amazon SNS) oferece suporte à entrega de atributos demensagens. Os atributos de mensagens permitem fornecer itens de metadados estruturados (comocarimbos de data e hora, dados geoespaciais, assinaturas e identificadores) sobre a mensagem. Osatributos de mensagem são opcionais e separados, mas são enviados junto com o corpo da mensagem.Essas informações podem ser usadas pelo destinatário da mensagem para ajudar a decidir como lidar comela sem ter de primeiro processar o corpo da mensagem. Cada mensagem pode ter até dez atributos. Paraespecificar os atributos de mensagem, você pode usar os AWS SDKs ou a API de consulta.

Important

Para usar atributos de mensagem com endpoints do Amazon SQS, você deve definir o atributode inscrição, Raw Message Delivery, como True. Para obter mais informações sobre aentrega de mensagens brutas, consulte Apêndice: Grande carga e entrega de mensagensbrutas (p. 225).

Também é possível usar atributos de mensagem para ajudar a estruturar a mensagem de notificação porpush para endpoints móveis. Nesse cenário, os atributos de mensagens são usados apenas para ajudar aestruturar a mensagem de notificação por push. Os atributos não são entregues para o endpoint do mesmomodo que são ao enviar mensagens com atributos de mensagens para endpoints do Amazon SQS.

Você também pode usar atributos de mensagens para que suas mensagens possam ser filtradas comas políticas de filtro de assinatura. As políticas de filtro são aplicadas a assinaturas de tópicos. Com umapolítica de filtro aplicada, uma assinatura recebe apenas aquelas mensagens que têm atributos que sãoaceitos pela política. Para obter mais informações, consulte Filtragem de mensagens com o AmazonSNS (p. 185).

Validação e itens de atributos de mensagemCada 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 pontossucessivos. O nome diferencia maiúsculas e minúsculas e deve ser exclusivo entre todos os nomesde atributos para a mensagem. O nome pode ter até 256 caracteres. O nome não pode iniciar com“AWS.” ou “Amazon.” (incluindo variações na capitalização dessas palavras) porque esses prefixos sãoreservados para uso por uma conta da Amazon Web Services.

• Tipo – Os tipos de dados de atributo de mensagem compatíveis são String, String.Array, Numbere Binary. O tipo de dados tem as mesmas restrições no conteúdo que o corpo da mensagem. O tipode dados diferencia maiúsculas de minúsculas e pode ter até 256 bytes. Para obter mais informações,consulte a seção Tipos de dados de atributo de mensagem e validação (p. 181).

• Valor – o valor do atributo de mensagem especificado pelo usuário. Para tipos de dados de string, oatributo de valor tem as mesmas restrições no conteúdo que o corpo da mensagem. Para obter maisinformações, consulte a ação Publish no Amazon Simple Notification Service API Reference.

Nome, tipo e valor não podem estar vazios ou nulos. Além disso, o corpo da mensagem não pode estarvazio ou nulo. Todas as partes do atributo da mensagem, incluindo o nome, o tipo e o valor, são incluídasna restrição de tamanho da mensagem, que é de 256 KB.

Versão da API 2010-03-31180

Page 188: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorTipos de dados

Tipos de dados de atributo de mensagem evalidação

Os tipos de dados de atributo de mensagem identificam como os valores de atributo de mensagem sãoprocessados pelo Amazon SNS. Por exemplo, se o tipo for um número, o Amazon SNS validará que é umnúmero.

Amazon SNS é compatível com os seguintes tipos de dados lógicos:

• String – 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.

• String.Array – Uma matriz, formatada como uma string que pode conter vários valores. Os valorespodem ser strings, números ou as palavras-chave true, falsee null.

• Número – números são positivos ou negativos inteiros ou números de ponto flutuante. Números têmalcance 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 5dígitos de precisão após o ponto decimal. Zeros iniciais e finais são cortados.

• Binários – Atributos do tipo binário podem armazenar qualquer tipo de dado binário, por exemplo, dadoscompactados, dados criptografados ou imagens.

Atributos de mensagens reservados paranotificações móveis por push

A tabela a seguir lista os atributos de mensagens reservadas para serviços de notificação móvel por pushque você pode usar para estruturar a mensagem de notificação por push:

Serviço denotificação porpush

Atributo de mensagem reservada Valores permitidos

Baidu AWS.SNS.MOBILE.BAIDU.DeployStatus(opcional)

AWS.SNS.MOBILE.BAIDU.MessageType(opcional)

AWS.SNS.MOBILE.BAIDU.MessageKey(opcional)

1—ambiente de desenvolvimento. 2—ambiente de produção. (padrão 1)

0—mensagem no aplicativo. 1—notificação de alerta. (padrão 1)

Um identificador de mensagenscurtas que você pode anexar à suamensagem

MPNS AWS.SNS.MOBILE.MPNS.Type (obrigatório)

AWS.SNS.MOBILE.MPNS.NotificationClass(obrigatório)

token (para notificações em bloco),pop-up, brutas

tempo real, prioridade, regulares

WNS AWS.SNS.MOBILE.WNS.Type (obrigatório)

AWS.SNS.MOBILE.WNS.CachePolicy(opcional)

AWS.SNS.MOBILE.WNS.Group (opcional)

AWS.SNS.MOBILE.WNS.Match (opcional)

mesmo que X-WNS-Type

mesmo que X-WNS-Cache-Policy

mesmo que X-WNS-Group

mesmo que X-WNS-Match

Versão da API 2010-03-31181

Page 189: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAplicação de atributos de mensagens

Serviço denotificação porpush

Atributo de mensagem reservada Valores permitidos

AWS.SNS.MOBILE.WNS.SuppressPopup(opcional)

AWS.SNS.MOBILE.WNS.Tag (opcional)

mesmo que X-WNS-SuppressPopup

mesmo que X-WNS-Tag

Para obter mais informações sobre o uso de atributos de mensagem com Baidu, consulte Uso dosatributos de mensagem para estruturação da mensagem (p. 66).

Aplicação de atributos de mensagensUma mensagem pode ser publicada com atributos usando o console Amazon SNS. Ou, para aplicaratributos de mensagem de forma programática, é possível usar a API, o AWS Command Line Interface(AWS CLI) ou qualquer SDK da AWS compatível com o Amazon SNS, como AWS SDK for Java.

Aplicação de atributos de mensagens com o consolePara publicar uma mensagem com atributos usando o console Amazon SNS, execute as seguintes etapas:

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No painel de navegação, escolha Tópicos. A página Tópicos fornece todos os tópicos de Amazon SNSque você tem na região selecionada.

3. Se você não tiver um tópico, escolha Criar um novo tópicoe forneça um valor para o nome do tópico.Se você deseja usar o tópico para enviar mensagens SMS, forneça um valor para o nome de exibição.Em seguida, selecione Criar tópico.

4. Se você tiver um ou mais tópicos, selecione o tópico para o qual você deseja publicar a mensagem. Aseguir, selecione Publicar em um tópico.

5. Na página Publicar uma mensagem, forneça um Assunto e uma Mensagem.6. Em Atributos de Mensagens, especifique a chave, tipo de atributo e valor. Por exemplo, a entrada a

seguir cria um atributo chamado customer_interests. O tipo de atributo é String.Array e o valor éuma matriz de valores.

Se o tipo de atributo for String, String.Array (Matriz de string) ou Number (Número), o Amazon SNSavaliará o atributo de mensagem em relação à política de filtro de uma assinatura, se existir, antes deenviar a mensagem a essa assinatura.

Lembre-se

Se o tipo de atributo for String.Array, coloque a matriz entre colchetes ([ ]). Dentro da matriz,coloque valores de strings entre aspas duplas. As aspas não são necessárias para númerosou para as palavras-chave true, false e null.

Aplicação de atributos de mensagens com o AWS CLIPara publicar uma mensagem com atributos usando o AWS CLI, use o comando publish com oparâmetro --message-attributes, conforme mostrado no exemplo a seguir:

Versão da API 2010-03-31182

Page 190: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAplicação de atributos de mensagens

com o AWS SDK for Java

$ aws sns publish --topic-arn topic-arn --message “message” --message-attributes '{"store":{"DataType":"String","StringValue":"example_corp"}}'

Aplicação de atributos de mensagens com o AWSSDK for JavaPara publicar uma mensagem com atributos usando o AWS SDK for Java, use o método publishdo AmazonSNS cliente. Forneça um objeto PublishRequest como argumento. Quando inicializaro PublishRequest objeto, use o método withMessageAttributes, que aceita um mapa do tipoMap<String,MessageAttributeValue>.

Para simplificar o processo de publicação de mensagens com atributos, você pode adicionar a seguinteclasse de exemplo ao seu aplicativo e modificá-la conforme necessário:

import com.amazonaws.services.sns.*;import com.amazonaws.services.sns.model.MessageAttributeValue;import com.amazonaws.services.sns.model.PublishRequest;import com.amazonaws.services.sns.model.PublishResult;

import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import java.util.stream.Collectors;

public class SNSMessage {

public String message; public Map<String, MessageAttributeValue> messageAttributes;

public SNSMessage(String message) { this.message = message; messageAttributes = new HashMap<>(); }

public void setMessage(String message) { this.message = message; }

public String getMessage() { return message; }

public void addAttribute(String attributeName, String attributeValue) { MessageAttributeValue messageAttributeValue = new MessageAttributeValue() .withDataType("String") .withStringValue(attributeValue); messageAttributes.put(attributeName, messageAttributeValue); }

public void addAttribute(String attributeName, ArrayList<?> attributeValues) { String valuesString, delimiter = ", ", prefix = "[", suffix = "]"; if (attributeValues.get(0).getClass() == String.class) { delimiter = "\", \""; prefix = "[\""; suffix = "\"]"; } valuesString = attributeValues .stream() .map(value -> value.toString()) .collect(Collectors.joining(delimiter, prefix, suffix)); MessageAttributeValue messageAttributeValue = new MessageAttributeValue() .withDataType("String.Array") .withStringValue(valuesString); messageAttributes.put(attributeName, messageAttributeValue); }

Versão da API 2010-03-31183

Page 191: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAplicação de atributos de mensagens

com a API do Amazon SNS

public void addAttribute(String attributeName, Number attributeValue) { MessageAttributeValue messageAttributeValue = new MessageAttributeValue() .withDataType("Number") .withStringValue(attributeValue.toString()); messageAttributes.put(attributeName, messageAttributeValue); }

public String publish(AmazonSNS snsClient, String topicArn) { PublishRequest request = new PublishRequest(topicArn, message) .withMessageAttributes(messageAttributes); PublishResult result = snsClient.publish(request); return result.getMessageId(); }}

Esta classe armazena um campo messageAttributes como um mapa. Use os métodosaddAttribute sobrecarregados para adicionar atributos para sua mensagem. Esses métodos podemadicionar atributos com o tipo de dados String, String.Array ou Number. Quando você estiver prontopara publicar a mensagem, use o método publish e forneça um cliente do AmazonSNS e o ARN dotópico.

O código a seguir mostra como inicializar e usar a classe de exemplo SNSMessage:

// Initialize example message classSNSMessage message = new SNSMessage(messageBody);

// Add message attribute with string valuemessage.addAttribute("store", "example_corp");message.addAttribute("event", "order_placed");

// Add message attribute with a list of string valuesArrayList<String> interestsValues = new ArrayList<>();interestsValues.add("soccer");interestsValues.add("rugby");interestsValues.add("hockey");message.addAttribute("customer_interests", interestsValues);

// Add message attribute with number valuemessage.addAttribute("price_usd", 1000);

// Add boolean attribute for filtering with subscription filter policies.// SNSMessage will apply a String.Array data type to this attribute, // which makes it eligible for evaluating with a filter policy.ArrayList<Boolean> encryptedVal = new ArrayList<>();encrypted.add(false);message.addAttribute("encrypted", encryptedVal);

// Publish messagemessage.publish(snsClient, topicArn);

Aplicação de atributos de mensagens com a API doAmazon SNSPara publicar uma mensagem com atributos usando a API do Amazon SNS, emita uma solicitação para aação Publish e use o parâmetro MessageAttributes.

Versão da API 2010-03-31184

Page 192: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorPolíticas de filtros de assinatura

Filtragem de mensagens com oAmazon SNS

Por padrão, um assinante de um tópico do Amazon SNS recebe todas as mensagens publicadas notópico. Para receber apenas um subconjunto de mensagens, um assinante atribui uma política de filtro àassinatura do tópico.

Uma política de filtro é um objeto JSON simples. A política contém atributos que definem quais mensagenso assinante recebe. Quando você publica uma mensagem para um tópico, o Amazon SNS compara osatributos das mensagens com os atributos da política de filtro para cada assinatura do tópico. Se houveruma correspondência entre os atributos, o Amazon SNS envia a mensagem para o assinante. Casocontrário, o Amazon SNS ignora o assinante sem enviar a mensagem a ele. Se uma assinatura não tiveruma política de filtro, ela receberá todas as mensagens publicadas ao tópico.

Com as políticas de filtro, é possível simplificar a utilização do Amazon SNS consolidando os critériosde filtragem de mensagens nas assinaturas do tópico. Com essa consolidação, é possível descarregara lógica de filtragem da mensagem dos assinantes e a lógica de roteamento da mensagem de editores.Portanto, não é necessário filtrar mensagens criando um tópico separado para cada condição de filtragem.Em vez disso, é possível usar um tópico individual e diferenciar as mensagens com atributos. Cadaassinante recebe e processa apenas as mensagens aceitas pela política de filtro respectiva.

Por exemplo, você pode usar um único tópico para publicar todas as mensagens geradas por transaçõesde seu site de varejo online. Para cada mensagem, você pode atribuir um atributo que indica o tipo detransação, como order_placed, order_cancelled ou order_declined. Ao criar assinaturas compolíticas de filtro, você pode direcionar cada mensagem para a fila à qual se destina para processar o tipode transação da mensagem.

Para obter um tutorial que demonstra como implementar a filtragem de mensagens com o Console degerenciamento da AWS, consulte Filtrar mensagens publicadas para tópicos. Este tutorial mostra comoaplicar políticas de filtro para rotear mensagens para filas de Amazon SQS separadas.

Políticas de filtros de assinaturaAs políticas de filtro são atribuídas a assinaturas do Amazon SNS. Em uma política, são especificadosos nomes dos atributos e, para cada nome, uma lista de um ou mais valores. Uma assinatura aceita umamensagem apenas se a mensagem contém atributos que correspondem a aqueles especificados napolítica de filtro da assinatura. Especificamente, a assinatura aceita a mensagem se:

a. Cada nome de atributo na política de filtro corresponde a um nome de atributo atribuído à mensagem.b. Para cada nome de atributo, existe pelo menos uma correspondência entre os valores que são

atribuídos a esse nome na política de filtro e a mensagem.

Quando o Amazon SNS avalia os atributos de mensagens de acordo com a política, ele ignora atributos demensagens que não são especificadas na política.

Os exemplos a seguir mostram como as políticas de filtro podem aceitar ou rejeitar uma mensagempublicada em um tópico.

Versão da API 2010-03-31185

Page 193: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorExemplo de mensagens com atributos

Exemplo de mensagens com atributosO exemplo a seguir mostra uma carga da mensagem enviada por um tópico do Amazon SNS que publicatransações de clientes. A mensagem inclui atributos que descrevem a transação: o nome da loja, o tipo deevento, os interesses do cliente e o preço da compra.

{ "Type" : "Notification", "MessageId" : "e3c4e17a-819b-5d95-a0e8-b306c25afda0", "TopicArn" : "arn:aws:sns:us-east-1:111122223333:MySnsTopic", "Message" : message body with transaction details . . . "Timestamp" : "2017-11-07T23:28:01.631Z", "SignatureVersion" : "1", "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} }}

Para obter mais informações sobre a aplicação de atributos a uma mensagem, consulte Uso de atributosde mensagem do Amazon SNS (p. 180).

Como essa mensagem inclui atributos, qualquer assinatura de tópico que incluir uma política de filtropoderá aceitar ou rejeitar a mensagem seletivamente.

Exemplo de políticas de filtroAs políticas de filtro a seguir aceitam ou rejeitam a mensagem de exemplo com base em seus nomes evalores de atributos.

Example Política que aceita a mensagem

Os atributos na política a seguir correspondem aos atributos da mensagem de exemplo:

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

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

Example Política que rejeita a mensagem

A política a seguir tem várias incompatibilidades entre seus atributos e os atributos da mensagem deexemplo:

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

Versão da API 2010-03-31186

Page 194: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorCorrespondência de valores de string

}

Uma ou mais incompatibilidades fazem com que a política rejeite a mensagem.

Como o nome do atributo encrypted não está presente nos atributos da mensagem, esse atributo depolítica rejeitará a mensagem, independentemente do valor atribuído a ele.

Atributos de políticas de filtro podem ter valores numéricos ou de string. Com os valores numéricos ede string, você pode usar as operações a seguir para corresponder a atributos de mensagens e filtrarmensagens.

Correspondência de valores de stringOs valores de string são inseridos entre aspas duplas na política JSON. Com as strings, você pode usar asoperações a seguir para corresponder a atributos de mensagens.

Correspondência exata (lista de permissões)

Essa correspondência ocorre quando um valor de atributo de política corresponde a um ou maisvalores de atributos de mensagens. Por exemplo, o atributo de política:

"customer_interests": ["rugby"]

Corresponde ao atributo de mensagem:

"customer_interests" : {"Type":"String","Value":"rugby"}

Correspondência "anything-but" (lista negra)

Quando um valor de atributo de política inclui a palavra-chave anything-but, ele corresponde aqualquer atributo de mensagem que não inclui o valor de atributo de política. Por exemplo, o atributode política:

"customer_interests": [{"anything-but":"rugby"}]

Corresponde a atributos de mensagens, como:

"customer_interests" : {"Type":"String","Value":"baseball"}

And:

"customer_interests" : {"Type":"String","Value":"football"}

Mas não:

"customer_interests" : {"Type":"String","Value":"rugby"}

Correspondência de prefixo

Quando um valor de atributo de política inclui a palavra-chave prefix, ele corresponde a qualquervalor de atributo de mensagem que comece com os caracteres especificados. Por exemplo, o atributode política:

"customer_interests": [{"prefix":"bas"}]

Corresponde a atributos de mensagens, como:

Versão da API 2010-03-31187

Page 195: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorCorrespondência de valores numéricos

"customer_interests" : {"Type":"String","Value":"baseball"}

And:

"customer_interests" : {"Type":"String","Value":"basketball"}

Mas não:

"customer_interests" : {"Type":"String","Value":"rugby"}

Correspondência de valores numéricosOs valores numéricos não são inseridos entre aspas duplas na política JSON. Com os valores numéricos,você pode usar as operações a seguir para corresponder a valores de atributos de mensagens.

Correspondência exata

Quando um valor de atributo de política inclui a palavra-chave numeric e o operador =, elecorresponde a qualquer atributo de mensagem que tenha o mesmo nome e o mesmo valor numérico.Por exemplo, o atributo de política:

"price_usd": [{"numeric":["=",301.5]}]

Corresponde a atributos de mensagens, como:

"price_usd" : {"Type":"Number","Value":301.5}

And:

"price_usd" : {"Type":"Number","Value":3.015e2}

Correspondência de intervalo

Além do operador =, um atributo de política numérico pode incluir <, <=, > e >=. Por exemplo, oatributo de política:

"price_usd": [{"numeric":["<", 0]}]

Corresponde a atributos de mensagens com valores numéricos negativos e:

"price_usd": [{"numeric":[">", 0, "<=", 150]}]

Corresponde a atributos de mensagens com números positivos até 150.

Lógica E/OUAplique a lógica E/OU nas políticas de filtro da maneira a seguir.

Lógica E

Aplique a lógica E usando vários nomes de atributo (chaves). Por exemplo, a política:

Versão da API 2010-03-31188

Page 196: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorRestrições

{ "customer_interests": ["rugby"], "price_usd": [{"numeric":[">", 100]}]}

Corresponde a mensagens com um valor customer_interests de rugby e um valor price_usdsuperior a 100.

Lógica OU

Aplique a lógica OU atribuindo vários valores a um nome de atributo. Por exemplo, o atributo depolítica:

"customer_interests": ["rugby", "football", "baseball"]

Corresponde a mensagens com um valor customer_interests de rugby ou football oubaseball.

RestriçõesAo criar uma política de filtro, lembre-se das seguintes restrições:

• O Amazon SNS compara os atributos de política somente com atributos de mensagens que tenham umtipo de dados de String, String.Array ou Number. Os atributos de mensagens com o tipo de dadosBinary são ignorados.

• A comparação de atributos entre a política e a mensagem diferencia maiúsculas de minúsculas emstrings.

• Como um objeto JSON, a política de filtro pode conter strings entre aspas, números e as palavras-chavetrue, false e null sem aspas.

• Uma política de filtro pode ter até 10 nomes de atributo.• Um atributo de política numérico pode ter um valor de -109 a 109, com 5 dígitos de precisão após o ponto

decimal.• O tamanho máximo de uma política é de 256 KB.• Ao usar a API do Amazon SNS, a política JSON deve ser repassada como uma string UTF-8 válida.• Por padrão, é possível pode ter até 100 políticas de filtro por conta da AWS por região. Para aumentar

este limite, envie um Caso de aumento de limite do SNS.• A combinação total de valores não deve ultrapassar 100. Calcule a combinação total multiplicando o

número de valores em cada matriz. Por exemplo, na política a seguir, a primeira matriz tem 3 valores, asegunda tem 1 valor e a terceira tem 2 valores. A combinação total é calculada como 3 x 1 x 2 = 6.

{ "key_a": ["value_one", "value_two", "value_three"], "key_b": ["value_one"], "key_c": ["value_one", "value_two"]}

Aplicação de políticas de filtros de assinaturaVocê pode aplicar uma política de filtro a uma assinatura do Amazon SNS usando o console do AmazonSNS. Ou, para aplicar políticas de forma programática, é possível usar a API do Amazon SNS, o AWS

Versão da API 2010-03-31189

Page 197: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAplicação de uma política de filtro com o console

Command Line Interface (AWS CLI) ou qualquer SDK da AWS compatível com o Amazon SNS, comoAWS SDK for Java.

Aplicação de uma política de filtro com o consolePara aplicar uma política de filtro usando o console do Amazon SNS, execute as etapas a seguir:

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No painel de navegação, escolha Subscriptions. A página Subscriptions (Assinaturas) fornece todasas assinaturas de Amazon SNS que você tem na região escolhida.

3. Se não tiver uma assinatura, escolha Criar assinatura e forneça valores para Tópico de ARN,Protocolo e Endpoint.

4. Se tiver uma ou mais assinaturas, selecione a assinatura à qual você deseja aplicar uma política defiltro.

5. Escolha Ações e Editar política de filtro de assinatura no menu.6. Na janela Editar política de filtro de assinatura, forneça o corpo do JSON da política de filtro.7. Escolha Definir política de filtro de assinatura. O Amazon SNS aplica a política de filtro à assinatura.

Aplicação de uma política de filtro com o AWS CLIPara aplicar um filtro de política com o AWS Command Line Interface (AWS CLI), use o comando set-subscription-attributes, como mostrado no exemplo a seguir:

$ aws sns set-subscription-attributes --subscription-arn arn:aws:sns: ... --attribute-name FilterPolicy --attribute-value '{"store":["example_corp"],"event":["order_placed"]}'

Para a opção --attribute-name, especifique FilterPolicy. Para --attribute-value,especifique sua política JSON.

Para fornecer JSON válido para a sua política, coloque os nomes e valores dos atributos entre aspasduplas. Também é necessário colocar o argumento da política completo entre aspas. Para evitar aspas deescape, você pode usar aspas simples para colocar a política e aspas duplas para os nomes e valores deJSON, como mostrado no exemplo.

Para verificar se a política de filtro foi aplicada, use o comando get-subscription-attributes. Osatributos na saída do terminal devem mostrar a política de filtro para a chave FilterPolicy, conformemostrado no exemplo a seguir:

$ aws sns get-subscription-attributes --subscription-arn arn:aws:sns: ...{ "Attributes": { "Endpoint": "endpoint . . .", "Protocol": "https", "RawMessageDelivery": "false", "EffectiveDeliveryPolicy": "delivery policy . . .", "ConfirmationWasAuthenticated": "true", "FilterPolicy": "{\"store\": [\"example_corp\"], \"event\": [\"order_placed\"]}", "Owner": "111122223333", "SubscriptionArn": "arn:aws:sns: . . .", "TopicArn": "arn:aws:sns: . . ." }}

Versão da API 2010-03-31190

Page 198: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAplicação de uma política de filtro com o AWS SDK for Java

Aplicação de uma política de filtro com o AWS SDK forJavaPara aplicar uma política de filtro com o AWS SDK for Java, use o métodosetSubscriptionAttributes do AmazonSNS cliente. Forneça um objetoSetSubscriptionAttributesRequest como argumento, como mostrado no exemplo a seguir:

AmazonSNS snsClient = AmazonSNSClientBuilder.defaultClient();String filterPolicyString = "{\"store\":[\"example_corp\"],\"event\":[\"order_placed\"]}";SetSubscriptionAttributesRequest request = new SetSubscriptionAttributesRequest(subscriptionArn, "FilterPolicy", filterPolicyString);snsClient.setSubscriptionAttributes(request);

Para inicializar o objeto SetSubscriptionAttributesRequest, forneça os seguintes argumentos:

• subscriptionArn – O Nome de recurso da Amazon (ARN) da assinatura à qual a política é aplicada.• attributeName – Deve ser "FilterPolicy".• attributeValue – Sua política de filtro JSON com uma string. Como a política de strings deve ser

delimitada entre aspas duplas, lembre-se de fazer o escape das aspas duplas onde estejam nomes evalores de atributos, como em \"store\".

A classe SetSubscriptionAttributesRequest aceita a política de filtro como uma string. Se quisera política como uma coleção Java, crie um mapa que associe cada nome de atributo com uma lista devalores. Para atribuir a política a uma inscrição, primeiro produza uma versão de string da política apartir do conteúdo do mapa. Em seguida, repasse a string como o argumento attributeValue paraSetSubscriptionAttributesRequest.

Para simplificar este processo, você pode adicionar a seguinte classe de exemplo ao seu aplicativo emodificá-la conforme necessário:

import com.amazonaws.services.sns.AmazonSNS;import com.amazonaws.services.sns.model.SetSubscriptionAttributesRequest;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import java.util.stream.Collectors;

public class SNSMessageFilterPolicy {

private enum AttributeType { String, Numeric, Prefix, List, AnythingBut }

private class Attribute<T> {

protected final T value; protected final AttributeType type;

public Attribute(AttributeType type, T value) { this.value = value; this.type = type; }

public String toString() { switch(type) { case Prefix: return String.format("{\"prefix\":\"%s\"}", value.toString());

Versão da API 2010-03-31191

Page 199: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAplicação de uma política de filtro com o AWS SDK for Java

case Numeric: return String.format("{\"numeric\":%s}", value.toString()); case List: ArrayList<T> values = (ArrayList<T>)value; return values .stream() .map(entry -> entry.toString()) .collect(Collectors.joining(",", "[", "]")); case AnythingBut: return String.format("{\"anything-but\":\"%s\"}", value); default: return String.format("\"%s\"", value); } } }

private class NumericValue<T extends Number> { private final T lower; private final T upper; private final String lowerOp; private final String upperOp;

public NumericValue(String op, T value) { lower = value; lowerOp = op; upper = null; upperOp = null; }

public NumericValue(String lowerOp, T lower, String upperOp, T upper) { this.lower = lower; this.lowerOp = lowerOp; this.upper = upper; this.upperOp = upperOp; }

public String toString() { StringBuffer s = new StringBuffer("[") .append('\"').append(lowerOp).append("\",").append(lower); if (upper != null) { s.append(",\"").append(upperOp).append("\",").append(upper); } s.append("]"); return s.toString(); } }

private final Map<String, Attribute> filterPolicy = new HashMap<>();

public void addAttribute(String attributeName, String attributeValue) { filterPolicy.put(attributeName, new Attribute(AttributeType.String, attributeValue)); }

public void addAttribute(String attributeName, ArrayList<String> attributeValues) { ArrayList<Attribute> attributes = new ArrayList<>(); for (String s : attributeValues) { attributes.add(new Attribute(AttributeType.String, s)); } filterPolicy.put(attributeName, new Attribute(AttributeType.List, attributes)); }

public void addAttributePrefix(String attributeName, String prefix) { filterPolicy.put(attributeName, new Attribute(AttributeType.Prefix, prefix)); }

Versão da API 2010-03-31192

Page 200: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAplicação de uma política de filtro com o AWS SDK for Java

public void addAttributeAnythingBut(String attributeName, String value) { filterPolicy.put(attributeName, new Attribute(AttributeType.AnythingBut, value)); }

public <T extends Number> void addAttribute(String attributeName, String op, T value) { filterPolicy.put(attributeName, new Attribute(AttributeType.Numeric, new NumericValue(op, value))); }

public <T extends Number> void addAttributeRange( String attributeName, String lowerOp, T lower, String upperOp, T upper) { filterPolicy.put( attributeName, new Attribute(AttributeType.Numeric, new NumericValue(lowerOp, lower, upperOp, upper))); }

public void apply(AmazonSNS snsClient, String subscriptionArn) { SetSubscriptionAttributesRequest request = new SetSubscriptionAttributesRequest(subscriptionArn, "FilterPolicy", formatFilterPolicy()); snsClient.setSubscriptionAttributes(request); }

public String formatFilterPolicy() { return filterPolicy.entrySet() .stream() .map(entry -> "\"" + entry.getKey() + "\": [" + entry.getValue() + "]") .collect(Collectors.joining(", ", "{", "}")); }}

Esta classe armazena um campo filterPolicy como um mapa. Use os diferentes métodos deaddAttribute para adicionar atributos à política. Esses métodos aceitam o nome de atributo como umastring e são especializados para aceitar diferentes tipos de valores. Você pode repassar valores comostrings, listas de strings, números ou intervalos de números. Você pode adicionar atributos anything-but e prefix. Quando você estiver pronto para aplicar a política a uma inscrição, use o método apply eforneça um cliente do AmazonSNS e o ARN da inscrição. Este método produz uma política string a partir doconteúdo do mapa filterPolicy e aplica a política à assinatura especificada.

O código a seguir mostra como inicializar e usar a classe de exemplo SNSMessageFilterPolicy:

// Initialize example filter policy classSNSMessageFilterPolicy fp = new SNSMessageFilterPolicy();

// Add filter policy attribute with single valuefp.addAttribute("store", "example_corp");fp.addAttribute("event", "order_placed");

// Add a prefix attributefilterPolicy.addAttributePrefix("customer_interests", "bas");

// Add an anything-but attributefilterPolicy.addAttributeAnythingBut("customer_interests", "baseball");

// Add filter policy attribute with a list of valuesArrayList<String> attributeValues = new ArrayList<>();attributeValues.add("rugby");attributeValues.add("soccer");attributeValues.add("hockey");fp.addAttribute("customer_interests", attributeValues);

// Add numeric attribute

Versão da API 2010-03-31193

Page 201: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAplicação de uma política de

filtro com a API do Amazon SNS

filterPolicy.addAttribute("price_usd", "=", 0);

// Add numeric attribute with a range filterPolicy.addAttributeRange("price_usd", ">", 0, "<=", 100);

// Apply filter policy attributes to SNS subscriptionfp.apply(snsClient, subscriptionArn);

Aplicação de uma política de filtro com a API doAmazon SNSPara aplicar um política de filtro com a API do Amazon SNS, faça uma solicitação para a açãoSetSubscriptionAttributes. Defina o parâmetro AttributeName como FilterPolicy e defina oparâmetro AttributeValue para a política de filtro JSON.

Remoção de políticas de filtros de assinaturaPara interromper a filtragem de mensagens que são enviadas para uma assinatura, remova a política defiltro da assinatura substituindo-a por um corpo JSON vazio. Após a remoção da política, a assinaturaaceitará todas as mensagens que forem publicadas nela.

Remoção de uma política de filtro com o consolePara remover uma política de filtro usando o console do Amazon SNS, execute as etapas a seguir:

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. No painel de navegação, escolha Subscriptions. A página Subscriptions (Assinaturas) fornece todasas assinaturas de Amazon SNS que você tem na região escolhida.

3. Selecione a assinatura da qual deseja remover a política de filtro.4. Escolha Ações e Editar política de filtro de assinatura no menu.5. Na janela Edit subscription filter policy (Editar política de filtro da assinatura), forneça um corpo JSON

vazio para a política de filtro: {}.6. Escolha Definir política de filtro de assinatura. O Amazon SNS aplica a política de filtro vazia à

assinatura.

Remoção de uma política de filtro com a AWS CLIPara remover uma política de filtro com a AWS CLI, use o comando set-subscription-attributes eforneça um corpo JSON vazio para o argumento --attribute-value:

$ aws sns set-subscription-attributes --subscription-arn arn:aws:sns: ... --attribute-name FilterPolicy --attribute-value "{}"

Remoção de uma política de filtro com o AWS SDK forJavaPara remover uma política de filtro com o AWS SDK for Java, use o métodosetSubscriptionAttributes do cliente AmazonSNS. Forneça uma string que contém um corpo JSONvazio como o filtro de política:

Versão da API 2010-03-31194

Page 202: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorRemoção de uma política de

filtro com a API do Amazon SNS

AmazonSNS snsClient = AmazonSNSClientBuilder.defaultClient();SetSubscriptionAttributesRequest request = new SetSubscriptionAttributesRequest(subscriptionArn, "FilterPolicy", "{}");snsClient.setSubscriptionAttributes(request);

Remoção de uma política de filtro com a API doAmazon SNSPara remover uma política de filtro com a API do Amazon SNS, faça uma solicitação para a açãoSetSubscriptionAttributes. Defina o parâmetro AttributeName como FilterPolicy e forneçaum corpo JSON vazio para o parâmetro AttributeValue.

Versão da API 2010-03-31195

Page 203: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAcesse métricas do CloudWatch para Amazon SNS

Monitoramento do Amazon SNS como CloudWatch

Amazon SNS e CloudWatch são integrados para que você possa coletar, visualizar e analisarmétricas para cada notificação ativa do Amazon SNS. Após configurar o CloudWatch para AmazonSNS, você pode obter mais informações sobre o desempenho dos tópicos, notificações por pushe entregas de SMS do Amazon SNS. Por exemplo, você pode definir um alerta para enviar umanotificação por e-mail se um limite especificado para uma métrica do Amazon SNS for atingido, comoNumberOfNotificationsFailed. Para obter uma lista de todas as métricas envidas pelo AmazonSNS para o CloudWatch, consulte Métricas do Amazon SNS (p. 198). Para obter mais informaçõessobre notificações por push do Amazon SNS, consulte Notificações por push para dispositivos móveis doAmazon SNS (p. 37)

As métricas que você configura com o CloudWatch para os tópicos do Amazon SNS são automaticamentecoletadas e enviadas para o CloudWatch a cada cinco minutos. Essas métricas são coletadas em todosos tópicos que estiverem de acordo com as diretrizes do CloudWatch para estar ativas. Um tópico éconsiderado ativo pelo CloudWatch em até seis horas desde a última atividade (ou seja, qualquer chamadade API) no tópico.

Note

Não há taxas pelas métricas do Amazon SNS relatadas para o CloudWatch; elas são fornecidascomo parte do serviço do Amazon SNS.

Acesse métricas do CloudWatch para Amazon SNSVocê pode monitorar métricas para o Amazon SNS usando o console do CloudWatch a Interface daLinha de Comando (ILC) do CloudWatch ou programaticamente usando a API do CloudWatch. Osprocedimentos a seguir mostram como acessar as métricas usando essas diferentes opções.

Para visualizar as métricas usando o console do CloudWatch

1. Faça login no Console de gerenciamento da AWS e abra o console da CloudWatch em https://console.aws.amazon.com/cloudwatch/.

2. Clique em Exibir métricas.3. No menu suspenso Exibição, selecione SNS: Métricas de tópico, SNS: Notificações por push por

aplicativo, SNS: Notificações por push por aplicativo e plataforma ou SNS: Notificações por push porplataforma para mostrar as métricas disponíveis.

4. Clique em um item específico para ver mais detalhes, como um gráfico dos dados coletados. Porexemplo, o seguinte gráfico da métrica selecionada, NumberOfMessagesPublished, mostra o númeromédio de mensagens publicadas do Amazon SNS por um período de cinco minutos em um intervalode seis horas.

Versão da API 2010-03-31196

Page 204: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorDefinir alertas do CloudWatchpara métricas do Amazon SNS

Para acessar as métricas de CLI do CloudWatch

• Chame mon-get-stats. Você pode saber mais sobre esta e outras funções relacionadas a métricasem Guia do usuário do Amazon CloudWatch.

Para acessar as métricas da API do CloudWatch

• Chame GetMetricStatistics. Você pode saber mais sobre esta e outras funções relacionadas amétricas no Amazon CloudWatch API Reference.

Definir alertas do CloudWatch para métricas doAmazon SNS

CloudWatch também permite que você defina alertas para quando um limite for atingido para uma métrica.Por exemplo, você pode definir um alarme para a métrica, NumberOfNotificationsFailed, de modo que,quando o número limite especificado for atendido dentro do período de amostragem, uma notificação seráenviada por e-mail para informá-lo sobre o evento.

Para definir alertas usando o console do CloudWatch

1. Faça login no Console de gerenciamento da AWS e abra o console da CloudWatch em https://console.aws.amazon.com/cloudwatch/.

2. Clique em Alarmes e clique no botão Criar alarme. Isso inicia o assistente Criar alarme.3. Role pelas métricas do Amazon SNS para localizar a métrica em que você deseja colocar um alarme.

Selecione a métrica para criar um alarme e clique em Continuar.

Versão da API 2010-03-31197

Page 205: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorMétricas do Amazon SNS

4. Preencha os valores Nome, Descrição, Limite e Tempo para a métrica e clique em Continuar.5. Escolha Alarme como o estado do alarme. Se você deseja que o CloudWatch envie um e-mail quando

o estado de alarme for atingido, selecione um tópico pré-existente no Amazon SNS ou clique emCriar novo tópico de e-mail. Se você clicar em Criar novo tópico de e-mail, poderá definir o nome e oendereço de e-mail para um novo tópico. Esta lista será salva e aparecerá na caixa suspensa paraalertas futuros. Clique em Continue.

Note

Se você escolher Criar novo tópico de e-mail para criar um novo tópico do Amazon SNS, osendereços de e-mail deverão ser verificados antes que eles recebam notificações. Os e-mailssão enviados somente quando o alerta entra em um estado de alerta. Se essa alteração paraestado de alerta ocorrer antes que os endereços de e-mail sejam verificados, a notificaçãonão será recebida.

6. Nesse momento, o assistente Criar alarme lhe oferece uma oportunidade para revisar o alarme quevocê está prestes a criar. Se você precisar fazer alterações, use os links Editar à direita. Quandoestiver satisfeito, clique em Criar alarme.

Para obter mais informações sobre o uso do CloudWatch e alertas, consulte a Documentação doCloudWatch.

Métricas do Amazon SNSAmazon SNS envia as seguintes métricas para CloudWatch.

Métrica Descrição

NumberOfMessagesPublished O número de mensagens publicadas nos tópicos deAmazon SNS.

Unidades: Contagem

Estatísticas válidas: Soma

NumberOfNotificationsDelivered O número de mensagens entregues com êxito dostópicos de Amazon SNS para endpoints de assinatura.

Para obter uma tentativa de entrega bem-sucedida, oendpoint deve aceitar a assinatura da mensagem. Umaassinatura aceita uma mensagem se a.) não houverpolítica de filtro ou b.) sua política de filtro incluir atributosque combinam com aqueles atribuídos à mensagem. Sea assinatura rejeita a mensagem, a tentativa de entreganão é contada para esta métrica.

Unidades: Contagem

Estatísticas válidas: Soma

NumberOfNotificationsFailed O número de mensagens que Amazon SNS falhou aoentregar.

Para Amazon SQS, e-mail, SMS ou endpoints deforça móvel, os incrementos de métrica por 1 quandoAmazon SNS para de tentar entregar mensagens.Para endpoints HTTP ou HTTPS, a métrica inclui

Versão da API 2010-03-31198

Page 206: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorMétricas do Amazon SNS

Métrica Descriçãocada tentativa de entrega com falha, incluindo novastentativas que seguem a tentativa inicial. Para todos osoutros endpoints, a contagem aumenta em 1 quandoa mensagem não é entregue (independentemente donúmero de tentativas).

Essa métrica não inclui mensagens que foram rejeitadaspelo filtro de assinatura políticas.

Você pode controlar o número de novas tentativas paraendpoints em HTTP. Para obter mais informações,consulte Configuração de políticas de nova tentativade entrega do Amazon SNS para endpoints HTTP/HTTPS (p. 155).

Unidades: Contagem

Estatísticas válidas: soma, média

NumberOfNotificationsFilteredOut O número de mensagens que foram rejeitadas pelofiltro de assinatura políticas. Uma política de filtro rejeitauma mensagem quando os atributos de mensagem nãocorrespondem aos atributos de política.

Unidades: Contagem

Estatísticas válidas: soma, média

NumberOfNotificationsFilteredOut-NoMessageAttributes

O número de mensagens que foram rejeitadaspelas políticas de filtro de assinatura por conta de asmensagens não terem atributos.

Unidades: Contagem

Estatísticas válidas: soma, média

NumberOfNotificationsFilteredOut-InvalidAttributes

O número de mensagens que foram rejeitadas porpolíticas de filtro de assinatura por conta de atributos demensagens são inválidos – por exemplo, por conta deatributo JSON formatado incorretamente.

Unidades: Contagem

Estatísticas válidas: soma, média

PublishSize O tamanho das mensagens publicadas.

Unidades: Bytes

Estatísticas válidas: mínimo, máximo, média e contagem

Versão da API 2010-03-31199

Page 207: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorDimensões para métricas do

Amazon Simple Notification Service

Métrica Descrição

SMSMonthToDateSpentUSD As cobranças que você acumulou desde o início do mêsatual com o envio de mensagens SMS.

Você pode definir um alarme para esta métrica parasaber quando seus encargos acumulados do mês atualestão pertos do limite de gastos mensais de SMS dasua conta. Quando o Amazon SNS determina queenviar uma mensagem SMS pode gerar um custo queultrapassaria esse limite, ele interrompe a publicação demensagens SMS em poucos minutos.

Para obter informações sobre a configuração deseu limite de gastos mensais de SMS, ou para obterinformações sobre como solicitar um aumento delimite de gastos com a AWS, consulte Definição depreferências de mensagens SMS (p. 121).

Unidade: USD

Estatísticas válidas: máximo

SMSSuccessRate A taxa de entregas bem-sucedidas de mensagem SMS.

Unidades: Contagem

Estatísticas válidas: Soma, média, amostragem de dados

Dimensões para métricas do Amazon SimpleNotification Service

O Amazon Simple Notification Service envia as seguintes dimensões para o CloudWatch.

Dimensão Descrição

Application Os filtros em objetos do aplicativo, que representam um aplicativo edispositivo registrado com um dos serviços de notificação por pushcompatíveis, como APNS e GCM.

Application,Platform Os filtros em objetos do aplicativo e da plataforma, onde os objetosda plataforma estão para os serviços de notificação por pushcompatíveis, como APNS e GCM.

Country Os filtros no país ou região de destino de uma mensagem SMS. Opaís ou região é representado por seu código alfa-2 ISO 3166-1.

Platform Os filtros em objetos da plataforma para os serviços de notificaçãopor push, como APNS e GCM.

TopicName Os filtros em nomes de tópicos do Amazon SNS.

SMSType Os filtros no tipo da mensagem SMS. Podem ser promocionais outransacionais.

Versão da API 2010-03-31200

Page 208: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorInformações sobre o Amazon SNS no CloudTrail

Registro de chamadas de API doAmazon Simple Notification Servicepor meio do AWS CloudTrail

Amazon SNS é integrado ao CloudTrail, um serviço que captura as chamadas de API efetuadas peloAmazon SNS ou em nome dele em sua conta da AWS e fornece os arquivos de log para um bucketdo Amazon S3 que você especificar. CloudTrail captura as chamadas de API feitas pelo console doAmazon SNS ou pela API do Amazon SNS. Usando as informações coletadas pelo CloudTrail, vocêpode determinar que solicitação foi feita para o Amazon SNS, o endereço IP de origem a partir do qual asolicitação foi feita, quem fez a solicitação, quando ela foi feita, e assim por diante. Para saber mais sobreo CloudTrail, incluindo como configurá-lo e ativá-lo, consulte o AWS CloudTrail User Guide.

Informações sobre o Amazon SNS no CloudTrailQuando o registro do CloudTrail está habilitado em sua conta da AWS, as chamadas de API feitas paraações do Amazon SNS são rastreadas em arquivos de log. Registros do Amazon SNS são gravados emconjunto com outros registros de serviços da AWS em um arquivo de log. CloudTrail determina quandocriar e gravar em um novo arquivo de acordo com o período de tempo e o tamanho do arquivo.

As ações a seguir são compatíveis:

• AddPermission• ConfirmSubscription• CreatePlatformApplication• CreatePlatformEndpoint• CreateTopic• DeleteEndpoint• DeletePlatformApplication• DeleteTopic• GetEndpointAttributes• GetPlatformApplicationAttributes• GetSubscriptionAttributes• GetTopicAttributes• ListEndpointsByPlatformApplication• ListPlatformApplications• ListSubscriptions• ListSubscriptionsByTopic• ListTopics• RemovePermission• SetEndpointAttributes• SetPlatformApplicationAttributes• SetSubscriptionAttributes

Versão da API 2010-03-31201

Page 209: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorNoções básicas das entradas dearquivos de log do Amazon SNS

• SetTopicAttributes• Subscribe• Unsubscribe

Note

Se você não estiver conectado a uma conta da Amazon Web Services (modo não autenticado) ea ação ConfirmSubscription ou Unsubscribe for chamada, ela não será registrada no CloudTrail.Por exemplo, quando você clica no link fornecido em uma notificação por e-mail para confirmaruma inscrição pendente para um tópico, a ação ConfirmSubscription é chamada no modonão autenticado. Nesse exemplo, a ação ConfirmSubscription não seria registrada noCloudTrail.

Cada entrada de log contém informações sobre quem gerou a solicitação. As informações sobre identidadedo usuário no registro ajudam a determinar se a solicitação foi feita com credenciais de usuário root ouIAM, com credenciais de segurança temporárias para uma função ou um usuário federado ou por outroserviço da AWS. Para obter mais informações, consulte o campo userIdentity na Referência de evento doCloudTrail.

É possível armazenar os arquivos de log em seu bucket pelo tempo que você desejar, mas tambémé possível definir regras de ciclo de vida do Amazon S3 para arquivar ou excluir os arquivos de logautomaticamente. Por padrão, os arquivos de log são criptografados usando server-side encryption (SSE –criptografia server-side) do Amazon S3.

É possível optar por ter as notificações do Amazon SNS publicadas pelo CloudTrail quando os arquivos delog novos forem entregues caso você queira agir rapidamente após a entrega do arquivo de log. Para obtermais informações, consulte Configuring Amazon SNS Notifications.

Também é possível agregar arquivos de log do Amazon SNS de várias regiões e contas da AWS em umúnico bucket do Amazon S3. Para obter mais informações, consulte Aggregating CloudTrail Log Files to aSingle Amazon S3 Bucket.

Noções básicas das entradas de arquivos de log doAmazon SNS

Os arquivos de log do CloudTrail contêm uma ou mais entradas de log, e cada entrada é composta devários eventos em formato JSON. Uma entrada de log representa uma única solicitação de qualquerorigem e inclui informações sobre a ação solicitada, quaisquer parâmetros, a data e hora da ação e assimpor diante. Não é garantido que as entradas de log estejam em uma ordem específica. Ou seja, elas nãosão um rastreamento ordenado das chamadas de API públicas.

O exemplo a seguir mostra uma entrada de log do CloudTrail para as ações ListTopics, CreateTopice DeleteTopic.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type":"IAMUser", "userName":"Bob" "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Bob", "accountId": "123456789012",

Versão da API 2010-03-31202

Page 210: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorNoções básicas das entradas dearquivos de log do Amazon SNS

"accessKeyId": "AKIAIOSFODNN7EXAMPLE" }, "eventTime": "2014-09-30T00:00:00Z", "eventSource": "sns.amazonaws.com", "eventName": "ListTopics", "awsRegion": "us-west-2", "sourceIPAddress": "127.0.0.1", "userAgent": "aws-sdk-java/unknown-version", "requestParameters": { "nextToken": "ABCDEF1234567890EXAMPLE==" }, "responseElements": null, "requestID": "example1-b9bb-50fa-abdb-80f274981d60", "eventID": "example0-09a3-47d6-a810-c5f9fd2534fe", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }, { "eventVersion": "1.02", "userIdentity": { "type":"IAMUser", "userName":"Bob" "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Bob", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE" }, "eventTime": "2014-09-30T00:00:00Z", "eventSource": "sns.amazonaws.com", "eventName": "CreateTopic", "awsRegion": "us-west-2", "sourceIPAddress": "127.0.0.1", "userAgent": "aws-sdk-java/unknown-version", "requestParameters": { "name": "hello" }, "responseElements": { "topicArn": "arn:aws:sns:us-west-2:123456789012:hello-topic" }, "requestID": "example7-5cd3-5323-8a00-f1889011fee9", "eventID": "examplec-4f2f-4625-8378-130ac89660b1", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }, { "eventVersion": "1.02", "userIdentity": { "type":"IAMUser", "userName":"Bob" "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Bob", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE" }, "eventTime": "2014-09-30T00:00:00Z", "eventSource": "sns.amazonaws.com", "eventName": "DeleteTopic", "awsRegion": "us-west-2", "sourceIPAddress": "127.0.0.1", "userAgent": "aws-sdk-java/unknown-version", "requestParameters": { "topicArn": "arn:aws:sns:us-west-2:123456789012:hello-topic" }, "responseElements": null, "requestID": "example5-4faa-51d5-aab2-803a8294388d", "eventID": "example8-6443-4b4d-abfd-1b867280d964",

Versão da API 2010-03-31203

Page 211: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorNoções básicas das entradas dearquivos de log do Amazon SNS

"eventType": "AwsApiCall", "recipientAccountId": "123456789012" }, ]}

Versão da API 2010-03-31204

Page 212: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorPublicar mensagens de maneira privada a partir da VPC

Publicação em tópicos do AmazonSNS a partir da Amazon VirtualPrivate Cloud

Se você usa o Amazon Virtual Private Cloud (Amazon VPC) para hospedar seus recursos da AWS, podeestabelecer uma conexão privada entre a VPC e o Amazon SNS. Com essa conexão, você pode publicarmensagens nos tópicos do Amazon SNS sem enviá-las pela Internet pública.

A Amazon VPC é um serviço da AWS que você pode usar para executar os recursos da AWS em umarede virtual que você mesmo define. Com a VPC, você tem controle sobre as configurações de rede, comoo intervalo de endereços IP, sub-redes, tabelas de rotas e gateways de rede. Para conectar a VPC aoAmazon SNS, você define um VPC endpoint de interface. Esse tipo de endpoint permite que você conectea VPC aos serviços da AWS. O endpoint fornece conectividade confiável e escalável com o Amazon SNSsem a necessidade de um gateway de Internet, da instância de conversão de endereço de rede (NAT)ou de uma conexão VPN. Para obter mais informações, consulte VPC endpoints de interface no Guia dousuário da Amazon VPC.

As informações nesta seção são para usuários da Amazon VPC. Para obter mais informações e paracomeçar a criar uma VPC, consulte Conceitos básicos do Amazon VPC no Guia do usuário da AmazonVPC.

Tópicos• Tutorial: publicar mensagens do Amazon SNS de maneira privada a partir da Amazon VPC (p. 205)• Criação de um endpoint de Amazon VPC para o Amazon SNS (p. 215)

Tutorial: publicar mensagens do Amazon SNS demaneira privada a partir da Amazon VPC

Neste tutorial, você aprenderá como publicar em um tópico do Amazon SNS, mantendo as mensagensseguras em uma rede privada. Publique uma mensagem a partir de uma instância do Amazon EC2hospedada na Amazon Virtual Private Cloud (Amazon VPC). A mensagem permanecerá na rede da AWSsem ir para a Internet pública. Ao publicar mensagens de forma privada a partir de uma VPC, você podemelhorar a segurança do tráfego entre seus aplicativos e Amazon SNS. Essa segurança é importante aopublicar informações de identificação pessoal (PII) sobre seus clientes ou quando sua inscrição está sujeitaa regulamentações de mercado. Por exemplo, publicar de maneira privada é útil se você tiver um sistemapara área da saúde que precise estar em conformidade com a Lei de Portabilidade e Responsabilidade deProvedores de Saúde (HIPAA) ou um sistema financeiro que precise estar em conformidade com o Padrãode segurança de dados do setor de cartão de pagamento (Payment Card Industry Data Security Standard,PCI DSS).

Para concluir este tutorial:

• Use um modelo do AWS CloudFormation para criar automaticamente uma rede privada temporária nasua conta da AWS.

• Crie um VPC endpoint que conecte a VPC com o Amazon SNS.• Faça login em uma instância do Amazon EC2 e publique uma mensagem de maneira privada em um

tópico do Amazon SNS.

Versão da API 2010-03-31205

Page 213: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorAntes de começar

• Verifique se a mensagem foi entregue com sucesso.• Exclua os recursos que você criou com este tutorial para que eles não permaneçam na sua conta da

AWS.

O diagrama a seguir descreve a rede privada que você cria na sua conta do AWS ao concluir este tutorial:

Esta rede consiste em uma VPC que contém uma instância do Amazon EC2. A instância se conecta aoAmazon SNS por meio de um VPC endpoint de interface. Esse tipo de endpoint se conecta a serviçoscom tecnologia AWS PrivateLink. Com esta conexão estabelecida, você poderá fazer login na instância doAmazon EC2 e publicar mensagens no tópico do Amazon SNS, mesmo que a rede esteja desconectadada Internet pública. O tópico envia as mensagens recebidas para duas funções AWS Lambda deassinatura. Essas funções registram as mensagens recebidas no Amazon CloudWatch Logs.

Este tutorial leva cerca de 20 minutos para ser concluído.

Tópicos• Antes de começar (p. 206)• Etapa 1: criar um par de chaves do Amazon EC2 (p. 206)• Etapa 2: criar recursos da AWS (p. 207)• Etapa 3: verificar se a instância do Amazon EC2 tem acesso à Internet (p. 209)• Etapa 4: criar um Amazon VPC endpoint para Amazon SNS (p. 210)• Etapa 5: publicar uma mensagem no seu tópico do Amazon SNS (p. 212)• Etapa 6: verificar as entregas de mensagens (p. 212)• Etapa 7: Limpeza (p. 214)• Recursos relacionados (p. 207)

Antes de começarAntes de iniciar este tutorial, você precisa de uma conta do Amazon Web Services (AWS). Ao se cadastrar,sua conta será automaticamente habilitada para todos os serviços na AWS, incluindo Amazon SNS eAmazon VPC. Se você ainda não criou uma conta, acesse https://aws.amazon.com/e escolha Create aFree Account (Criar conta gratuita).

Etapa 1: criar um par de chaves do Amazon EC2Um par de chaves é usado para efetuar login em um instância do Amazon EC2. Esse par consiste emuma chave pública usada para criptografar suas informações de login e uma chave privada usada paradescriptografá-la. Ao criar um par de chaves, você faz download de uma cópia da chave privada. Mais

Versão da API 2010-03-31206

Page 214: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 2: criar recursos

adiante neste tutorial, você usará o par de chaves para fazer login em uma instância do Amazon EC2. Paraefetuar login, especifique o nome do par de chaves e insira a chave privada.

Para criar o par de chaves

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon EC2 em https://console.aws.amazon.com/ec2/.

2. No menu de navegação à esquerda, localize a seção Network & Security (Rede e segurança). Emseguida, escolha Key Pairs (Pares de chave).

3. Escolha Criar par de chaves.4. Na janela Create Key Pair (Criar par de chaves). Em Key pair name (Nome do par de chaves), digite

VPCE-Tutorial-KeyPair. Selecione Create (Criar).

5. O arquivo de chave privada é baixado automaticamente pelo navegador. Salve-o em um local seguro.O Amazon EC2 dá a extensão .pem ao arquivo.

6. (Opcional) Se estiver usando um cliente de SSH em um computador Mac ou Linux para se conectarà sua instância, use o seguinte comando chmod para definir as permissões do arquivo de chaveprivada, de maneira que apenas você possa lê-lo:

a. Abra um terminal e navegue até o diretório que contém a chave privada:

$ cd /filepath_to_private_key/

b. Defina as permissões usando o seguinte comando:

$ chmod 400 VPCE-Tutorial-KeyPair.pem

Etapa 2: criar recursos da AWSPara configurar a infraestrutura que oferece suporte a este tutorial, use um modelo do AWSCloudFormation. Um modelo é um arquivo que funciona como um plano para a criação de recursos daAWS, como instâncias do Amazon EC2 e tópicos do Amazon SNS. O modelo deste tutorial está disponívelpara download no GitHub.

Você fornece o modelo para o AWS CloudFormation. Em seguida, o AWS CloudFormation fornece osrecursos necessários como uma pilha na sua conta da AWS. Uma pilha é um conjunto de recursos quepode gerenciar como uma unidade. Ao concluir o tutorial, você poderá usar o AWS CloudFormation paraexcluir todos os recursos da pilha de uma só vez. Esses recursos não permanecerão na sua conta daAWS, a menos que você queira.

A pilha deste tutorial inclui os seguintes recursos:

• Uma VPC e os recursos de rede associados, incluindo uma sub-rede, um security group, um gateway daInternet e uma tabela de rotas.

• Uma instância do Amazon EC2 que é lançada na sub-rede na VPC.

Versão da API 2010-03-31207

Page 215: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 2: criar recursos

• Um tópico do Amazon SNS.• Duas funções AWS Lambda. Estas funções recebem mensagens que são publicadas no tópico do

Amazon SNS, e elas registram eventos no CloudWatch Logs.• Métricas e logs do Amazon CloudWatch.• Uma função do IAM que permite que a instância do Amazon EC2 use o Amazon SNS e uma função do

IAM que permite que as funções Lambda gravem nos logs do CloudWatch.

Para criar recursos da AWS

1. Faça download do modelo do AWS CloudFormation no site do GitHub.2. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.3. Selecione Criar Stack.4. Na página Select Template (Selecionar modelo), faça upload do modelo:

a. Escolha Upload a template to Amazon S3.b. Escolha Choose File (Escolher arquivo), e insira o arquivo de modelo que você obteve por

download.

c. Escolha Next.5. Na página Specify Details (Especificar detalhes), especifique os nomes de pilha e chave:

a. Em Stack name (Nome da pilha), digite VPCE-Tutorial-Stack.b. Para KeyName, escolha VPCE-Tutorial-KeyPair.c. Para SSHLocation, mantenha o valor padrão de 0.0.0.0/0.

d. Escolha Next.6. Na página Options (Opções), mantenha todos os valores padrão e escolha Next (Próximo).7. Na página Review (Revisar), verifique os detalhes da pilha.8. Em Capabilities (Recursos), marque a caixa de seleção que confirma que AWS CloudFormation pode

criar os recursos do IAM com nomes personalizados.9. Escolha Criar.

Versão da API 2010-03-31208

Page 216: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 3: verificar a conexão da instância com a Internet

O console do AWS CloudFormation abre a página Stacks (Pilhas). O VPCE-Tutorial-Stack tem umstatus de CREATE_IN_PROGRESS. Em instantes, após a conclusão do processo de criação, o statusmuda para CREATE_COMPLETE.

Tip

Clique no botão Refresh (Atualizar) para ver o status mais recente da pilha.

Etapa 3: verificar se a instância do Amazon EC2 temacesso à InternetA instância do Amazon EC2 que foi lançada na sua VPC na etapa anterior não tem acesso à Internet. Elanão permite o tráfego de saída e não pode publicar mensagens no Amazon SNS. Para verificar isso, façalogin na instância. Em seguida, conecte-se a um endpoint público e tente enviar uma mensagem AmazonSNS.

Neste ponto do tutorial, a tentativa de publicação falha. Em uma etapa posterior, depois de criar um VPCendpoint para o Amazon SNS, sua tentativa de publicação será bem-sucedida.

Para se conectar à sua instância do Amazon EC2

1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.2. No menu de navegação à esquerda, localize a seção Instances (Instâncias). Em seguida, selecione

Instances (Instâncias).3. Na lista de instâncias, selecione VPCE-Tutorial-EC2Instance.4. Copie o nome do host fornecido na coluna Public DNS (IPv4) (DNS público [IPv4]).

5. Abra um terminal. No diretório que contém o par de chaves, conecte-se à instância usando o seguintecomando, em que instance-hostname é o nome do host que você copiou do console do AmazonEC2:

$ ssh -i VPCE-Tutorial-KeyPair.pem ec2-user@instance-hostname

Para verificar se a instância não tem conectividade com a Internet

• No seu terminal, tente se conectar a qualquer endpoint público, como amazon.com:

$ ping amazon.com

Como a tentativa de conexão falha, você pode cancelar a qualquer momento (Ctrl + C no Windows ouCommand + C no macOS).

Versão da API 2010-03-31209

Page 217: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 4: criar um endpoint

Para verificar se a instância não tem conectividade com o Amazon SNS

1. Abra o console do Amazon SNS em https://console.aws.amazon.com/sns/.2. No menu de navegação à esquerda, escolha Topics (Tópicos).3. Na página Topics (Tópicos), copie o nome de recurso da Amazon (ARN) para o tópico VPCE-Tutorial-

Topic.4. No seu terminal, tente publicar uma mensagem no tópico:

$ aws sns publish --region aws-region --topic-arn sns-topic-arn --message "Hello"

Como a tentativa de publicação falha, você pode cancelar a qualquer momento.

Etapa 4: criar um Amazon VPC endpoint para AmazonSNSPara conectar a VPC ao Amazon SNS, você define um VPC endpoint de interface. Depois de adicionar oendpoint, você poderá efetuar login na instância do Amazon EC2 na sua VPC. Lá, você poderá usar a APIdo Amazon SNS. Você pode publicar mensagens no tópico. Elas serão publicadas de maneira privada. Asmensagens permanecerão na rede da AWS e não serão enviadas para a Internet pública.

A instância ainda não tem acesso a outros serviços e endpoints da AWS na Internet.

Para criar o endpoint

1. Abra o console de Amazon VPC em https://console.aws.amazon.com/vpc/.2. No menu de navegação à esquerda, escolha Endpoints.3. Escolha Create Endpoint.4. Na página Create Endpoint (Criar endpoint), para Service category (Categoria de serviço), mantenha o

valor padrão de AWS services (Serviços da AWS).5. Em Service Name (Nome do serviço), escolha o nome do serviço para o Amazon SNS.

Os nomes de serviços variam de acordo com a região escolhida. Por exemplo, se você escolher Lestedos EUA (Norte da Virgínia), o nome do serviço será com.amazonaws.us-east-1.sns.

6. Para VPC, escolha a VPC com nome VPCE-Tutorial-VPC.

7. Em Subnets (Sub-redes), selecione a sub-rede que contém VPCE-Tutorial-Subnet no ID de sub-rede.

Versão da API 2010-03-31210

Page 218: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 4: criar um endpoint

8. Em Enable Private DNS Name (Ativar nome DNS privado), selecione Enable for this endpoint (Ativarpara este terminal).

9. Em Security group, escolhe Select security group (Selecionar security group) e o nome VPCE-Tutorial-SecurityGroup.

10. Escolha Create endpoint. O console da Amazon VPC verifica se o VPC endpoint foi criado.

11. Escolha Fechar.

O console do Amazon VPC abre a página Endpoints. O novo endpoint tem um status pending(pendente). Em instantes, após a conclusão do processo de criação, o status muda para available(disponível).

Versão da API 2010-03-31211

Page 219: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 5: publicar uma mensagem

Etapa 5: publicar uma mensagem no seu tópico doAmazon SNSAgora que sua VPC inclui um endpoint para o Amazon SNS, você poderá efetuar login na instância doAmazon EC2 e publicar mensagens no tópico.

Para publicar uma mensagem

1. Se seu terminal não estiver mais conectado à sua instância do Amazon EC2, conecte-se novamente:

$ ssh -i VPCE-Tutorial-KeyPair.pem ec2-user@instance-hostname

2. Execute o mesmo comando que você fez anteriormente para publicar uma mensagem no seu tópicodo Amazon SNS. Desta vez, a tentativa de publicação será bem-sucedida e o Amazon SNS retornaráum ID de mensagem:

$ aws sns publish --region aws-region --topic-arn sns-topic-arn --message "Hello"{ "MessageId": "5b111270-d169-5be6-9042-410dfc9e86de"}

Etapa 6: verificar as entregas de mensagensQuando o tópico do Amazon SNS receber uma mensagem, ele enviará a mensagem para as duas funçõesLambda de assinatura. Quando essas funções receberem a mensagem, elas registrarão o evento nos logsdo CloudWatch. Para saber se a entrega da mensagem foi bem sucedida, verifique se as funções foraminvocadas e se os logs do CloudWatch foram atualizados.

Para verificar se as funções Lambda foram invocadas

1. Abra o console do AWS Lambda em https://console.aws.amazon.com/lambda/.2. Na página Functions (Funções), escolha VPCE-Tutorial-Lambda-1.3. Escolha Monitoring.4. Verifique o gráfico Invocation count (Contagem de invocação). Este gráfico mostra o número de vezes

que a função Lambda foi executada.

A contagem de invocação corresponde ao número de vezes que você publicou uma mensagem notópico.

Versão da API 2010-03-31212

Page 220: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 6: verificar

Para verificar se os logs do CloudWatch foram atualizados

1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.2. No menu de navegação à esquerda, escolha Logs.3. Verifique os registros que foram escritos pelas funções Lambda:

a. Escolha o grupo de logs /aws/lambda/VPCE-Tutorial-Lambda-1/.b. Escolha o fluxo de logs.c. Verifique se o log inclui a entrada From SNS: Hello.

Versão da API 2010-03-31213

Page 221: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorEtapa 7: Limpeza

d. Escolha Log Groups (Grupos de logs) na parte superior do console para retornar para a páginaLog Groups (Grupos de logs). Em seguida, repita as etapas anteriores para o grupo de log /aws/lambda/VPCE-Tutorial-Lambda-2/.

Parabéns! Ao adicionar um endpoint para Amazon SNS a um VPC, você conseguiu publicar umamensagem em um tópico de dentro da rede gerenciada pela VPC. A mensagem foi publicada de maneiraprivada sem ser exposta à Internet pública.

Etapa 7: LimpezaA menos que você queira manter os recursos criados neste tutorial, você poderá excluí-los agora. Aoexcluir os recursos da AWS que você não está mais usando, é possível evitar cobranças desnecessáriasna sua conta da AWS.

Primeiro, apague seu VPC endpoint usando o console do Amazon VPC. Em seguida, exclua os outrosrecursos que você criou, excluindo a pilha no console do AWS CloudFormation. Quando você exclui umapilha, o AWS CloudFormation remove os recursos da pilha da sua conta da AWS.

Para excluir seu VPC endpoint

1. Abra o console de Amazon VPC em https://console.aws.amazon.com/vpc/.2. No menu de navegação à esquerda, escolha Endpoints.3. Selecione o endpoint que você criou.4. Escolha Actions (Ações) e escolha Delete Endpoint (Excluir endpoint).5. Na janela Delete Endpoint (Excluir endpoint), escolha Yes, Delete (Sim, excluir).

O status do endpoint muda para deleting (excluindo). Quando a exclusão é concluída, o endpoint éremovido da página.

Versão da API 2010-03-31214

Page 222: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorRecursos relacionados

Para excluir sua pilha do AWS CloudFormation

1. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.2. Selecione a pilha VPCE-Tutorial-Stack.3. Escolha Ações e, em seguida, escolha Excluir pilha.4. Na janela Delete Stack (Excluir pilha), escolha Yes, Delete (Sim, excluir).

O status da pilha muda para DELETE_IN_PROGRESS. Quando a exclusão é concluída, a pilha éremovida da página.

Recursos relacionadosSe você quiser saber mais detalhes sobre os conceitos apresentados neste tutorial, consulte os seguintesrecursos.

• Blog de segurança da AWS: proteger mensagens publicadas no Amazon SNS com o AWS PrivateLink• O que é o Amazon VPC?• VPC Endpoints• O que é o Amazon EC2?• Conceitos do AWS CloudFormation

Criação de um endpoint de Amazon VPC para oAmazon SNS

Para publicar mensagens nos tópicos do Amazon SNS de uma Amazon VPC, crie uma VPC endpoint. Emseguida, você poderá publicar mensagens nos seus tópicos, mantendo o tráfego na rede gerenciada coma VPC.

Use as informações a seguir para criar o endpoint e testar a conexão entre a VPC e o Amazon SNS.Consulte Tutorial: publicar mensagens do Amazon SNS de maneira privada a partir da AmazonVPC (p. 205) para ver instruções detalhadas sobre como começar do zero.

Criação do endpointPara criar um endpoint do Amazon SNS na sua VPC, consulte Criar um endpoint de interface no Guia dousuário da Amazon VPC. A documentação da Amazon VPC ajuda você a criar e configurar um endpointusando o console da Amazon VPC ou a AWS CLI.

Quando você criar o endpoint, especifique o Amazon SNS como o serviço ao qual a VPC devese conectar. No console da Amazon VPC, os nomes de serviços variam de acordo com a regiãoescolhida. Por exemplo, se você escolher Leste dos EUA (Norte da Virgínia), o nome do serviço serácom.amazonaws.us-east-1.sns.

Como testar a conexão entre a VPC e o Amazon SNSDepois de criar um endpoint para o Amazon SNS, você pode publicar mensagens a partir da VPC nostópicos do Amazon SNS. Para testar essa conexão, faça o seguinte:

1. Conecte-se a uma instância do Amazon EC2 que reside na VPC. Para obter mais informações sobrea conexão, consulte Conecte-se à sua instância do Linux ou Conexão com sua instância Windows nadocumentação do Amazon EC2.

Versão da API 2010-03-31215

Page 223: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorTeste de conexão

Por exemplo, para se conectar a uma instância do Linux usando um cliente SSH, execute o seguintecomando a partir de um terminal:

$ ssh -i ec2-key-pair.pem ec2-user@instance-hostname

Onde:

• ec2-key-pair.pem é o arquivo que contém o par de chaves fornecido pelo Amazon EC2 quando vocêcriou a instância.

• instance-hostname é o nome de host público da instância. Para obter o nome do host no console doAmazon EC2: escolha Instances (Instâncias), selecione a instância e localize o valor de Public DNS(IPv4) (DNS público (IPv4)).

2. Na sua instância, use o comando publish do Amazon SNS com a AWS CLI. Você pode enviar umamensagem simples para um tópico com o seguinte comando:

$ aws sns publish --region aws-region --topic-arn sns-topic-arn --message "Hello"

Onde:

• aws-region é a região da AWS onde o tópico se encontra.• sns-topic-arn é o nome de recurso da Amazon (ARN) do tópico. Para obter o ARN do console do

Amazon SNS: escolha Topics (Tópicos), localize o tópico e encontre o valor na coluna ARN.

Se a mensagem for recebida com êxito pelo Amazon SNS, o terminal imprimirá um ID de mensagem,como o seguinte:

{ "MessageId": "6c96dfff-0fdf-5b37-88d7-8cba910a8b64"}

Versão da API 2010-03-31216

Page 224: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorCabeçalhos HTTP/HTTPS

Apêndice. Mensagem e formatosJSON

Amazon SNS usa os formatos a seguir.

Tópicos• Cabeçalhos HTTP/HTTPS (p. 217)• Formato JSON de confirmação de inscrição HTTP/HTTPS (p. 218)• Formato JSON de notificação HTTP/HTTPS (p. 220)• Formato JSON de confirmação de cancelamento de inscrição de HTTP/HTTPS (p. 221)• Formato JSON da política de entrega de SetSubscriptionAttributes (p. 223)• Formato JSON da política de Entrega SetTopicAttributes (p. 223)

Cabeçalhos HTTP/HTTPSQuando Amazon SNS envia uma confirmação de inscrição, uma notificação ou uma mensagem deconfirmação do cancelamento de inscrição para endpoints HTTP/HTTPS, ele envia uma mensagem POSTcom uma série de valores de cabeçalho específicos do Amazon SNS. Você pode usar esses valores decabeçalho para fazer ações, como, por exemplo, identificar o tipo de mensagem sem a necessidade deanalisar o corpo da mensagem JSON para ler o valor Type.

x-amz-sns-message-type

O tipo de mensagem. Os valores possíveis são SubscriptionConfirmation, Notification eUnsubscribeConfirmation.

x-amz-sns-message-id

Um Identificador universalmente exclusivo, exclusivo para cada mensagem publicada. Para umanotificação que Amazon SNS reenvia durante uma nova tentativa, o ID da mensagem original é usado.

x-amz-sns-topic-arn

O Nome de recurso da Amazon (ARN) para o tópico em que essa mensagem foi publicada.x-amz-sns-subscription-arn

O ARN para a inscrição nesse endpoint.

O cabeçalho HTTP POST a seguir é um exemplo de um cabeçalho para uma mensagem de notificaçãopara um endpoint HTTP.

POST / HTTP/1.1x-amz-sns-message-type: Notificationx-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1bx-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopicx-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55Content-Length: 1336Content-Type: text/plain; charset=UTF-8Host: myhost.example.comConnection: Keep-Alive

Versão da API 2010-03-31217

Page 225: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorFormato JSON de confirmação de inscrição HTTP/HTTPS

User-Agent: Amazon Simple Notification Service Agent

Formato JSON de confirmação de inscrição HTTP/HTTPS

Depois de você inscrever um endpoint HTTP/HTTPS, Amazon SNS enviará uma mensagemde confirmação de inscrição para o endpoint HTTP/HTTPS. Esta mensagem contém um valorSubscribeURL que você deve consultar para confirmar a inscrição (como alternativa, você pode usar ovalor Token com o ConfirmSubscription). Amazon SNS não enviará notificações para esse endpoint atéque a inscrição seja confirmada.

A mensagem de confirmação da inscrição é uma mensagem de POST com um corpo de mensagem quecontém um documento JSON com os pares de nome/valor a seguir.

Message

Uma string que descreve a mensagem. Para confirmação de inscrição, esta string é semelhante a:

You have chosen to subscribe to the topic arn:aws:sns:us-east-1:123456789012:MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.

MessageId

Um Identificador universalmente exclusivo, exclusivo para cada mensagem publicada. Para umamensagem que Amazon SNS reenvia durante uma nova tentativa, o ID da mensagem original éusado.

Signature

Assinatura “SHA1withRSA” codificada por Base64 dos valores Message, MessageId, Type,Timestamp e TopicArn.

SignatureVersion

Versão da assinatura do Amazon SNS usada.SigningCertURL

O URL do certificado que foi usado para assinar a mensagem.SubscribeURL

O URL que você deve acessar para confirmar a inscrição. Como alternativa, você pode usar o Tokencom a ação ConfirmSubscription para confirmar a inscrição.

Timestamp

A hora (GMT) quando a confirmação de inscrição foi enviada.Token

Um valor que pode ser usado com a ação ConfirmSubscription para confirmar a inscrição. Comoalternativa, você pode simplesmente acessar o SubscribeURL.

TopicArn

O Nome de recurso da Amazon (ARN) para o tópico em que este endpoint está inscrito.Type

O tipo de mensagem. Para uma confirmação de inscrição, o tipo é SubscriptionConfirmation.

Versão da API 2010-03-31218

Page 226: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorFormato JSON de confirmação de inscrição HTTP/HTTPS

A seguinte mensagem HTTP POST é um exemplo de uma mensagem SubscriptionConfirmation para umendpoint HTTP.

POST / HTTP/1.1x-amz-sns-message-type: SubscriptionConfirmationx-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1bx-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopicContent-Length: 1336Content-Type: text/plain; charset=UTF-8Host: myhost.example.comConnection: Keep-AliveUser-Agent: Amazon Simple Notification Service Agent

{ "Type" : "SubscriptionConfirmation", "MessageId" : "165545c9-2a5c-472c-8df2-7ff2be2b3b1b", "Token" : "2336412f37fb687f5d51e6e241d09c805a5a57b30d712f794cc5f6a988666d92768dd60a747ba6f3beb71854e285d6ad02428b09ceece29417f1f02d609c582afbacc99c583a916b9981dd2728f4ae6fdb82efd087cc3b7849e05798d2d2785c03b0879594eeac82c01f235d0e717736", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Message" : "You have chosen to subscribe to the topic arn:aws:sns:us-west-2:123456789012:MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.", "SubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=2336412f37fb687f5d51e6e241d09c805a5a57b30d712f794cc5f6a988666d92768dd60a747ba6f3beb71854e285d6ad02428b09ceece29417f1f02d609c582afbacc99c583a916b9981dd2728f4ae6fdb82efd087cc3b7849e05798d2d2785c03b0879594eeac82c01f235d0e717736", "Timestamp" : "2012-04-26T20:45:04.751Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEpH+DcEwjAPg8O9mY8dReBSwksfg2S7WKQcikcNKWLQjwu6A4VbeS0QHVCkhRS7fUQvi2egU3N858fiTDN6bkkOxYDVrY0Ad8L10Hs3zH81mtnPk5uvvolIC1CXGu43obcgFxeL3khZl8IKvO61GWB6jI9b5+gLPoBc1Q=", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem" }

Você pode fazer download do arquivo JSON a seguir para visualizar a definição do formato JSONpara uma confirmação de inscrição: https://sns.us-west-2.amazonaws.com/doc/2010-03-31/SubscriptionConfirmation.json.

Versão da API 2010-03-31219

Page 227: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorFormato JSON de notificação HTTP/HTTPS

Formato JSON de notificação HTTP/HTTPSQuando Amazon SNS envia uma notificação para um endpoint HTTP ou HTTPS inscrito, a mensagemPOST enviada para o endpoint tem um corpo da mensagem que contém um documento JSON com osseguintes pares de nome/valor.

Message

O valor Message especificado quando a notificação foi publicada no tópico.MessageId

Um Identificador universalmente exclusivo, exclusivo para cada mensagem publicada. Para umanotificação que Amazon SNS reenvia durante uma nova tentativa, o ID da mensagem original é usado.

Signature

Assinatura “SHA1withRSA” codificada por Base64 dos valores Message, MessageId, Subject (seestiver presente), Type, Timestamp e TopicArn.

SignatureVersion

Versão da assinatura do Amazon SNS usada.SigningCertURL

O URL do certificado que foi usado para assinar a mensagem.Subject

O parâmetro Subject especificado quando a notificação foi publicada no tópico. Esse é um parâmetroopcional. Se nenhum Subject foi especificado, esse par de nome/valor não aparece neste documentoJSON.

Timestamp

A hora (GMT) quando a notificação foi publicada.TopicArn

O Nome de recurso da Amazon (ARN) para o tópico em que essa mensagem foi publicada.Type

O tipo de mensagem. Para uma notificação, o tipo é Notification.UnsubscribeURL

Um URL que você pode usar para cancelar a inscrição do endpoint com base neste tópico. Se vocêacessar este URL, Amazon SNS cancela a inscrição do endpoint e interrompe o envio de notificaçõespara esse endpoint.

A mensagem HTTP POST a seguir é um exemplo de uma mensagem de notificação para um endpointHTTP.

POST / HTTP/1.1x-amz-sns-message-type: Notificationx-amz-sns-message-id: 22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopicx-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96Content-Length: 773Content-Type: text/plain; charset=UTF-8

Versão da API 2010-03-31220

Page 228: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorFormato JSON de confirmação de

cancelamento de inscrição de HTTP/HTTPS

Host: myhost.example.comConnection: Keep-AliveUser-Agent: Amazon Simple Notification Service Agent

{ "Type" : "Notification", "MessageId" : "22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Subject" : "My First Message", "Message" : "Hello world!", "Timestamp" : "2012-05-02T00:54:06.655Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEw6JRNwm1LFQL4ICB0bnXrdB8ClRMTQFGBqwLpGbM78tJ4etTwC5zU7O3tS6tGpey3ejedNdOJ+1fkIp9F2/LmNVKb5aFlYq+9rk9ZiPph5YlLmWsDcyC5T+Sy9/umic5S0UQc2PEtgdpVBahwNOdMW4JPwk0kAJJztnc=", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem", "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96"}

Você pode fazer download do arquivo JSON a seguir para visualizar a definição do formato JSON parauma notificação: https://sns.us-west-2.amazonaws.com/doc/2010-03-31/Notification.json.

Formato JSON de confirmação de cancelamento deinscrição de HTTP/HTTPS

Depois que a inscrição de um endpoint HTTP/HTTPS é cancelada em um tópico, Amazon SNS envia umamensagem de confirmação de cancelamento de inscrição para o endpoint.

A mensagem de confirmação do cancelamento da inscrição é uma mensagem de POST com um corpo demensagem que contém um documento JSON com os pares de nome/valor a seguir.

Message

Uma string que descreve a mensagem. Para a confirmação de cancelamento de inscrição, esta stringé semelhante a:

You have chosen to deactivate subscription arn:aws:sns:us-east-1:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55.\nTo cancel this operation and restore the subscription, visit the SubscribeURL included in this message.

MessageId

Um Identificador universalmente exclusivo, exclusivo para cada mensagem publicada. Para umamensagem que Amazon SNS reenvia durante uma nova tentativa, o ID da mensagem original éusado.

Signature

Assinatura “SHA1withRSA” codificada por Base64 dos valores Message, MessageId, Type,Timestamp e TopicArn.

Versão da API 2010-03-31221

Page 229: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorFormato JSON de confirmação de

cancelamento de inscrição de HTTP/HTTPS

SignatureVersion

Versão da assinatura do Amazon SNS usada.SigningCertURL

O URL do certificado que foi usado para assinar a mensagem.SubscribeURL

O URL que você deve acessar para confirmar novamente a inscrição. Como alternativa, você podeusar o Token com a ação ConfirmSubscription para confirmar novamente a inscrição.

Timestamp

A hora (GMT) quando a confirmação de cancelamento da inscrição foi enviada.Token

Um valor que pode ser usado com a ação ConfirmSubscription para confirmar novamente a inscrição.Como alternativa, você pode simplesmente acessar o SubscribeURL.

TopicArn

O Nome de recurso da Amazon (ARN) para o tópico do qual esse endpoint teve sua inscriçãocancelada.

Type

O tipo de mensagem. Para uma confirmação de cancelamento de inscrição, o tipo éUnsubscribeConfirmation.

A mensagem HTTP POST a seguir é um exemplo de mensagem UnsubscribeConfirmation para umendpoint HTTP.

POST / HTTP/1.1x-amz-sns-message-type: UnsubscribeConfirmationx-amz-sns-message-id: 47138184-6831-46b8-8f7c-afc488602d7dx-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopicx-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55Content-Length: 1399Content-Type: text/plain; charset=UTF-8Host: myhost.example.comConnection: Keep-AliveUser-Agent: Amazon Simple Notification Service Agent

{ "Type" : "UnsubscribeConfirmation", "MessageId" : "47138184-6831-46b8-8f7c-afc488602d7d", "Token" : "2336412f37fb687f5d51e6e241d09c805a5a57b30d712f7948a98bac386edfe3e10314e873973b3e0a3c09119b722dedf2b5e31c59b13edbb26417c19f109351e6f2169efa9085ffe97e10535f4179ac1a03590b0f541f209c190f9ae23219ed6c470453e06c19b5ba9fcbb27daeb7c7", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Message" : "You have chosen to deactivate subscription arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55.\nTo cancel this operation and restore the subscription, visit the SubscribeURL included in this message.", "SubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=2336412f37fb687f5d51e6e241d09c805a5a57b30d712f7948a98bac386edfe3e10314e873973b3e0a3c09119b722dedf2b5e31c59b13edbb26417c19f109351e6f2169efa9085ffe97e10535f4179ac1a03590b0f541f209c190f9ae23219ed6c470453e06c19b5ba9fcbb27daeb7c7", "Timestamp" : "2012-04-26T20:06:41.581Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEHXgJmXqnqsHTlqOCk7TIZsnk8zpJJoQbr8leD+8kAHcke3ClC4VPOvdpZo9s/vR9GOznKab6sjGxE8uwqDI9HwpDm8lGxSlFGuwCruWeecnt7MdJCNh0XK4XQCbtGoXB762ePJfaSWi9tYwzW65zAFU04WkNBkNsIf60=", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem" }

Versão da API 2010-03-31222

Page 230: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorFormato JSON da política de

entrega de SetSubscriptionAttributes

Você pode fazer download do arquivo JSON a seguir para visualizar a definição do formato JSON para aconfirmação de um cancelamento de inscrição: https://sns.us-west-2.amazonaws.com/doc/2010-03-31/UnsubscribeConfirmation.json.

Formato JSON da política de entrega deSetSubscriptionAttributes

Se você envia uma solicitação para a ação SetSubscriptionAttributes e define o parâmetro AttributeNamepara um valor DeliveryPolicy, o valor do parâmetro AttributeValue deve ser um objeto JSON válido.Por exemplo, o exemplo a seguir define a política de entrega para um total de cinco novas tentativas.

http://sns.us-east-1.amazonaws.com/?Action=SetSubscriptionAttributes&SubscriptionArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Topic%3A80289ba6-0fd4-4079-afb4-ce8c8260f0ca&AttributeName=DeliveryPolicy&AttributeValue={"healthyRetryPolicy":{"numRetries":5}}...

Use o formato JSON a seguir para o valor do parâmetro AttributeValue.

{ "healthyRetryPolicy" : { "minDelayTarget" : <int>, "maxDelayTarget" : <int>, "numRetries" : <int>, "numMaxDelayRetries" : <int>, "backoffFunction" : "<linear|arithmetic|geometric|exponential>" }, "throttlePolicy" : { "maxReceivesPerSecond" : <int> }}

Para obter mais informações sobre a ação SetSubscriptionAttribute, consulte SetSubscriptionAttributes noAmazon Simple Notification Service API Reference.

Formato JSON da política de EntregaSetTopicAttributes

Se você envia uma solicitação para a ação SetTopicAttributes e define o parâmetro AttributeName paraum valor DeliveryPolicy, o valor do parâmetro AttributeValue deve ser um objeto JSON válido. Porexemplo, o exemplo a seguir define a política de entrega para um total de cinco novas tentativas.

http://sns.us-east-1.amazonaws.com/?Action=SetTopicAttributes&TopicArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Topic&AttributeName=DeliveryPolicy&AttributeValue={"http":{"defaultHealthyRetryPolicy":{"numRetries":5}}}...

Versão da API 2010-03-31223

Page 231: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorFormato JSON da política de Entrega SetTopicAttributes

Use o formato JSON a seguir para o valor do parâmetro AttributeValue.

{ "http" : { "defaultHealthyRetryPolicy" : { "minDelayTarget": <int>, "maxDelayTarget": <int>, "numRetries": <int>, "numMaxDelayRetries": <int>, "backoffFunction": "<linear|arithmetic|geometric|exponential>" }, "disableSubscriptionOverrides" : <boolean>, "defaultThrottlePolicy" : { "maxReceivesPerSecond" : <int> } }}

Para obter mais informações sobre a ação SetTopicAttribute, acesse SetTopicAttributes no Amazon SimpleNotification Service API Reference.

Versão da API 2010-03-31224

Page 232: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorHabilitação da entrega de mensagens brutascom o Console de gerenciamento da AWS

Apêndice: Grande carga e entrega demensagens brutas

Com Amazon SNS e Amazon SQS, você agora pode enviar mensagens de grande carga com até 256KB (262.144 bytes). Para enviar grandes cargas (mensagens entre 64 KB e 256 KB), você deve usar umAWS SDK que oferece suporte à assinatura do AWS Signature versão 4 (SigV4). Para verificar se SigV4 écompatível com AWS SDK, consulte as notas de release do SDK.

Além de enviar grandes cargas, com Amazon SNS agora você pode habilitar a entrega de mensagensbrutas para mensagens entregues para endpoints do Amazon SQS ou endpoints HTTP/S. Isso eliminaa necessidade de endpoints para processar a formatação JSON, que é criada para os metadados doAmazon SNS quando a entrega de mensagens brutas não é selecionada. Por exemplo, ao habilitar aentrega de mensagens brutas para um endpoint do Amazon SQS, os metadados do Amazon SNS nãosão incluídos, e a mensagem publicada é entregue ao endpoint do Amazon SQS inscrito no estado emque se encontra. Ao habilitar a entrega de mensagens brutas para endpoints HTTP/S, as mensagensconterão um cabeçalho HTTP adicional x-amz-sns-rawdelivery com um valor de true para indicarque a mensagem está sendo publicada bruta em vez de com formatação JSON. Isso permite que essesendpoints entendam o que está sendo entregue e permite uma transição mais fácil para inscrições deJSON até entrega bruta.

Para habilitar a entrega de mensagens brutas usando um dos AWS SDKs, você deve usar a açãoSetSubscriptionAttribute e configurar o atributo RawMessageDelivery com um valor de true. Ovalor padrão é false.

Habilitação da entrega de mensagens brutas com oConsole de gerenciamento da AWS

Você pode habilitar a entrega de mensagens brutas com o Console de gerenciamento da AWS, definindo oatributo de inscrição Entrega de mensagens brutas como verdadeiro.

Para habilitar a entrega de mensagens brutas com o Console de gerenciamento da AWS

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon SNS em https://console.aws.amazon.com/sns/v2/home.

2. Selecione um tópico que está inscrito em um endpoint do Amazon SQS ou um endpoint HTTP/S eclique no ARN do tópico.

A página Detalhes do tópico é exibida.3. Selecione ID de inscrição e clique na caixa suspensa Outras ações de inscrição.4. Clique em Editar atributos de inscrição, selecione Entrega de mensagens brutas e clique em Definir

atributos de inscrição.

Versão da API 2010-03-31225

Page 233: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedorHabilitação da entrega de mensagens brutascom o Console de gerenciamento da AWS

Versão da API 2010-03-31226

Page 234: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedor

Histórico do documentoA tabela a seguir descreve as mudanças importantes na documentação desde o último lançamento doAmazon SNS Developer Guide.

• Versão da API: 2010-03-31• Última atualização de documentação: 8 de junho de 2018

Alteração Descrição Alterado em

Tutorial parapublicação de umaVPC

Siga um tutorial para aprender como configurar uma VPCe publicar mensagens privadas no Amazon SNS. ConsulteTutorial: publicar mensagens do Amazon SNS de maneiraprivada a partir da Amazon VPC (p. 205).

8 de junho de 2018

Métricas doCloudWatch paramensagens filtradas

Agora, o Amazon SNS envia métricas para o AmazonCloudWatch sobre mensagens filtradas por políticas defiltro de inscrição. Para obter mais informações, consulteMétricas do Amazon SNS (p. 198).

30 de maio de 2018

Publicação de umaVPC

Publique nos tópicos do Amazon SNS de forma privadaa partir da Amazon Virtual Private Cloud. ConsultePublicação em tópicos do Amazon SNS a partir daAmazon Virtual Private Cloud (p. 205).

10 de abril de 2018

Remoção depolíticas de filtros

Remova a política de filtro que está atribuída auma assinatura para interromper a filtragem demensagens. Consulte Remoção de políticas de filtros deassinatura (p. 194).

10 de abril de 2018

Novas operaçõespara políticas defiltro de inscrição

Além da correspondência exata com valores de string, aspolíticas de filtro oferecem suporte às seguintes operaçõespara correspondência de atributos de mensagem:correspondência "anything but", correspondênciade prefixo, correspondência numérica exata ecorrespondência de intervalo numérico. Para obter maisinformações, consulte Filtragem de mensagens (p. 185).

12 de março de2018

Políticas de filtros deassinatura

Os assinantes podem receber seletivamente mensagenspublicadas para tópicos do Amazon SNS aplicandopolíticas a assinaturas de tópicos. Para obter maisinformações, consulte Filtragem de mensagens (p. 185).

21 de novembro de2017

Aplicação deatributos demensagens

O Aplicação de atributos de mensagens (p. 182)inclui etapas e exemplos de aplicação de atributos demensagem usando o console do Amazon SNS AWS CLI eo AWS SDK for Java.

21 de novembro de2017

Métrica doCloudWatch paragastos de SMS

O Amazon SNS envia a métricaSMSMonthToDateSpentUSD para o CloudWatch. Asmétricas mostram as cobranças que você acumuloudesde o início do mês atual com o envio de mensagensSMS. Para obter mais informações, consulte Métricas doAmazon SNS (p. 198).

31 de março de2017

Versão da API 2010-03-31227

Page 235: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedor

Alteração Descrição Alterado em

Códigossimplificadosdedicados para SMS

Para enviar mensagens SMS usando um códigosimplificado contínuo, reserve um código simplificadodedicado, o qual é atribuído à sua conta e fica disponívelexclusivamente para você. Para obter mais informações,consulte Reservar um código simplificado dedicado paramensagens SMS (p. 140).

06 de março de2017

Amazon SNS écompatível comSMS em todo omundo

O Amazon SNS é compatível agora com o sistema demensagens SMS para mais de 200 países e regiões. Vocêpode enviar uma mensagem diretamente para um númerode telefone ou enviar uma mensagem para vários númerosde telefone de uma só vez inscrevendo esses números emum tópico e enviando sua mensagem para o tópico. Paraobter mais informações, consulte Envio de mensagensSMS com o Amazon SNS (p. 121).

28 de junho de 2016

Endpoints deplataforma e tokensde dispositivo

Adição de um tópico sobre como criar um endpointde plataforma e gerenciar tokens de dispositivo paranotificações por push para dispositivos móveis doAmazon SNS. Para obter mais informações, consulteCriar um endpoint de plataforma e gerenciar tokens dedispositivo (p. 83).

23 de setembro de2015

Notificaçõesde eventos doaplicativo

Adição de um tópico sobre como acionar notificaçõesdo aplicativo quando ocorrem determinados eventosdo aplicativo. Para obter mais informações, consulteNotificações de eventos do aplicativo (p. 93).

23 de setembro de2015

Novo suporte paranotificações porpush do VoIP e MacOS X

Adição de novos tópicos sobre como enviar mensagensde notificação por push para aplicativos VoIP e Mac OS Xusando Apple Push Notification Service. Para obter maisinformações, consulte Conceitos básicos do Apple PushNotification Service (p. 45).

15 de junho de 2015

Chamada defunções do AWSLambda

Adição de um tópico sobre como chamar funções doLambda usando notificações do Amazon SNS. Para obtermais informações, consulte Chamada de funções deLambda usando notificações do Amazon SNS (p. 175).

9 de abril de 2015

Uso dos atributos detópico do AmazonSNS para statusde entrega demensagens

Adição de um tópico sobre o uso de atributos de tópicodo Amazon SNS para status de entrega de mensagens.Para obter mais informações, consulte Uso dos atributosde tópico do Amazon SNS para status de entrega demensagens (p. 177).

9 de abril de 2015

Suporte pararegistrar o statusde entrega demensagens denotificação por push

Adição de um tópico sobre o uso de atributos do aplicativodo Amazon SNS para o status de entrega de mensagens.Para obter mais informações, consulte Uso dos atributosde aplicativo do Amazon SNS para status de entrega demensagens (p. 90).

5 de fevereiro de2015

Suporte para AWSCloudTrail comAmazon SimpleNotification Service

Adição de um tópico sobre registro de chamadas de APIdo Amazon SNS por meio do CloudTrail. Para obter maisinformações, consulte Registro de chamadas de API doAmazon Simple Notification Service por meio do AWSCloudTrail (p. 201).

9 de outubro de2014

Versão da API 2010-03-31228

Page 236: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedor

Alteração Descrição Alterado em

Etapas de altonível de push paradispositivos móveisdo Amazon SNS

Adição de um tópico sobre as etapas de alto nívelque você deve desempenhar para usar o push paradispositivos móveis do Amazon SNS. Essas informaçõesdevem ajudá-lo a obter uma melhor compreensão dasetapas envolvidas ao usar as APIs para dispositivosmóveis do Amazon SNS. Para obter mais informações,consulte Etapas de alto nível de push para dispositivosmóveis do Amazon SNS (p. 39).

9 de outubro de2014

Suporte paramensagensautenticadascom Serviços deNotificação por Pushda Microsoft paraWindows Phone

Atualização de um tópico sobre como enviar mensagensautenticadas com MPNS. Para obter mais informações,consulte Conceitos básicos do MPNS (p. 72).

19 de agosto de2014

Suporte paraconfigurar umatributo demensagem Timeto Live (TTL) paramensagens denotificação por pushpara dispositivosmóveis

Adição de um tópico sobre como especificar metadadosde expiração para uma mensagem de notificação por pushpara dispositivos móveis. Para obter mais informações,consulte Uso do atributo de mensagem Time to Live(TTL) do Amazon SNS para notificações por push paradispositivos móveis (p. 95).

10 de julho de 2014

Suporte paraBaidu CloudPush, Serviços deNotificação porPush da Microsoftpara WindowsPhone e Serviços deNotificação por Pushdo Windows

Adição de tópicos sobre como usar Baidu, MPNS eWNS, com Amazon SNS para enviar mensagens denotificação por push para dispositivos móveis. Para obtermais informações, consulte Conceitos básicos do BaiduCloud Push (p. 51), Conceitos básicos do MPNS (p. 72) eConceitos básicos do WNS (p. 75).

12 de junho de 2014

Atributos demensagem

Os atributos de mensagem permitem fornecer itens demetadados estruturados sobre uma mensagem. Para obtermais informações, consulte Uso de atributos de mensagemdo Amazon SNS (p. 180).

12 de junho de 2014

Amostras doAmazon SNS emJava

Adição de uma seção sobre o uso do AWS SDK for Javacom Amazon SNS. Os exemplos nesta seção mostramcomo criar um novo cliente Amazon SNS definir o endpointdo Amazon SNS e criar um novo tópico. Além disso, háexemplos de como fazer inscrições e publicações em umtópico e de como excluí-lo. Para obter mais informações,consulte Uso do AWS SDK for Java com o AmazonSNS (p. 10).

23 de abril de 2014

Versão da API 2010-03-31229

Page 237: Notification Service Amazon Simple · Amazon Simple Notification Service Guia do desenvolvedor Service?

Amazon Simple Notification Service Guia do desenvolvedor

Alteração Descrição Alterado em

Notificaçõespor push paradispositivos móveis

Adição de um tópico sobre como criar e enviarcargas personalizadas específicas da plataforma emmensagens para dispositivos móveis. Para obter maisinformações, consulte Enviar cargas personalizadasespecíficas à plataforma em mensagens para dispositivosmóveis (p. 88).

17 de dezembro de2013

Notificaçõespor push paradispositivos móveis

Adição de suporte para enviar mensagens de notificaçãodiretamente para aplicativos em dispositivos móveis. Paraobter mais informações, consulte Notificações por pushpara dispositivos móveis do Amazon SNS (p. 37).

13 de agosto de2013

Versão inicial Este é o primeiro lançamento do Amazon SNS DeveloperGuide.

1  de maio de 2013

Versão da API 2010-03-31230