Comment puis-je modifier la ligne d'objet par défaut de l'e-mail Amazon SNS, « Notification de message AWS » pour une règle EventsBridge ?

Date de la dernière mise à jour : 14/12/2021

J'ai configuré mon Amazon Simple Notification Service (Amazon SNS) pour recevoir des notifications par e-mail d'une règle Amazon EventsBridge comportant plusieurs sources d'événements. Comment puis-je personnaliser la ligne d'objet de l' e-mail SNS par défaut, « Notification de message AWS », ainsi que le corps de l'e-mail en fonction de l'événement qui déclenche la notification ?

Brève description

Il n'existe actuellement aucun moyen de personnaliser le message d'un e-mail Amazon SNS basé sur des règles EventBridge spécifiques à l'aide de la console Amazon SNS.

Utilisez une fonction Lambda au lieu de la rubrique Amazon SNS comme cible pour la règle EventBridge. Ensuite, configurez la fonction Lambda pour publier un message personnalisé dans la rubrique Amazon SNS lorsqu'elle est déclenchée par la règle EventBridge.

Voici comment ça marche :

  1. La règle EventBridge est déclenchée.
  2. La fonction Lambda se déclenche avec la charge utile de la règle EventBridge.
  3. La fonction appelle l'API de publication d'Amazon SNS.
  4. Amazon SNS envoie une notification par e-mail avec un sujet ou un message personnalisé.

Résolution

Remarque : si vous recevez des messages d'erreurs lors de l'exécution de commandes AWS Command Line Interface (AWS CLI), vérifiez que vous utilisez la version la plus récente d'AWS CLI.

Créez une fonction AWS Lambda définie comme cible pour la règle EventBridge

Pour plus d'informations, consultez la section Tutoriel . planifier les fonctions AWS Lambda à l'aide d'EventBridge.

Important : assurez-vous que le rôle d'exécution de la fonction Lambda est autorisé à publier dans la rubrique Amazon SNS. Par exemple, si le rôle d'exécution de votre fonction comporte la politique gérée AWS AWSLambdaBasicExecutionRole, vous devez attacher la politique AmazonSNSFullAccess au rôle d'exécution.

Une fois la fonction Lambda définie comme cible pour la règle EventBridge, la politique basée sur les ressources suivante est automatiquement ajoutée à la fonction :

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

Configurez la fonction Lambda pour publier un objet d'e-mail personnalisé ou un message personnalisé dans la rubrique Amazon SNS

Pour plus d'informations, consultez la section Publier (référence API).

Important : les extraits de code suivants sont donnés à titre de référence uniquement. N'utilisez pas les extraits de code dans votre environnement de production avant de les avoir testés.

Exemple d'appel d'API de publication 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")

Exemple d'appel d'API de publication 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);
     });
};

Important : assurez-vous de remplacer les valeurs pour SNS_TOPIC_ARN et CUSTOM_SUBJECT par vos propres entrées.

De cette façon, vous pouvez utiliser une fonction Lambda pour personnaliser et transférer l'objet ou le message d'une règle EventBridge à une rubrique Amazon SNS.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?