Como posso alterar a linha de assunto do e-mail padrão do Amazon SNS, "AWS Notification Message" (Mensagem de notificação da AWS), para uma regra do EventBridge?
Última atualização: 14/12/2021
Eu configurei meu Amazon Simple Notification Service (Amazon SNS) para receber notificações por e-mail de uma regra do Amazon EventsBridge que tem várias origens de eventos. Como personalizo a linha de assunto padrão do e-mail do SNS, “Mensagem de notificação da AWS”, e o corpo do e-mail com base no evento que aciona a notificação?
Breve descrição
No momento, não há como personalizar a mensagem de um e-mail do Amazon SNS com base em regras específicas do EventBridge usando o console do Amazon SNS.
Use uma função do Lambda, em vez do tópico do Amazon SNS, como destino para a regra EventBridge. Em seguida, configure a função do Lambda para publicar uma mensagem personalizada no tópico do Amazon SNS quando acionada pela regra EventBridge.
Veja como a lógica funciona:
- A regra EventBridge é acionada.
- A função Lambda é invocada com a carga útil da regra EventBridge.
- A função chama a API de publicação do Amazon SNS.
- O Amazon SNS entrega uma notificação por e-mail com um assunto ou mensagem personalizada.
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI.
Crie uma função do AWS Lambda definida como um destino para a regra EventBridge
Para obter mais informações, consulte Tutorial: agendar funções do AWS Lambda usando o EventBridge.
Importante: verifique se a função de execução da função do Lambda tem permissão para publicar no tópico do Amazon SNS. Por exemplo, se a função de execução da sua função tiver a política gerenciada da AWS, AWSLambdaBasicExecutionRole, você deverá anexar a política AmazonSNSFullAccess à função de execução.
Depois que a função do Lambda é definida como um destino para a regra EventBridge, a seguinte política baseada em recursos é adicionada automaticamente à função:
{
"Version": "2012-10-17",
"Id": "default",
"Statement": [
{
"Sid": "AWSEvents_CWRule_CustomEmailSubject_Id196649187337",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "Lambda-function-ARN",
"Condition": {
"ArnLike": {
"AWS:SourceArn": "Eventbridge-rule-ARN"
}
}
}
]
}
Configurar a função do Lambda para publicar um assunto de e-mail personalizado ou uma mensagem personalizada no tópico do Amazon SNS
Para obter mais informações, consulte a Publicação (referência de API).
Importante: Os trechos de código a seguir são apenas para referência. Não use os trechos de código em seu ambiente de produção antes de testá-los.
Exemplo de chamada de API de publicação Python
import boto3
import json
sns_arn = "SNS_TOPC_ARN"
def lambda_handler(event, context):
client = boto3.client("sns")
resp = client.publish(TargetArn=sns_arn, Message=json.dumps(event), Subject="CUSTOM_SUBJECT")
Exemplo de chamada de API de publicação JavaScript/Node.js
const AWS = require('aws-sdk');
exports.handler = (event, context, callback) => {
let sns = new AWS.SNS();
sns.publish({
TopicArn: 'SNS_TOPIC_ARN',
Message: JSON.stringify(event),
Subject: 'CUSTOM_SUBJECT'
}, function(error, data){
if(error) console.log(error, error.stack);
callback(error, data);
});
};
Importante: certifique-se de substituir os valores de SNS_TOPIC_ARN e CUSTOM_SUBJECT por suas próprias entradas.
Dessa forma, você pode usar uma função do Lambda para personalizar e encaminhar o assunto ou a mensagem de e-mail de uma regra do EventBridge para um tópico do Amazon SNS.
Informações relacionadas
Este artigo ajudou?
Precisa de ajuda com faturamento ou suporte técnico?