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:
- Die EventBridge-Regel wird ausgelöst.
- Die Lambda-Funktion wird mit der Nutzlast der EventBridge-Regel aufgerufen.
- Die Funktion ruft die Amazon SNS Publish-API auf.
- 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.
Relevante Informationen
War dieser Artikel hilfreich?
Benötigen Sie Hilfe zur Fakturierung oder technischen Support?