Utilizzo della funzione Lambda con Amazon SNS
Amazon SNS è un servizio utilizzato per la notifica push. In questo capitolo, spiegheremo il funzionamento di AWS Lambda e Amazon SNS con l'aiuto di un esempio in cui verranno eseguite le seguenti azioni:
Crea argomento nel servizio SNS e utilizza AWS Lambda Aggiungi argomenti a CloudWatch
Invia messaggio di testo SNS sul numero di telefono fornito.
Requisiti
Per creare un argomento nel servizio SNS e utilizzare AWS Lambda Aggiungi argomenti a CloudWatch, non è necessario seguire i passaggi indicati di seguito:
- Crea argomento in SNS
- Crea ruolo per l'autorizzazione in IAM
- Crea funzione AWS Lambda
- Pubblica sull'argomento per attivare il trigger
- Controlla i dettagli del messaggio nel servizio CloudWatch.
Per inviare un messaggio di testo SNS sul numero di telefono fornito, dobbiamo fare quanto segue:
- Aggiungi codice in AWS Lambda per inviare un messaggio al tuo telefono.
Esempio
In questo esempio, creeremo un argomento in SNS. Quando i dettagli vengono inseriti nell'argomento da pubblicare, viene attivato AWS Lambda. I dettagli dell'argomento vengono registrati in CloudWatch e un messaggio viene inviato al telefono da AWS Lambda.
Ecco uno schema a blocchi di base che spiega lo stesso:
Crea argomento in SNS
Dovrai seguire i passaggi indicati di seguito per creare un argomento in SNS -
Passo 1
Accedi alla Console AWS e vai al servizio SNS in Amazon come mostrato di seguito:
Passo 2
Clic Simple Notification Servizio e Create topic dentro.
Passaggio 3
Quindi, devi fare clic Create new topic pulsante come mostrato -
Passaggio 4
Inserisci il Topic name e Display name e fare clic su Create topic. Dovresti vedere il nome dell'argomento nel display come segue:
Crea un ruolo per l'autorizzazione in IAM
Per creare un ruolo che funzioni con AWS Lambda e il servizio SNS, è necessario accedere alla console AWS. Quindi, seleziona IAM dai servizi Amazon e fai clic sul ruolo dal lato sinistro come mostrato di seguito.
Tieni presente che abbiamo aggiunto criteri per SNS, Lambda e CloudWatch. Aggiungi il nome del ruolo e fai clic sul pulsante Crea ruolo per completare il processo di creazione del ruolo.
Crea funzione AWS Lambda
In questa sezione, vediamo come creare la funzione AWS Lambda utilizzando nodejs come runtime.
A tale scopo, accedi alla console AWS e scegli AWS Lambda dai servizi AWS. Aggiungi il nome della funzione, i dettagli del ruolo e così via e crea la funzione AWS Lambda come mostrato.
Aggiungi trigger SNS
Per aggiungere un trigger SNS, immettere i dettagli di configurazione SNS come mostrato -
Quindi seleziona SNS topic e Add il trigger per la funzione AWS Lambda come mostrato -
Quindi, aggiungi il codice lambda AWS indicato di seguito:
exports.handler = function(event, context, callback) {
console.log("AWS lambda and SNS trigger ");
console.log(event);
const sns = event.Records[0].Sns.Message;
console.log(sns)
callback(null, sns);
};
Nel codice sopra, event.Records[0].Sns.Messagefornisce i dettagli del messaggio aggiunti. Abbiamo aggiunto i log della console per vederli in CloudWatch. Ora salva la funzione Lambda con la memoria richiesta e l'allocazione del tempo.
Pubblica su argomento per attivare il trigger
Ricorda che abbiamo già creato l'argomento in SNS nel passaggio 1. Ora pubblicheremo l'argomento e vedremo i dettagli in CloudWatch che verrà attivato da AWS Lambda -
Pubblica su Topic
Primo Selezionare il nome dell'argomento che si desidera pubblicare. Clicca suPublish to topic pulsante -
Inserisci il Subject e Message dettagli come mostrato di seguito -
Puoi anche selezionare JSON formato del messaggio da inviare JSONstile. ClicPublish the message pulsante alla fine dello schermo.
Controlla i dettagli del messaggio nel servizio CloudWatch
Accedi alla console AWS e apri il servizio CloudWatch. Fai clic sui log sul lato sinistro e seleziona i log per la funzione AWS Lambda creata. È possibile trovare la seguente schermata per i registri con i messaggi creati come mostrato sopra:
Aggiungi codice in AWS Lambda per inviare un messaggio al tuo telefono
Qui utilizzerà la messaggistica di testo SNS per inviare un messaggio al telefono utilizzando AWS Lambda. Puoi utilizzare il codice seguente per aggiornare il codice AWS Lambda come segue:
const aws = require("aws-sdk");
const sns = new aws.SNS({
region:'us-east-1'
});
exports.handler = function(event, context, callback) {
console.log("AWS lambda and SNS trigger ");
console.log(event);
const snsmessage = event.Records[0].Sns.Message;
console.log(snsmessage);
sns.publish({
Message: snsmessage,
PhoneNumber: '+911212121212'
}, function (err, data) {
if (err) {
console.log(err);
callback(err, null);
} else {
console.log(data);
callback(null, data);
}
});
};
Abbiamo aggiunto SDK AWS e il servizio SNS da utilizzare per inviare messaggi. Il messaggio dell'evento proveniente da SNS viene inviato come messaggio di testo al numero di telefono fornito.
Ad esempio, osservare il codice seguente:
sns.publish({
Message: snsmessage,
PhoneNumber: '+911212121212'
}, function (err, data) {
if (err) {
console.log(err);
callback(err, null);
} else {
console.log(data);
callback(null, data);
}
});
Inserisci ora l'argomento per vedere il messaggio in cloudwatch e il numero di telefono indicato sopra.
Clic Publish messageper pubblicare il messaggio. Viene visualizzato un messaggio sul numero di telefono fornito come segue: