Come posso ricevere un avviso e-mail quando il mio stack AWS CloudFormation entra nello stato ROLLBACK_IN_PROGRESS?
Desidero ricevere un avviso via e-mail quando il mio stack AWS CloudFormation entra nello stato ROLLBACK_IN_PROGRESS durante la creazione dello stack.
Breve descrizione
Dopo aver completato i passaggi nella sezione Risoluzione, puoi aspettarti che la notifica funzioni come segue:
- Lo stack AWS CloudFormation invia tutte le notifiche all'argomento Amazon Simple Notification Service (Amazon SNS) che notifica una funzione AWS Lambda.
- La funzione Lambda analizza le notifiche e invia solo le notifiche "ROLLBACK_IN_PROGRESS" a un secondo argomento Amazon SNS configurato per gli avvisi via e-mail.
- Questo secondo argomento SNS invia un'e-mail agli iscritti in merito al messaggio "ROLLBACK_IN_PROGRESS".
Risoluzione
Crea un argomento SNS e un abbonamento per gli avvisi via e-mail
1. Apri la console Amazon SNS.
- Nel riquadro di navigazione, scegli Topics.
Nota: Per utilizzare un argomento esistente, selezionalo dall'elenco delle risorse, quindi vai al passaggio 7.
-
Scegli Crea argomento.
-
In Nome, inserisci il nome di un argomento.
-
In Nome visualizzato, inserisci un nome visualizzato.
-
Scegli Crea argomento.
-
Annota l'Amazon Resource Name (ARN) del tuo argomento per un uso successivo.
-
Scegli Crea abbonamento.
-
Per Argomento ARN, scegli l'ARN dell'argomento SNS che hai annotato nel passaggio 7.
-
Per Protocollo, scegli Email.
-
Per Endpoint, inserisci il tuo indirizzo email.
-
Scegli Crea abbonamento.
Nota: Riceverai un'email di conferma dell'iscrizione da Amazon SNS dall'indirizzo email che hai inserito nel passaggio 11.
- Dal messaggio e-mail di conferma, scegli Conferma iscrizione.
Vedrai un messaggio di conferma dell'iscrizione nel tuo browser.
Crea una policy di AWS Identity and Access Management (IAM) che consenta a Lambda di pubblicare avvisi via e-mail sull'argomento SNS
Nota: Questa politica consente inoltre a Lambda di scrivere su Amazon CloudWatch Logs.
-
Apri la console IAM.
-
Nel riquadro di navigazione, scegli Politiche.
-
Scegli Crea politica.
-
Scegli la scheda JSON, quindi inserisci il seguente codice nell'editor di codice JSON:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": [ "{awsExampleSNSTopicARN}" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" } ] }
Nota: Sostituisci awsExampleSNSTopicARN con l'ARN per l'argomento SNS che hai creato per gli avvisi e-mail.
-
Scegli Politica di revisione.
-
In Nome, inserisci un nome per la politica.
-
Scegli Crea politica.
Associa la policy IAM a un ruolo IAM per Lambda
-
Apri la console IAM.
-
Nel riquadro di navigazione, scegliRuoli.
-
Scegli Crea ruolo.
-
Nella sezione Seleziona il tipo di entità affidabile, scegli il servizio AWS.
-
Nella sezione Scegli il servizio che utilizzerà questo ruolo, scegli Lambda.
6. Scegli Avanti: Autorizzazioni.
-
Nella barra di ricerca, inserisci il nome della politica che hai creato in precedenza, quindi seleziona quella politica.
-
Scegli Next:Tags, quindi crea un tag IAM opzionale.
9. Scegli Avanti: Revisione.
-
Per Nome ruolo, inserisci un nome di ruolo.
-
Scegli Crea ruolo.
Crea una funzione Lambda e assegna il ruolo IAM che hai creato
-
Apri la console Lambda.
-
Scegli Crea funzione.
-
Scegli Autore da zero.
-
In Nome, inserisci un nome per la funzione Lambda.
-
Per Runtime, scegli Node.js 10.x.
-
Per il ruolo di Esecuzione, scegli Usa un ruolo esistente.
-
Per Ruolo esistente, scegli il ruolo IAM che hai creato in precedenza.
-
Scegli Crea funzione.
Crea un secondo argomento SNS e un secondo abbonamento per notificare la funzione Lambda
1. Apri la console Amazon SNS.
-
Nel riquadro di navigazione, scegli Topics.
-
Scegli Crea argomento.
-
In Nome, inserisci il nome di un argomento.
-
In Nome visualizzato, inserisci un nome visualizzato.
-
Scegli Crea argomento.
-
Annota l'ARN del tuo argomento per un uso successivo.
-
Scegli Crea abbonamento.
-
Per Argomento ARN, scegli l'ARN dell'argomento SNS che hai annotato nel passaggio 7.
-
Per Protocol, scegli AWS Lambda.
-
Per Endpoint, scegli la funzione Lambda che hai creato.
-
Scegli Crea abbonamento.
Aggiorna la funzione Lambda con uno script che pubblica nell'argomento SNS
-
Apri la console Lambda.
-
Nel riquadro di navigazione, scegli Funzioni, quindi seleziona la funzione che hai creato in precedenza.
-
Nella sezione Codice funzione, inserisci il seguente script nel riquadro dell'editor:
topic_arn = "{awsExampleSNSTopicARN}"; var AWS = require('aws-sdk'); AWS.config.region_array = topic_arn.split(':'); // splits the ARN into an 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); }); }
Nota: Sostituisci awsExampleSNSTopicARN con l'ARN per l'argomento SNS che hai creato per gli avvisi e-mail.
-
Nella vista Designer, nella sezione Aggiungi frigger, scegli SNS.
-
Nella sezione Configurazione dei trigger, per l'argomento SNS, scegli l'argomento SNS che hai creato per notificare la funzione Lambda.
-
Scegli Aggiungi.
-
Scegli Salva.
Imposta il tuo stack AWS CloudFormation per inviare tutte le notifiche all'argomento SNS che notifica la funzione Lambda
-
Apri la console AWS CloudFormation e segui i passaggi della procedura guidata di configurazione per creare uno stack.
-
Per le opzioni di notifica, scegli l'argomento Amazon SNS esistente.
-
Scegli l'argomento SNS che hai creato per notificare la funzione Lambda.
-
Completa i passaggi della procedura guidata di configurazione per creare il tuo stack.
Se utilizzi l'interfaccia a riga di comando AWS (AWS CLI) per creare uno stack, utilizza il comando --notification-arns. Questo comando invia notifiche all'argomento SNS che notifica la funzione Lambda. Quindi, imposta il valore dell'argomento SNS su SNS ARN.
Informazioni correlate
Video correlati
Contenuto pertinente
- AWS UFFICIALEAggiornata 7 mesi fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa