Come posso modificare l'oggetto dell'email di default di Amazon SNS, "Messaggio di notifica AWS", per una regola EventsBridge?

Ultimo aggiornamento: 14/12/2021

Ho configurato Amazon Simple Notification Service (Amazon SNS) per ricevere notifiche email da una regola Amazon EventsBridge che ha più fonti di eventi. In che modo posso personalizzare l'oggetto dell'email di default di SNS, "messaggio di notifica AWS" e il corpo dell'email in base all'evento che attiva la notifica?

Breve descrizione

Al momento non è possibile personalizzare il messaggio di un'email di Amazon SNS in base a regole EventBridge specifiche utilizzando la console di Amazon SNS.

Utilizza una funzione Lambda, anziché l'argomento Amazon SNS, come destinazione per la regola EventBridge. Quindi, configura la funzione Lambda per pubblicare un messaggio personalizzato nell'argomento Amazon SNS quando viene attivato dalla regola EventBridge.

Ecco come funziona la logica:

  1. Viene attivata la regola EventBridge.
  2. La funzione Lambda richiama con il payload della regola EventBridge.
  3. La funzione chiama l'API di pubblicazione di Amazon SNS.
  4. Amazon SNS invia una notifica email con un oggetto o un messaggio personalizzato.

Risoluzione

Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi di AWS Command Line Interface (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

Crea una funzione AWS Lambda impostata come destinazione per la regola EventBridge

Per ulteriori informazioni, consulta Tutorial: pianificazione delle funzioni AWS Lambda tramite EventBridge.

Importante: assicurati che il ruolo di esecuzione della funzione Lambda disponga dell'autorizzazione per la pubblicazione nell'argomento Amazon SNS. Ad esempio, se il ruolo di esecuzione della funzione ha la policy gestita AWS, AWSLambdaBasicExecutionRole, devi allegare la policy AmazonSNSFullAccess al ruolo di esecuzione.

Dopo che la funzione Lambda è stata impostata come destinazione per la regola EventBridge, alla funzione viene aggiunta automaticamente la seguente policy basata sulle risorse:

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

Configura la funzione Lambda per pubblicare un oggetto dell'email personalizzato o un messaggio personalizzato nell'argomento Amazon SNS

Per ulteriori informazioni, consulta Pubblica (riferimento API).

Importante: i seguenti frammenti di codice sono solo di riferimento. Non utilizzare i frammenti di codice nell'ambiente di produzione prima di testarli.

Esempio di Python che pubblica una chiamata API

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")

Esempio di JavaScript/Node.js che pubblica una chiamata API

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: assicurati di sostituire i valori per SNS_TOPIC_ARN e CUSTOM_SUBJECT con i tuoi input.

In questo modo, puoi utilizzare una funzione Lambda per personalizzare e inoltrare l'oggetto o il messaggio della mail di una regola EventBridge a un argomento di Amazon SNS.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?