¿Cómo puedo cambiar el asunto predeterminado de los correos electrónicos de Amazon SNS, “AWS Notification Message” (mensaje de notificación de AWS), para una regla de EventsBridge?

Última actualización: 2021-12-14

Configuré mi Amazon Simple Notification Service (Amazon SNS) para recibir notificaciones por correo electrónico de una regla de Amazon EventsBridge que tiene varias fuentes de eventos. ¿Cómo personalizo el asunto del correo electrónico de SNS predeterminado, el “AWS Notification Message” (mensaje de notificación de AWS) y el cuerpo del correo electrónico según el evento que active la notificación?

Descripción breve

Actualmente, no hay forma de personalizar el mensaje de un correo electrónico de Amazon SNS en función de reglas específicas de EventBridge mediante la consola de Amazon SNS.

Utilice una función de Lambda, en lugar del tema de Amazon SNS, como destino para la regla de EventBridge. A continuación, configure la función de Lambda para que publique un mensaje personalizado en el tema de Amazon SNS cuando lo active la regla de EventBridge.

La lógica funciona de la siguiente manera:

  1. Se activa la regla de EventBridge.
  2. La función de Lambda se ejecuta con la carga de la regla de EventBridge.
  3. La función se comunica con la API de publicación de Amazon SNS.
  4. Amazon SNS envía una notificación por correo electrónico con un asunto o mensaje personalizado.

Resolución

Nota: Si se producen errores al ejecutar los comandos de AWS Command Line Interface (AWS CLI), asegúrese de estar utilizando la versión más reciente de AWS CLI.

Cree una función de AWS Lambda que se establezca como destino para la regla de EventBridge

Para obtener más información, consulte Tutorial: cómo programar funciones de AWS Lambda con EventBridge.

Importante: Asegúrese de que el rol de ejecución de la función de Lambda tenga permiso para publicar en el tema de Amazon SNS. Por ejemplo, si el rol de ejecución de su función posee la política administrada por AWS, AWSLambdaBasicExecutionRole, deberá adjuntar la política AmazonSNSFullAccess al rol de ejecución.

Una vez que la función de Lambda se establezca como destino para la regla de EventBridge, se agregará automáticamente a la función la siguiente política con base en recursos:

{
  "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"
        }
      }
    }
  ]
}

Configure la función de Lambda para publicar un asunto de correo electrónico o un mensaje personalizado en el tema de Amazon SNS

Para obtener más información, consulte Publicación (referencia de la API).

Importante: Los siguientes fragmentos de código se presentan solo a modo de referencia. No utilice los fragmentos de código en su entorno de producción antes de probarlos.

Ejemplo de llamada a la API para publicación de 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")

Ejemplo de llamada a la API para publicación de 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: Asegúrese de reemplazar los valores de SNS_TOPIC_ARN yCUSTOM_SUBJECT con sus propias entradas.

De este modo, podrá utilizar una función de Lambda para personalizar y enviar un asunto o mensaje del correo electrónico de una regla de EventBridge a un tema de Amazon SNS.


¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?