0Pricing
Cloud & IT Cert Prep · Aula

Tópicos do SNS e arquitetura de distribuição

Publique uma mensagem em um tópico do SNS e distribua-a simultaneamente para várias filas SQS, funções do Lambda e endpoints HTTP.

Tópicos do SNS e arquitetura de distribuição é uma aula grátis de Cloud & IT Cert Prep no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cloud & IT Cert Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.

O que é o Amazon SNS?

O Amazon Simple Notification Service (SNS) é um serviço de mensagens de publicação e assinatura totalmente gerenciado. Os publicadores enviam mensagens para um tópico do SNS, e o SNS entrega imediatamente essas mensagens a todos os assinantes. Diferentemente do SQS (baseado em busca), o SNS é baseado em envio: ele entrega as mensagens aos assinantes assim que elas são publicadas. Isso torna o SNS ideal para transmitir eventos a vários sistemas downstream simultaneamente.

Tópicos do SNS: Standard e FIFO

Assim como o SQS, o SNS tem dois tipos de tópicos: os tópicos Standard oferecem ordenação de mensagens com melhor esforço, entrega pelo menos uma vez e capacidade de processamento praticamente ilimitada; eles podem entregar mensagens ao SQS, ao Lambda, a endpoints HTTP, por e-mail, SMS e notificações push móveis. Os tópicos FIFO garantem ordenação rigorosa e entrega exatamente uma vez apenas para assinantes do SQS FIFO. Os tópicos FIFO suportam até 3.000 mensagens por segundo com agrupamento e são usados quando a ordem dos eventos precisa ser preservada entre vários assinantes.

aws sns create-topic --name 'OrderEvents'

# Create FIFO topic
aws sns create-topic \
  --name 'OrderEvents.fifo' \
  --attributes '{"FifoTopic": "true", "ContentBasedDeduplication": "true"}'

Tipos de assinantes do SNS

O SNS oferece suporte a vários tipos de assinantes baseados em protocolos:

  • SQS: enfileiramento durável (o mais comum para processamento assíncrono)
  • Lambda: invocação direta (síncrona do ponto de vista do SNS)
  • HTTP/HTTPS: entrega por webhook a endpoints externos
  • E-mail / E-mail-JSON: notificação para pessoas
  • SMS: entrega de mensagens de texto
  • Push móvel: FCM, APNs por meio de aplicações de plataforma
  • Firehose: transmissão para o S3 ou o Redshift por meio do Kinesis Data Firehose
# Subscribe an SQS queue to an SNS topic
aws sns subscribe \
  --topic-arn 'arn:aws:sns:us-east-1:123456789012:OrderEvents' \
  --protocol sqs \
  --notification-endpoint 'arn:aws:sqs:us-east-1:123456789012:InventoryQueue'

O padrão de arquitetura de distribuição

Distribuição é o padrão central do SNS: publique uma mensagem em um tópico, e o SNS a entregará simultaneamente a todos os assinantes. Por exemplo, um novo evento de pedido é distribuído para: uma fila do SQS para atendimento no armazém, outra fila do SQS para atualização do inventário, uma função do Lambda para detecção de fraude e uma assinatura de e-mail para a equipe de operações. Cada assinante processa o evento de forma independente, sem acoplamento entre eles. Isso é muito mais escalável do que um único consumidor encaminhando mensagens para vários sistemas.

Distribuição com SNS + SQS: a prática recomendada

O padrão recomendado combina SNS e SQS: publique no SNS, que distribui as mensagens para várias filas do SQS. Isso oferece:

  • Durabilidade: se um consumidor estiver indisponível, as mensagens ficam enfileiradas no SQS
  • Escalonamento independente: cada consumidor processa as mensagens no próprio ritmo
  • Desacoplamento: novos consumidores apenas assinam o SNS, sem alterar o publicador
  • Resiliência a novas tentativas: o SQS oferece tempo limite de visibilidade e DLQ

Assinantes diretos do Lambda não têm o armazenamento intermediário oferecido pelo SQS, o que torna SNS→SQS→Lambda o padrão de três camadas mais resiliente.

Novas tentativas de entrega de mensagens e DLQ

Quando o SNS não consegue entregar uma mensagem a um assinante (o endpoint HTTP retorna 5xx, o Lambda gera uma exceção ou o SQS está indisponível), ele tenta novamente usando uma estratégia de retardo exponencial. As políticas de novas tentativas variam conforme o protocolo: endpoints HTTP recebem até 4 novas tentativas imediatas, seguidas de retardo exponencial ao longo de 23 dias; Lambda e SQS usam mecanismos próprios para gerenciar novas tentativas. Configure uma DLQ de tópico do SNS para capturar mensagens que esgotarem todas as tentativas de entrega, garantindo que nenhum evento seja perdido silenciosamente.

Publicação de mensagens no SNS

Publique no SNS usando o AWS SDK ou a CLI. Cada mensagem pode incluir um assunto (para e-mail), um corpo da mensagem (de até 256 KB) e atributos da mensagem para roteamento. Para diferentes tipos de assinantes (SQS, e-mail ou dispositivos móveis), você pode usar a estrutura da mensagem para enviar conteúdo diferente a cada protocolo; o JSON com chaves específicas do protocolo permite adaptar a carga útil para cada tipo de assinante.

aws sns publish \
  --topic-arn 'arn:aws:sns:us-east-1:123456789012:OrderEvents' \
  --message '{"orderId": "12345", "status": "PLACED", "amount": 99.99}' \
  --subject 'New Order Placed' \
  --message-attributes '{
    "orderType": {"DataType": "String", "StringValue": "PREMIUM"}
  }'

Políticas de filtragem de assinaturas do SNS

As políticas de filtragem de assinaturas permitem que cada assinante receba apenas as mensagens relevantes para ele, com base nos atributos da mensagem. Sem filtragem, todos os assinantes recebem todas as mensagens publicadas. Com uma política de filtragem, um assinante especifica quais valores de atributos são importantes para ele. Por exemplo, uma fila de pedidos 'PREMIUM' assina com o filtro {"orderType": ["PREMIUM"]}; uma fila 'STANDARD' filtra por ["STANDARD"]. Cada assinante processa apenas o subconjunto relevante, reduzindo o processamento desnecessário.

aws sns set-subscription-attributes \
  --subscription-arn 'arn:aws:sns:...:subscription/...' \
  --attribute-name FilterPolicy \
  --attribute-value '{"orderType": ["PREMIUM"], "region": ["US", "EU"]}'

SNS para notificações push móveis

O SNS oferece suporte a notificações push móveis diretas para dispositivos iOS (APNs) e Android (FCM/GCM). Você registra os tokens dos dispositivos como ARNs de endpoints de plataforma e publica diretamente em um endpoint ou em um tópico com assinantes de aplicações de plataforma. Para notificações diretas em grande escala para dispositivos (milhões de dispositivos), combine o SNS com a distribuição pelo SQS: o SNS encaminha o evento de notificação para o SQS, e um serviço de trabalho gerencia a resolução em massa dos tokens e a entrega em escala.

Criptografia de mensagens e controle de acesso no SNS

Proteja as mensagens do SNS com criptografia no lado do servidor usando o AWS KMS. Isso criptografa as mensagens armazenadas na infraestrutura do SNS. O controle de acesso usa tanto políticas baseadas em recursos (quem pode publicar no tópico ou assinar o tópico) quanto políticas do IAM. Para permitir que um bucket do S3 publique notificações em um tópico do SNS, conceda sns:Publish à entidade principal de serviço do S3 na política baseada em recursos do tópico. Restrinja sempre a publicação a fontes autorizadas para evitar a injeção de eventos não autorizados.

SNS e SQS: serviços complementares

SNS e SQS são complementares, não alternativas. O SNS (envio) serve para transmitir mensagens imediatamente a vários consumidores; use-o quando vários sistemas precisarem reagir a um evento. O SQS (busca) serve para o processamento confiável e durável por um único consumidor, com novas tentativas e DLQ; use-o quando um consumidor precisar processar cada mensagem exatamente uma vez, no próprio ritmo. O padrão de distribuição SNS→SQS oferece os dois recursos: entrega em transmissão pelo SNS e processamento durável, com novas tentativas, pelo SQS. Essa combinação aparece com frequência nos cenários do exame SAA-C03.

Verificação rápida

Teste sua compreensão dos conceitos do AWS Solutions Architect (SAA-C03) apresentados nesta lição.

Resumo da lição

Nesta lição, você aprendeu: os tópicos do SNS oferecem transmissão de publicação e assinatura baseada em envio para assinantes, incluindo SQS, Lambda, HTTP, SMS e e-mail simultaneamente; a arquitetura de distribuição usa um tópico do SNS conectado a várias filas do SQS para obter processamento de eventos por vários consumidores, com durabilidade e escalonamento independente; e as políticas de filtragem de assinaturas reduzem o processamento desnecessário encaminhando apenas os eventos relevantes a cada assinante com base nos atributos da mensagem. A seguir, exploraremos em profundidade a filtragem de mensagens do SQS e a integração entre SNS e SQS.

Perguntas Frequentes

A aula “Tópicos do SNS e arquitetura de distribuição” é grátis?

Sim — o texto completo de “Tópicos do SNS e arquitetura de distribuição” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cloud & IT Cert Prep, atualize para CoddyKit PRO. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.

O que vou aprender em “Tópicos do SNS e arquitetura de distribuição”?

Publique uma mensagem em um tópico do SNS e distribua-a simultaneamente para várias filas SQS, funções do Lambda e endpoints HTTP. Você pratica Cloud & IT Cert Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Cloud & IT Cert Prep?

Nenhuma experiência prévia é necessária. Cloud & IT Cert Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Tópicos do SNS e arquitetura de distribuição”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Cloud & IT Cert Prep?

Sim. Cada aula de Cloud & IT Cert Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Filas SQS Standard versus FIFO
  2. Tempo limite de visibilidade, DLQ e sondagem longa
  3. Tópicos do SNS e arquitetura de distribuição
  4. Filtragem de mensagens do SQS e integração SNS + SQS
← Voltar para Cloud & IT Cert Prep