Je souhaite modifier la ligne d'objet standard de l'e-mail Amazon Simple Notification Service (Amazon SNS) « Message de notification AWS » pour une notification Amazon EventBridge.
Brève description
Amazon SNS reçoit des notifications d'une règle EventBridge créée avec les services AWS comme source d'événements pour la livraison par e-mail. Notez que la ligne d'objet « Message de notification AWS » et le corps de l'e-mail sont fixes. Vous ne pouvez pas les modifier directement si un service AWS déclenche la rubrique Amazon SNS associée à l'abonnement par e-mail.
Flux de travail
- Un événement déclenche une règle EventBridge.
- La charge utile de la règle EventBridge invoque la fonction Lambda.
- La fonction Lambda appelle l’API Amazon SNS Publish.
- Amazon SNS envoie un message ou une notification par e-mail avec un objet et un corps personnalisés.
Résolution
Incluez AWS Lambda dans l'architecture pour personnaliser la ligne d'objet et le corps du message par défaut selon les besoins. Vous pouvez utiliser AWS Lambda au lieu de la rubrique Amazon SNS comme cible pour la règle EventBridge. Utilisez ensuite la fonction Lambda pour publier des messages avec un objet et un corps d'e-mail personnalisés dans le sujet Amazon SNS avec les abonnés.
Suivez ces étapes pour personnaliser la notification.
Créez un sujet SNS et d'un abonnement par e-mail
- Créez une rubrique SNS.
- Créez un abonnement par e-mail.
**Création de la fonction Lambda **
-
Ouvrez la Page Fonctions dans la console Lambda.
-
Sélectionnez Créer une fonction.
-
Sélectionnez Créer à partir de zéro.
-
Indiquez le Nom de la fonction, puis sélectionnez l’environnement d’exécution en tant que Python 3.10.
-
Créez un Rôle d’exécution. Ce rôle doit disposer des autorisations nécessaires pour publier la rubrique SNS spécifiée. Ici, votre fonction Lambda a été créée avec la politique gérée par AWS pour Lambda.
-
Associez AWSLambdaBasicExecutionRole et la politique AmazonSNSFullAccess au rôle d’exécution de la fonction. Pour associer la politique d’exécution d’une fonction Lambda, consultez la section Rôle d’exécution Lambda.
-
Sélectionnez Créer une fonction. Dans la fonction, dans Éditeur de code, collez le code suivant :
Important : Cet extrait de code est fourni à titre de référence uniquement. N'utilisez pas d'exemples d'extraits de code dans votre environnement de production avant de le tester.
Exemple : Exemple de code Python
import boto3
import json
sns_arn = "sns_topic_arn"
def lambda_handler(event, context):
client = boto3.client("sns")
resp = client.publish(TargetArn=sns_arn, Message=json.dumps(event), Subject="This is the customized subject line")
Remarque : Remplacez sns_topic_arn par l'ARN du sujet figurant dans Créer un sujet SNS et notification par e-mail. Remplacez « Ceci est la ligne d'objet personnalisée » par votre propre ligne d'objet, entre guillemets.
-
Choisissez Déployer.
Création d'une règle EventBridge
Créez une règle EventBridge à l'aide de la console Amazon EventBridge.
Remarque :
- Pour l'étape 11 de la documentation AWS, Sélectionnez une cible, choisissez la fonction Lambda que vous avez créée sous Créer une fonction lambda.
- Fournissez le message de charge utile que vous souhaitez pour votre fonction Lambda.
Lorsque la règle EventBridge est invoquée, la fonction Lambda envoie un appel d'API Publish à Amazon SNS. Il transmet le message de la règle d'événement tout en modifiant le sujet qu'il utilise pour délivrer le message. L'abonné reçoit ensuite l'e-mail avec la ligne d'objet personnalisée dans sa boîte aux lettres.
Informations connexes
Pour quelles raisons ne reçois-je pas les e-mails de notification de ma rubrique Amazon SNS ?
Pourquoi ai-je reçu un e-mail d’AWS indiquant que mon abonnement Amazon SNS avait été désactivé manuellement ?
Comment puis-je empêcher les destinataires de ma liste de diffusion de désabonner tous les membres de la liste d’e-mails thématiques Amazon SNS ?
Pourquoi n’ai-je pas reçu de notification SNS concernant mon déclencheur d’alerte Amazon CloudWatch ?
Comment puis-je envoyer un e-mail à l’aide de Lambda et d’Amazon SES ?