Je veux recevoir un e-mail lorsque ma pile AWS CloudFormation reçoit une notification ROLLBACK_IN_PROGRESS lors de la création de la pile. Comment configurer ces alertes e-mail ?

Suivez ces étapes pour utiliser Amazon Simple Notification Service (Amazon SNS) et AWS Lambda pour envoyer des alertes par e-mail pour les notifications de pile CloudFormation ROLLBACK_IN_PROGRESS :

  1. Créez une rubrique SNS et un abonnement pour les alertes par e-mail.
  2. Créez une stratégie de gestion AWS Identity and Access Management (IAM) qui autorise Lambda à publier des alertes par e-mail sur la rubrique SNS.
  3. Attachez la stratégie IAM à un rôle IAM pour Lambda.
  4. Créez une fonction Lambda et attribuez le rôle IAM que vous avez créé.
  5. Créez une seconde rubrique SNS et un abonnement pour notifier la fonction Lambda.
  6. Mettez à jour la fonction Lambda avec un script qui publie sur le sujet SNS pour les alertes e-mail lorsqu'il y a une notification « ROLLBACK_IN_PROGRESS ».
  7. Configurez votre pile CloudFormation pour envoyer toutes les notifications au sujet SNS qui notifie la fonction Lambda.

Une fois cette procédure terminée, le processus de notification se déroule comme suit :

  1. Votre pile CloudFormation envoie toutes les notifications vers la rubrique SNS qui notifie la fonction Lambda.
  2. La fonction Lambda analyse les notifications et n'envoie que les notifications « ROLLBACK_IN_PROGRESS » à une seconde rubrique SNS, configurée pour les alertes par e-mail.
  3. Cette seconde rubrique SNS envoie alors un e-mail aux abonnés concernant le message « ROLLBACK_IN_IN_PROGRESS ».

Créez une rubrique SNS et un abonnement pour les alertes par e-mail

1.    Ouvrez la console Amazon SNS.

2.    Dans le volet de navigation, sélectionnez Rubriques. Choisissez Créer une nouvelle rubrique.

3.    Saisissez un nom dans le champ Nom de la rubrique.

4.    Saisissez un nom dans le champ Nom affiché.

5.    Choisissez Créer une rubrique.

6.    Notez l'ARN de votre rubrique. Vous aurez besoin de cet ARN dans une prochaine étape.

7.    Sélectionnez votre rubrique dans la liste des ressources. Ensuite, choisissez Actions, S’abonner à la rubrique.

8.    Pour Protocole, choisissez E-mail.

9.    Entrez votre adresse e-mail dans Point de terminaison.

10.   Choisissez Créer un abonnement.

11.   L'adresse e-mail que vous avez saisie à l'étape #9 recevra un e-mail de confirmation d'abonnement de la part d'Amazon SNS. Dans l’e-mail de confirmation, sélectionnez Confirmer l'abonnement.

Créez une stratégie IAM qui autorise Lambda à publier dans la rubrique SNS pour les alertes par e-mail.

Remarque : Cette stratégie permet également à Lambda d'écrire dans Amazon CloudWatch Logs.

1.    Ouvrez la console IAM.

2.    Dans le volet de navigation, sélectionnez Stratégies, puis Créer une stratégie.

3.    Sélectionnez l'affichage JSON . Ensuite, copiez et collez la stratégie suivante.
Remarque : Vous devez remplacer {ARN de la rubrique SNS pour les alertes e-mail} par l’ARN pour la rubrique SNS que vous avez créée pour les alertes e-mail.

{   "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": [
                "{SNS topic ARN for email alerts}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:*"
        }
    ]
}

4.    Choisissez Examiner une stratégie.

5.    Dans Nom, saisissez le nom de la stratégie.

6.    Choisissez Créer une stratégie.

Attachez la stratégie IAM à un rôle IAM pour Lambda

1.    Ouvrez la console IAM.

2.    Dans le volet de navigation, choisissez Rôles, puis Créer un rôle.

3.    Pour sélectionner le type d'entité de confiance, choisissez le service AWS.

4.    Pour choisir le service qui utilisera ce rôle, sélectionnez Lambda.

5.    Sélectionnez Étape suivante : autorisations.

6.    Dans la barre de recherche, saisissez le nom de la stratégie que vous avez créée. Ensuite, choisissez votre stratégie.

7.    Choisissez Étape suivante : vérification.

8.    Saisissez un nom pour Nom du rôle.

9.    Sélectionnez Créer un rôle.

Créez une fonction Lambda et attribuez le rôle IAM que vous avez créé

1.    Ouvrez la console AWS Lambda.

2.    Sélectionnez Créer une fonction.

3.    Choisissez Créer à partir de zéro.

4.    Dans le champ Nom, attribuez un nom à la fonction Lambda.

5.    Dans le champ Exécution, choisissez Node.js 4.3.

6.    Pour Rôle, sélectionnez Sélectionner un rôle existant.

7.    Pour Rôle existant, sélectionnez le rôle IAM que vous avez créé.

8.    Sélectionnez Créer une fonction.

Créez une seconde rubrique SNS et un abonnement pour notifier la fonction Lambda

1.    Ouvrez la console Amazon SNS.

2.    Dans le volet de navigation, sélectionnez Rubriques. Choisissez Créer une nouvelle rubrique.

3.    Saisissez un nom dans le champ Nom de la rubrique.

4.    Saisissez un nom dans le champ Nom affiché.

5.    Choisissez Créer une rubrique.

6.    Choisissez votre rubrique dans la liste des ressources. Ensuite, choisissez Actions, S’abonner à la rubrique.

7.    Pour Protocol, choisissez AWS Lambda.

8.    Pour Point de terminaison, choisissez la fonction Lambda que vous avez créée.

9.    Choisissez Créer un abonnement.

Mettez à jour la fonction Lambda avec un script qui publie dans la rubrique SNS pour les alertes e-mail lorsqu'il y a une notification « ROLLBACK_IN_PROGRESS ».

1.    Ouvrez la fonction Lambda que vous avez créée.

2.    Dans l’affichage Code de fonction, remplacez la section code par le script suivant.
Remarque : Vous devez remplacer {ARN de la rubrique SNS pour les alertes e-mail} par l’ARN pour la rubrique SNS que vous avez créée pour les alertes e-mail. De plus, vous devez remplacer la valeur pour AWS.config.region par la valeur correcte pour votre cas d'utilisation.

topic_arn = "{SNS topic ARN for email alerts}";
var AWS = require('aws-sdk'); 
AWS.config.region_array = topic_arn.split(':'); // splits the ARN in to and array 
AWS.config.region = AWS.config.region_array[3];  // makes the 4th variable in the array (will always be the region)

// ####################   BEGIN LOGGING   ########################

console.log(topic_arn);   // just for logging to the that the var was parsed correctly
console.log(AWS.config.region_array); // to see if the SPLIT command worked
console.log(AWS.config.region_array[3]); // to see if it got the region correctly
console.log(AWS.config.region); // to confirm that it set the AWS.config.region to the correct region from the ARN

// ####################  END LOGGING (you can remove this logging section)  ########################

exports.handler = function(event, context) {
    const message = event.Records[0].Sns.Message;
    if (message.indexOf("ROLLBACK_IN_PROGRESS") > -1) {
        var fields = message.split("\n");
        subject = fields[11].replace(/['']+/g, '');
        send_SNS_notification(subject, message);   
    }
};

function send_SNS_notification(subject, message) {
    var sns = new AWS.SNS();
    subject = subject + " is in ROLLBACK_IN_PROGRESS";
    sns.publish({ 
        Subject: subject,
        Message: message,
        TopicArn: topic_arn
    }, function(err, data) {
        if (err) {
            console.log(err.stack);
            return;
        } 
        console.log('push sent');
        console.log(data);
    });
}

3.    Dans l’affichage Designer (au-dessus de la vue Code de fonction), sous Ajouter des déclencheurs, sélectionnez SNS.

4.    Sous Configurer les déclencheurs, pour la rubrique SNS, choisissez la rubrique SNS que vous avez créée pour notifier la fonction Lambda.

5.    Sélectionnez Ajouter.

6.    Cliquez sur Enregistrer.

Configurez votre pile CloudFormation pour envoyer toutes les notifications au sujet SNS qui notifie la fonction Lambda

Si vous utilisez la console d'AWS CloudFormation pour créer une pile, suivez ces étapes :

1.    Sous Options, sélectionnez Avancé.

2.    Pour les options de notification, choisissez la rubrique Amazon SNS existante.

3.    Choisissez la rubrique SNS que vous avez créée pour notifier la fonction Lambda.

4.    Continuez avec les étapes pour créer votre pile.

Si vous utilisez l'interface de ligne de commande AWS (AWS CLI) pour créer une pile, utilisez la commande --notification-arns pour envoyer des notifications à la rubrique SNS qui notifie la fonction Lambda. Tapez l'ARN de la rubrique SNS comme valeur.


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 03/07/2017

Date de mise à jour : 17/05/2018