Gerenciar notificações em tempo real em suas aplicações pode ser um grande desafio – pelo menos sem o serviço de mensagens certo.
O Amazon Simple Notification Service (SNS) está aqui para fornecer uma solução de mensagens totalmente gerenciada para desacoplar e dimensionar microsserviços, sistemas distribuídos e aplicações serverless. O SNS permite enviar mensagens para um grande número de assinantes por meio de vários protocolos de transporte, como HTTP/S, e-mail, SMS e notificações push móveis. O AWS SNS lida com todo o trabalho pesado de entrega de mensagens, incluindo entrega confiável, tentativas e funcionalidade de espera, dando a você a liberdade para se concentrar na construção dos recursos principais de sua aplicação.
O AWS SNS segue um modelo de publicar-inscrever-se que é fácil de escalar e entender. Uma única mensagem publicada pode ser distribuída para vários pontos de extremidade simultaneamente, o que torna o SNS ideal para arquiteturas orientadas a eventos.
Neste tutorial, vou te guiar na configuração e uso do AWS SNS para enviar notificações através de vários canais.
O que é o AWS SNS?
O Amazon Simple Notification Service (SNS) é o serviço de mensagens pub/sub gerenciado pela AWS que permite desacoplar microsserviços, sistemas distribuídos e aplicações serverless.
O SNS funciona com um modelo simples de publicar-assinar, onde os editores enviam mensagens para tópicos e os assinantes recebem essas mensagens. Pense em um tópico SNS como um canal de comunicação – você publica mensagens neste canal e qualquer pessoa inscrita é notificada imediatamente. A beleza desse sistema é que os editores não precisam saber quem está recebendo suas mensagens, e os assinantes não precisam saber quem está enviando para eles.
Você pode estar se perguntando como isso difere de outros serviços de mensagens da AWS, como Simple Queue Service (SQS). Simplificando, o SQS usa um modelo baseado em filas projetado principalmente para processar tarefas de forma assíncrona, enquanto o SNS se concentra em transmitir mensagens para vários destinatários ao mesmo tempo. Isso torna o SNS perfeito para cenários em que você precisa notificar muitos sistemas sobre um evento que acabou de ocorrer. Você pode aprender mais sobre as diferenças no post do blog SQS vs SNS.
O SNS suporta múltiplos protocolos de entrega, o que lhe dá flexibilidade na forma como seus assinantes recebem notificações.
Recursos principais do AWS SNS
O SNS vem repleto de recursos que o tornam o único serviço de notificação que você vai precisar. Vou listar alguns:
- Arquitetura de fan-out:O SNS pode entregar mensagens para milhares de endpoints simultaneamente, o que, por sua vez, permite transmitir atualizações em toda a sua ecossistema de aplicativos com uma única chamada de API.
- Múltiplos protocolos de transporte: Você não está limitado a apenas uma forma de enviar mensagens. O SNS suporta endpoints HTTP/HTTPS, e-mail, SMS, notificações push móveis e até filas SQS como endpoints de assinatura.
- Filtragem de mensagens: Nem todo assinante precisa de todas as mensagens. Com a filtragem de mensagens, seus assinantes podem criar políticas de filtro para receber apenas as mensagens que lhes interessam, o que reduz o ruído e a sobrecarga de processamento.
- Arquivamento de mensagens: Se você precisar manter um registro de todas as notificações enviadas, ficará satisfeito em saber que o SNS integra-se ao Amazon S3 para arquivamento de mensagens e ao Amazon Redshift para análises.
- Acompanhamento do status de entrega: Você pode monitorar o status de entrega de suas notificações para garantir que elas cheguem aos seus destinos. Isso é particularmente útil para SMS e notificações push móveis, onde a entrega não é garantida.
- Criptografia: Seus dados sensíveis permanecem protegidos com o suporte da SNS para criptografia do lado do servidor, que garante que suas mensagens permaneçam confidenciais durante a transmissão.
Mas a melhor parte sobre o SNS tem que ser escalabilidade. O SNS se ajusta automaticamente às necessidades da sua aplicação. Não importa se você está enviando dez ou dez milhões de notificações por dia, o serviço se ajusta conforme necessário sem exigir qualquer intervenção manual.
Em seguida, vou mostrar como configurar o SNS.
Configurando o AWS SNS
Antes de poder enviar sua primeira notificação com o SNS, você precisará seguir alguns passos de configuração para deixar tudo pronto.
Passo 1: Criar uma conta AWS
Se você ainda não tem uma conta AWS, precisará criar uma antes de começar a usar o SNS.
Vá para a página inicial da AWS e clique no botão “Criar uma conta AWS” no canto superior direito. Você precisará fornecer seu endereço de e-mail, criar uma senha e inserir algumas informações básicas da conta. A AWS também pedirá os detalhes do seu cartão de crédito – não se preocupe, a SNS tem uma camada gratuita bem generosa e você não será cobrado a menos que exceda esses limites.
Depois que sua conta estiver configurada, você está pronto para prosseguir. No entanto, eu recomendo fortemente criar um usuário IAM dedicado em vez de usar sua conta raiz. Isso está fora do escopo do artigo de hoje, mas consulte as instruções oficiais para obter diretrizes detalhadas.
Passo 2: Configurando o SNS no console de gerenciamento da AWS
Agora que você tem uma conta na AWS, é hora de acessar o serviço SNS.
Faça login no Console de Gerenciamento da AWS com suas credenciais e encontre o SNS. Você pode fazer isso de três maneiras:
- Digite “SNS” na barra de pesquisa na parte superior do console
- Clique em “Serviços” na barra de navegação superior e encontre o SNS na categoria “Integração de Aplicativos”
- Vá diretamente para oconsole do SNS
Independentemente da maneira, esta é a tela que você deve ver:
Imagem 1 – Página do serviço AWS SNS
Uma vez que você estiver no painel do SNS, você verá um menu no lado esquerdo com opções como “Tópicos,” “Inscrições” e “Móvel.” O painel oferece uma visão geral dos seus recursos do SNS e atividades recentes.
Isso será bastante vazio para uma nova conta — isso é esperado. Agora, vamos criar nosso primeiro tópico do SNS.
Passo 3: Criando um tópico do SNS
Um tópico do SNS é basicamente um canal de comunicação para o qual os publicadores enviam mensagens e os inscritos ouvem.
Pense nisso como uma estação de rádio – a estação transmite em uma frequência específica (o tópico), e qualquer um sintonizado nessa frequência recebe a transmissão. Em termos do SNS, sua aplicação envia mensagens para um tópico e todos os endpoints inscritos nesse tópico recebem essas mensagens.
Aqui está como criar o seu primeiro tópico SNS:
- Na tela que você viu na Imagem 1, insira um nome para o tópico.
- Clique no botão “Próxima etapa”.
- Selecione “Padrão” para o tipo (tópicos FIFO têm casos de uso diferentes que abordaremos mais tarde).
- (Opcional) Insira um nome de exibição. Este será incluído em mensagens enviadas para assinantes de SMS ou e-mail.
- Deixe todas as outras configurações em seus padrões por enquanto.
- Clique em “Criar tópico”.
Se você prefere imagens em vez de texto, assim deve ser a aparência da sua tela:
Imagem 2 – Criação de tópico SNS
Uma vez que você esteja satisfeito com os valores, role para baixo até ver o botão “Criar tópico”:
Imagem 3 – Criação de tópico SNS (2)
E é isso! Seu tópico SNS agora está pronto para uso. Você verá detalhes como o ARN do tópico (Nome de Recurso da Amazon), que identifica exclusivamente seu tópico:
Imagem 4 – Detalhes do tópico criado
Seu novo tópico está pronto para assinaturas, mas ainda não tem nenhuma, o que significa que qualquer mensagem que você publicar não irá a lugar nenhum. Não se preocupe, você resolverá isso na próxima seção quando adicionar assinantes.
Assinantes e Assinaturas SNS
Como eu disse anteriormente, seu tópico SNS é como uma estação de rádio. Atualmente, não tem ouvintes, mas isso mudará quando você adicionar assinantes para receber suas mensagens.
O que é um assinante SNS?
Um assinante é qualquer ponto de extremidade que recebe notificações do seu tópico SNS quando uma mensagem é publicada.
Considere a analogia de um boletim informativo. Sempre que você publica uma nova edição (mensagem), ela é entregue a todos na sua lista de envio. As redes sociais tornam esse processo automático e escalável, e lidam com toda a logística de entrega para você.
A AWS suporta uma ampla variedade de tipos de assinantes, o que lhe dá flexibilidade na forma como suas mensagens são processadas. Vou listar os principais tipos abaixo:
- Endereços de e-mail: Envie notificações de texto simples diretamente para caixas de entrada de e-mail.
- Números de SMS: Envie notificações por mensagem de texto para telefones celulares.
- Filas SQS: Encaminhe mensagens para outros serviços da AWS para processamento adicional.
- Funções Lambda: Acione a execução de código serverless em resposta a notificações.
- Endpoints HTTP/HTTPS: Envie mensagens para aplicações web ou APIs.
- Notificação móvel: Envie notificações diretamente para aplicativos móveis.
Cada tipo de assinante tem suas próprias vantagens e casos de uso. Por exemplo, e-mail e SMS são ótimos para destinatários humanos, enquanto filas SQS e funções Lambda são melhores para comunicação sistema a sistema.
Passo 1: Adicionando um assinante
Agora que você entende o que são os assinantes, vamos adicionar um ao seu tópico. Para este tutorial, vou usar o e-mail, pois é o mais simples de configurar.
Aqui está como adicionar um assinante de e-mail ao seu tópico SNS:
- A partir da página de detalhes do seu tópico (aquela mostrada na Imagem 4), clique no botão “Criar assinatura”.
- No menu suspenso “Protocolo”, selecione “Email”.
- No campo “Endpoint”, insira o endereço de email que deve receber as notificações.
- Deixe todas as outras configurações com os valores padrão.
- Clique em “Criar assinatura”.
Sua tela deve se parecer com isso:
Imagem 5 – Criando uma assinatura de e-mail
Ao clicar em “Criar assinatura”, a AWS adicionará a assinatura ao seu tópico, mas ela estará em estado de “confirmação pendente”:
Imagem 6 – Estado de confirmação pendente
Este é um recurso de segurança importante, pois a AWS quer garantir que o proprietário do endereço de e-mail realmente deseja receber essas notificações.
Passo 2: Confirmando inscrições
Depois de adicionar um assinante, eles devem confirmar que desejam receber notificações do seu tópico SNS.
Para assinaturas de email, a AWS envia automaticamente um email de confirmação para o endereço que você especificou. O email contém um link que o destinatário deve clicar para ativar a assinatura. Até que isso aconteça, nenhuma mensagem publicada no tópico será entregue a este endpoint.
Abaixo está um exemplo típico de email de confirmação:
Imagem 7 – Email de confirmação SNS
O destinatário simplesmente precisa clicar no link “Confirmar assinatura” no email. Ele será levado a uma página que confirma que a assinatura agora está ativa:
Imagem 8 – Mensagem de confirmação de assinatura
O processo é semelhante para assinantes de SMS – A AWS envia uma mensagem de texto com um link de confirmação que o destinatário deve seguir. Os endpoints HTTP/HTTPS precisam responder a uma solicitação de confirmação da AWS, enquanto recursos da AWS como funções Lambda e filas SQS podem ser configurados para confirmação automática.
Você pode verificar o status de suas assinaturas clicando na seção “Assinaturas” na barra lateral esquerda do console SNS. As assinaturas confirmadas mostrarão um status de “Confirmado”, enquanto aquelas aguardando confirmação mostrarão “Confirmação pendente”.
Imagem 9 – Status da assinatura
Uma vez que sua assinatura for confirmada, você estará pronto para começar a enviar mensagens! Qualquer mensagem publicada no tópico será entregue a todos os assinantes confirmados usando o protocolo especificado por eles.
É isso que há para configurar assinaturas do SNS. Na próxima seção, você aprenderá como publicar mensagens em seu tópico e testar se seus assinantes estão recebendo-as corretamente.
Publicando Mensagens em Tópicos SNS
Agora que você configurou seu tópico SNS e adicionou assinantes, é hora de enviar sua primeira notificação.
Passo 1: Publicando uma mensagem
Uma boa maneira de começar é publicando uma mensagem através do Console da AWS.
Para enviar sua primeira mensagem, navegue até a página de detalhes do seu tópico e clique no botão “Publicar mensagem” no canto superior direito (veja Imagem 4). Isso abrirá o formulário de publicação da mensagem onde você pode elaborar sua notificação. Você verá campos para o assunto e o corpo da mensagem. O assunto é opcional, mas útil para notificações por e-mail, pois se torna o assunto do e-mail.
Para uma mensagem de teste simples, você pode inserir algo como:
Imagem 10 – Conteúdo da primeira mensagem
Quando estiver satisfeito com sua mensagem, role para baixo e clique no botão “Publicar mensagem” na parte inferior do formulário:
Imagem 11 – Publicando uma mensagem via console
Ao clicar, o SNS distribui imediatamente sua mensagem para todos os assinantes confirmados. Se você configurou uma assinatura por e-mail, você deve receber a mensagem de teste em sua caixa de entrada em segundos:
Imagem 12 – Mensagem recebida por e-mail
Simples, não é? Vamos ver agora como personalizá-la ainda mais.
Passo 2: Enviando notificações por SMS e e-mail
O SNS permite que você personalize como suas mensagens aparecem para diferentes tipos de assinantes.
Ao publicar uma mensagem, você notará a opção “Estrutura da mensagem”. Por padrão, ela está definida como “Carga útil idêntica para todos os protocolos de entrega”, o que significa que todos os assinantes recebem exatamente a mesma mensagem. No entanto, você também pode selecionar “Carga útil personalizada para cada protocolo de entrega”, o que permite ajustar o formato da mensagem para cada tipo de assinante.
Para notificações por e-mail, você tem duas opções de formato:
- Email-JSON: Envia a carga útil JSON bruta para o endpoint de e-mail.
- Email: Envia um e-mail formatado com o assunto e corpo da mensagem.
Imagem 13 – Personalização da carga útil
Para notificações por SMS, tenha em mente que há um limite de 160 caracteres. A SNS entregará mensagens mais longas, mas elas serão tratadas como várias mensagens. Você também pode definir o tipo de mensagem SMS como “Promocional” ou “Transacional”, o que afeta a otimização da entrega:
Imagem 14 – Opções de SMS
Agora você sabe como enviar e personalizar notificações por e-mail através do Console da AWS. Em seguida, você aprenderá como fazer o mesmo através da CLI e Python.
Passo 3: Usando o AWS CLI ou SDK para publicar mensagens
O console é ótimo para testes manuais, mas no mundo real, você vai querer publicar mensagens programaticamente.
A Interface de Linha de Comando da AWS (CLI) facilita o envio de mensagens SNS a partir do seu terminal ou scripts de automação.
Supondo que você tenha o CLI da AWS instalado e configurado, execute este comando para publicar uma mensagem via CLI:
aws sns publish --topic-arn "sns-arn" --subject "CLI Notification" --message "Hello from the AWS CLI!"
Imagem 15 – Publicação de mensagem através da AWS CLI
Em um instante, você verá uma mensagem semelhante na sua caixa de entrada:
Imagem 16 – Publicação de mensagem através do AWS CLI (2)
Para aplicações mais avançadas, os SDKs da AWS fornecem acesso programático ao SNS em muitas linguagens de programação.
Aqui está um exemplo simples para publicar uma mensagem usando Python com a biblioteca boto3
:
import boto3 # Inicializar o cliente SNS sns_client = boto3.client("sns", region_name="eu-central-1") # ARN do tópico (Amazon Resource Name) topic_arn = "sns-arn" # Publicar uma mensagem simples response = sns_client.publish( TopicArn=topic_arn, Message="Hello from Python!", Subject="Python Notification" ) # Verificar se a mensagem foi enviada com sucesso if "MessageId" in response: print(f"Message published successfully! Message ID: {response['MessageId']}")
Imagem 17 – Publicação de mensagem através do Python SDK
Mais uma vez, a mensagem é entregue instantaneamente na minha caixa de entrada:
Imagem 18 – Publicação de mensagens através do SDK Python (2)
É isso que há para a publicação de mensagens com o SNS! Agora você tem várias maneiras de enviar notificações, desde a interface simples do console até a publicação programática com o AWS CLI ou SDK.
> Novo no AWS Boto em Python? Inscreva-se em nosso curso para se tornar proficiente rapidamente.
Na próxima seção, vamos explorar alguns recursos avançados do SNS que levarão suas notificações para o próximo nível.
Recursos Avançados do SNS
Até agora, você aprendeu o básico do SNS. Nesta seção, você verá alguns recursos avançados que tornam o SNS realmente poderoso.
Filtragem de mensagens do SNS
Enviar a mesma notificação para todos os assinantes muitas vezes resulta em pontos finais recebendo mensagens que não interessam.
A filtragem de mensagens resolve esse problema permitindo que os assinantes filtrem quais mensagens recebem com base nos atributos da mensagem. Pense nisso como configurar filtros de e-mail – você cria regras que determinam quais mensagens passam. Para o SNS, essas regras são chamadas de políticas de filtro.
Para começar, você pode configurar políticas de filtro em suas assinaturas para que elas recebam apenas mensagens relevantes:
Imagem 19 – Políticas de filtro de notificação
Neste exemplo, o assinante receberá notificações apenas para mensagens que tenham um atributo order_value
com um valor numérico de 1500 ou superior.
Agora, para enviar tal notificação, você pode usar o seguinte código Python:
import boto3 # Inicialize o cliente SNS sns_client = boto3.client("sns", region_name="eu-central-1") # ARN do tópico (Amazon Resource Name) topic_arn = "arn:aws:sns:eu-central-1:105036517833:TestTopic" response = sns_client.publish( TopicArn=topic_arn, Message="A new high-value order has been placed", Subject="New Order Notification", MessageAttributes={ "order_value": {"DataType": "Number", "StringValue": "2000"}, "region": {"DataType": "String", "StringValue": "EU"}, "category": {"DataType": "String", "StringValue": "Electronics"}, }, ) print(response)
Isto é o que você verá após executar o script Python:
Imagem 20 – Enviando uma notificação através do Python
Apenas se o valor de order_value
for 1500 ou mais, você receberá a notificação:
Imagem 21 – Conteúdo da notificação
Em resumo, políticas de filtragem permitem que você envie notificações direcionadas sem alterar seu código de publicação. A melhor parte é que a filtragem acontece do lado da AWS, e não em sua aplicação, o que melhora a eficiência e reduz o tráfego desnecessário.
Filas de cartas mortas do SNS (DLQ)
A entrega de mensagens pode falhar às vezes, mesmo com os sistemas mais confiáveis.
Uma Fila de Mensagens Mortas (DLQ) é uma fila especial Amazon SQS para onde a SNS pode enviar mensagens que não puderam ser entregues aos seus assinantes. Isso geralmente acontece quando um assinante está indisponível ou retorna um erro. Em vez de perder essas mensagens falhadas para sempre, a SNS as redireciona para a DLQ, onde você pode analisá-las posteriormente ou tentar a entrega novamente.
Configurar uma DLQ envolve dois passos. Primeiro, crie uma fila SQS para servir como sua DLQ:
Imagem 22 – Criando uma fila SQS
Em seguida, configure sua assinatura SNS para usar esta fila para mensagens não entregues:
Imagem 23 – Adicionando política de redirecionamento para a fila SQS
Esta configuração requer as permissões corretas, pois o SNS precisa ser capaz de enviar mensagens para a fila SQS. No console da AWS, você pode configurar isso através de uma simples caixa de seleção, mas se você estiver usando o CloudFormation ou outras ferramentas de infraestrutura como código, precisará adicionar as permissões IAM apropriadas.
Com uma DLQ em vigor, você pode monitorar falhas de entrega e agir quando necessário. Por exemplo, você pode configurar um alarme que é acionado quando as mensagens começam a aparecer em sua DLQ, alertando-o sobre possíveis problemas com seus assinantes, mas isso está fora do escopo desta seção.
Usando AWS Lambda com SNS
As funções Lambda abrem um mundo de possibilidades para processar mensagens do SNS.
Ao assinar uma função Lambda a um tópico SNS, a função é acionada automaticamente sempre que uma mensagem é publicada. A abordagem serverless do Lambda significa que você não precisa gerenciar nenhuma infraestrutura para o processamento de mensagens, pois ela dimensiona automaticamente com base no volume de mensagens.
Para começar, primeiro crie uma função Lambda:
Imagem 24 – Criando uma função Lambda
Em seguida, preencha com um código semelhante a este:
def lambda_handler(event, context): # As mensagens SNS estão no array 'Records' for record in event["Records"]: # Extrair a mensagem message = record["Sns"]["Message"] subject = record["Sns"]["Subject"] timestamp = record["Sns"]["Timestamp"] # Processar a mensagem print(f"Received message: {message}") print(f"Subject: {subject}") print(f"Timestamp: {timestamp}") # Sua lógica de negócios aqui # Por exemplo, armazenar a mensagem em um banco de dados # ou acionar outro serviço da AWS print("ALL DONE!") # Retornar sucesso return {"statusCode": 200, "body": "Message processed successfully"}
Imagem 25 – Código da função Lambda
Depois que seu código estiver pronto, clique no botão “Adicionar trigger” para conectar a função Lambda ao SNS:
Imagem 26 – Conectando SNS ao Lambda
A função está agora conectada à fila, o que significa que você pode enviar uma notificação de teste:
Imagem 27 – Notificação de teste
As funções Lambda permitem que você monitore logs, o que significa que você pode ver invocações recentes da função – o resultado de enviar uma notificação:
Imagem 28 – Logs da função Lambda
As funções Lambda podem fazer praticamente qualquer coisa com essas mensagens – armazená-las em um banco de dados, acionar outros serviços da AWS, enviar e-mails ou até mesmo chamar APIs externas. Isso torna o SNS e o Lambda uma combinação poderosa para construir arquiteturas orientadas a eventos. Você pode aprender mais sobre as funções Lambda no Guia de Introdução ao AWS Lambda.
A seguir, você aprenderá o básico do monitoramento e registro do SNS.
Monitoramento e Registro da Atividade do SNS
Acompanhar sua atividade no SNS é essencial para manter um sistema de notificações confiável.
Usando o Amazon CloudWatch com SNS
O Amazon CloudWatch fornece monitoramento abrangente para todos os seus serviços AWS, incluindo o SNS. Quando você configura o CloudWatch com o SNS, você ganha visibilidade sobre métricas operacionais importantes, como taxas de entrega de mensagens, falhas e padrões de uso da API.
Para começar a monitorar o SNS com o CloudWatch, navegue até o console do CloudWatch em sua conta AWS. A partir daí, você pode acessar as métricas do SNS pré-configuradas que a AWS coleta automaticamente para você.
As métricas mais valiosas do SNS para monitorar incluem:
- NúmeroDeMensagensPublicadas: Acompanha quantas mensagens são publicadas em seus tópicos.
- NúmeroDeNotificaçõesEntregues: Mostra entregas de mensagens bem-sucedidas para os assinantes.
- NúmeroDeNotificaçõesFalhadas: Destaca tentativas de entrega falhadas, que podem indicar problemas de configuração.
- PublicarTamanho: Mede o tamanho das mensagens publicadas, ajudando você a permanecer dentro dos limites do serviço.
Imagem 29 – Painel padrão do Cloudwatch para SNS
Configurar alarmes do CloudWatch permite que você responda rapidamente a problemas potenciais antes que afetem seus usuários. Por exemplo, você pode querer criar um alarme que seja acionado quando as falhas de entrega de mensagens excederem um certo limite:
- No console do CloudWatch, navegue até a seção “Alarmes”.
- Clique em “Criar alarme” e selecione a métrica SNS que você deseja monitorar.
- Defina seu limite (por exemplo, mais de 5 falhas de entrega em 5 minutos).
- Configure as ações de notificação, como enviar um alerta para uma equipe de operações.
Se você preferir imagens em vez de instruções, comece criando um alarme para uma métrica de interesse, como NúmeroDeNotificaçõesFalhadas
. Configure limites que ativarão o alarme:
Imagem 30 – Criação de alarme
E é isso – o alarme agora está criado e ativo:
Imagem 31 – Criação de alarme (2)
Esses alarmes podem ser a diferença entre abordar proativamente um problema e descobri-lo a partir de usuários insatisfeitos.
Revisão de logs do SNS
O AWS CloudTrail captura toda a atividade da API em sua conta da AWS, incluindo ações realizadas dentro do serviço SNS.
Cada operação realizada em seus tópicos do SNS—seja através do console, CLI ou SDK—gera uma entrada nos logs do CloudTrail. Esses logs fornecem informações valiosas para análise de segurança, rastreamento de alterações de recursos e auditoria de conformidade.
Para acessar os logs do SNS no CloudTrail:
- Abra o console do CloudTrail em sua conta da AWS (provavelmente você terá que criar uma nova trilha).
- Navegue até “Histórico de eventos” para ver a atividade recente do SNS.
- Filtre os eventos selecionando “Origem do evento” e digitando “sns.amazonaws.com”.
Novamente, se as instruções em texto não forem suficientes, consulte as imagens abaixo. Comece criando uma nova trilha:
Imagem 32 – Criando uma nova trilha
Em seguida, em “Histórico de eventos”, filtre os eventos para incluir somente aqueles do SNS:
Imagem 33 – Filtrando logs
Os logs são armazenados automaticamente em um bucket S3, o que significa que essa abordagem oferece armazenamento permanente para seus logs e possibilita capacidades de consulta mais avançadas.
> Como funciona o armazenamento na AWS? Leia nosso guia sobre S3 e EFS.
Para concluir, ao combinar métricas do CloudWatch com logs do CloudTrail, você cria um sistema de monitoramento abrangente que ajuda a garantir que sua infraestrutura SNS opere de forma confiável.
Melhores Práticas para Usar o AWS SNS
Agora você conhece os recursos básicos e avançados do AWS SNS. O que resta discutir são as melhores práticas para criar tópicos e enviar mensagens.
Assegurando tópicos SNS
A segurança deve ser uma prioridade ao configurar a sua infraestrutura SNS. Sem os controles adequados, seus tópicos podem ficar vulneráveis a acessos não autorizados, o que representa um risco de segurança enorme.
O AWS Identity and Access Management (IAM) fornece as ferramentas necessárias para proteger seus tópicos SNS. Comece criando políticas que sigam o princípio do menor privilégio – conceda apenas as permissões específicas necessárias para cada usuário ou serviço. Por exemplo, você pode querer que algumas aplicações apenas publiquem mensagens, enquanto outras precisam apenas se inscrever em tópicos.
Aqui está uma amostra de política IAM que restringe a publicação para um tópico específico:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sns:Publish", "Resource": "sns-arn" } ] }
Você também pode utilizar políticas de tópico para controlar quais contas da AWS podem se inscrever nos seus tópicos. Isso é especialmente importante se você estiver compartilhando dados entre limites organizacionais.
Não se esqueça de auditar regularmente as permissões usando o AWS CloudTrail e remover acessos que não são mais necessários.
Gerenciando o volume de mensagens
Volumes altos de mensagens podem sobrecarregar os assinantes se não forem gerenciados adequadamente. É aqui que combinar o SNS com outros serviços da AWS se torna essencial.
Um padrão popular é a arquitetura “fanout”, onde você publica mensagens em um tópico do SNS que possui várias filas SQS assinadas. Cada fila pode então alimentar diferentes sistemas de processamento em seu próprio ritmo. Isso desacopla seus publicadores de seus consumidores e fornece um buffer durante picos de tráfego.
Para necessidades de processamento em tempo real, considere assinar funções Lambda aos seus tópicos. O Lambda escala automaticamente com o volume de mensagens, eliminando a necessidade de provisionar e gerenciar servidores.
Reduzindo custos
Embora SNS seja econômico, os gastos podem acumular rapidamente à medida que o volume de mensagens aumenta. Algumas escolhas estratégicas podem ajudar a manter seus custos sob controle.
Em primeiro lugar, seja seletivo em relação aos seus protocolos de assinatura. Os endpoints HTTP/HTTPS são geralmente a opção mais econômica. Notificações por e-mail, embora convenientes, devem ser usadas com parcimônia, pois incorrem em custos mais altos por mensagem.
A filtragem de mensagens é outra ferramenta poderosa para economizar custos. Ao implementar políticas de filtro em suas assinaturas, você garante que as mensagens sejam entregues apenas para assinantes interessados. Por exemplo, se você tiver um tópico para todos os alertas do sistema, talvez queira que seus engenheiros de plantão recebam apenas alertas críticos durante seus turnos, e não todas as notificações:
# Assine com uma política de filtro response = sns.subscribe( TopicArn="sns-arn", Protocol="email", Endpoint="[email protected]", Attributes={"FilterPolicy": '{"severity": ["critical"]}'}, )
Finalmente, revise regularmente o uso de suas SNS no AWS Cost Explorer e procure oportunidades para consolidar tópicos ou remover inscrições não utilizadas. Recursos não utilizados ou duplicados não apenas adicionam custos desnecessários, mas também complicam sua arquitetura.
Ao seguir essas melhores práticas, você criará uma implementação de SNS que é segura, escalável e econômica – tudo o que você precisa para ter um serviço de notificação confiável sem despesas inesperadas ou preocupações de segurança.
Resumindo o AWS SNS
Se você precisa de notificações em tempo real em aplicativos distribuídos, não procure além do AWS SNS. É fácil de usar, integra-se bem com outros serviços da AWS e escala infinitamente para atender às suas necessidades.
O modelo de publicação e subscrição no SNS torna simples implementar sistemas de notificação que podem alcançar vários canais simultaneamente. Desde a criação de tópicos e gestão de subscritores até à implementação de funcionalidades avançadas como filtragem de mensagens e filas de mensagens não entregues, agora tem o conhecimento para construir uma infraestrutura de notificação robusta.
Também aprendeu sobre os aspetos críticos de monitorização, segurança e gestão de custos que garantem que a sua implementação do SNS permaneça fiável e eficiente em ambientes de produção.
À medida que as aplicações continuam a adotar arquiteturas orientadas a eventos, serviços como o SNS tornam-se cada vez mais valiosos. Quer esteja a construir um sistema de alerta simples ou microserviços complexos, os padrões neste tutorial fornecem uma base para uma comunicação eficaz entre os componentes do seu sistema.
Para saber mais sobre a AWS, siga estes cursos da DataCamp:
Você pode até usar o DataCamp para se preparar para os exames de certificação da AWS – Praticante de Nuvem AWS (CLF-C02).