Wie kann ich die standardmäßige Amazon SNS-E-Mail-Betreffzeile "AWS Notification Message" für eine EventBridge-Regel ändern?

Letzte Aktualisierung: 14.12.2021

Ich habe meinen Amazon Simple Notification Service (Amazon SNS) so konfiguriert, dass er E-Mail-Benachrichtigungen von einer Amazon EventsBridge-Regel erhält, die mehrere Ereignisquellen hat. Wie passe ich die standardmäßige SNS-E-Mail-Betreffzeile „AWS Notification Message“ und den E-Mail-Nachrichtentext basierend auf dem Ereignis an, das die Benachrichtigung auslöst?

Kurzbeschreibung

Derzeit ist es nicht möglich, die Nachricht einer Amazon-SNS-E-Mail basierend auf bestimmten EventBridge-Regeln mithilfe der Amazon-SNS-Konsole anzupassen.

Verwenden Sie anstelle des Amazon SNS-Themas eine Lambda-Funktion als Ziel für die EventBridge-Regel. Konfigurieren Sie dann die Lambda-Funktion so, dass eine benutzerdefinierte Nachricht für das Amazon SNS-Thema veröffentlicht wird, wenn sie von der EventBridge-Regel ausgelöst wird.

Die Logik funktioniert folgendermaßen:

  1. Die EventBridge-Regel wird ausgelöst.
  2. Die Lambda-Funktion wird mit der Nutzlast der EventBridge-Regel aufgerufen.
  3. Die Funktion ruft die Amazon SNS Publish-API auf.
  4. Amazon SNS liefert eine E-Mail-Benachrichtigung mit einem benutzerdefinierten Betreff oder einer benutzerdefinierten Nachricht.

Auflösung

Hinweis: Wenn Sie beim Ausführen von AWS-Command-Line-Interface (AWS CLI)-Befehlen Fehlermeldungen erhalten, stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden.

Erstellen einer AWS Lambda-Funktion, die als Ziel für die EventBridge-Regel festgelegt ist

Weitere Informationen finden Sie unter Tutorial: Planen von AWS Lambda-Funktionen mit EventBridge.

Wichtig: Stellen Sie sicher, dass die Ausführungsrolle der Lambda-Funktion über die Berechtigung verfügt, im Amazon-SNS-Thema zu veröffentlichen. Wenn die Ausführungsrolle Ihrer Funktion beispielsweise über die verwaltete AWS-RichtlinieAWSLambdaBasicExecutionRole verfügt, müssen Sie die AmazonSNSFullAccess-Richtlinie an die Ausführungsrolle anhängen.

Nachdem die Lambda-Funktion als Ziel für die EventBridge-Regel festgelegt wurde, wird der Funktion automatisch die folgende ressourcenbasierte Richtlinie hinzugefügt:

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

Konfigurieren Sie die Lambda-Funktion, um einen benutzerdefinierten E-Mail-Betreff oder eine benutzerdefinierte Nachricht für das Amazon SNS-Thema zu veröffentlichen

Weitere Informationen finden Sie in Veröffentlichen (API-Referenz).

Wichtig: Die folgenden Code-Snippets dienen nur als Referenz. Verwenden Sie die Code-Snippets nicht in Ihrer Produktionsumgebung, bevor Sie sie testen.

Beispiel Python-API-Aufruf veröffentlichen

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

Beispiel JavaScript/Node.js API-Aufruf veröffentlichen

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);
     });
};

Wichtig: Stellen Sie sicher, dass Sie die Werte für SNS_TOPIC_ARN und CUSTOM_SUBJECT durch Ihre eigenen Eingaben ersetzen.

Auf diese Weise können Sie eine Lambda-Funktion verwenden, um den E-Mail-Betreff oder die Nachricht einer EventBridge-Regel an ein Amazon-SNS-Thema anzupassen und weiterzuleiten.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?