Quero modificar a linha de assunto padrão "Mensagem de notificação da AWS" do e-mail do Amazon Simple Notification Service (Amazon SNS) para uma notificação do Amazon EventBridge.
Breve descrição
O Amazon SNS recebe notificações de uma regra do EventBridge criada com os serviços da AWS como fonte de eventos para entrega por e-mail. Observe que a linha de assunto "Mensagem de notificação da AWS" e o corpo do e-mail são fixos. Você não poderá alterá-los diretamente se algum serviço da AWS acionar o tópico do Amazon SNS que tem a assinatura de e-mail.
Fluxo de trabalho
- Um evento aciona uma regra do EventBridge.
- A carga útil da regra do EventBridge invoca a função do Lambda.
- A função do Lambda chama a API Publish do Amazon SNS.
- O Amazon SNS entrega uma mensagem ou notificação por e-mail com o assunto e o corpo personalizados.
Solução
Inclua o AWS Lambda na arquitetura para personalizar a linha de assunto e o corpo da mensagem padrão do e-mail, conforme necessário. Você pode usar o AWS Lambda em vez do tópico do Amazon SNS como destino da regra do EventBridge. Em seguida, use a função do Lambda para publicar mensagens com assunto e corpo de e-mail personalizados para o tópico do Amazon SNS com os assinantes.
Siga estas etapas para personalizar a notificação.
Criar um tópico do SNS e uma assinatura de e-mail
- Crie um tópico do SNS.
- Crie uma assinatura de e-mail.
Criar a função do Lambda
-
Abra a página Funções do console do Lambda.
-
Escolha Criar função.
-
Selecione Criar do zero.
-
Forneça o Nome da função e selecione o runtime como Python 3.10.
-
Crie um Perfil de execução. Esse perfil deve ter as permissões necessárias para publicar o tópico do SNS especificado. Aqui, sua função do Lambda foi criada com a política gerenciada pela AWS para o Lambda.
-
Anexe as políticas AWSLambdaBasicExecutionRole e AmazonSNSFullAccess ao perfil de execução da função. Para anexar a política de execução do Lambda, consulte Perfil de execução do Lambda.
-
Escolha Criar função. No Editor de código da função, cole este código:
Importante: este trecho de código é apenas para referência. Não use trechos de código de exemplo em seu ambiente de produção antes de testá-lo.
Exemplo: Código de exemplo em Python
import boto3
import json
sns_arn = "sns_topic_arn"
def lambda_handler(event, context):
client = boto3.client("sns")
resp = client.publish(TargetArn=sns_arn, Message=json.dumps(event), Subject="This is the customized subject line")
Observação: substitua sns_topic_arn pelo ARN do tópico em Criar um tópico do SNS e notificação por e-mail. Substitua "Esta é a linha de assunto personalizada" pela sua própria linha de assunto, entre aspas.
-
Escolha Implantar.
Criar uma regra do EventBridge
Crie uma regra do EventBridge usando o console do Amazon EventBridge.
Observação:
- para a etapa 11 na documentação da AWS, Selecionar um destino, escolha a função do Lambda que você criou em Criar uma função do Lambda.
- Forneça a mensagem de carga útil desejada para sua função do Lambda.
Quando a regra do EventBridge é invocada, a função do Lambda faz uma chamada de API Publish para o Amazon SNS. Ele encaminha a mensagem da regra do evento enquanto muda o assunto usado para entregar essa mensagem. O assinante então recebe o e-mail com a linha de assunto personalizada em sua caixa de correio.
Informações relacionadas
Por que não consigo receber notificações por e-mail do meu tópico do Amazon SNS?
Por que recebi um e-mail da AWS informando que minha assinatura do Amazon SNS foi desativada manualmente?
Como faço para evitar que os destinatários da lista de correspondência cancelem a assinatura de todos na lista dos meus e-mails de tópicos do Amazon SNS?
Por que não recebi uma notificação do SNS me avisando que o alarme do CloudWatch foi acionado?
Como uso o Lambda e o Amazon SES para enviar e-mails?