Utilizzo della funzione Lambda con Amazon DynamoDB

DynamoDB può attivare AWS Lambda quando i dati vengono aggiunti alle tabelle, aggiornati o eliminati. In questo capitolo, lavoreremo su un semplice esempio che aggiungerà elementi alla tabella DynamoDB e AWS Lambda che leggerà i dati e invierà la posta con i dati aggiunti.

Requisiti

Per utilizzare Amazon DB e AWS Lambda, è necessario seguire i passaggi illustrati di seguito:

  • Crea una tabella in DynamoDB con la chiave primaria

  • Crea un ruolo che disponga dell'autorizzazione per lavorare con DynamoDB e AWS Lambda.

  • Crea una funzione in AWS Lambda

  • Trigger AWS Lambda per inviare posta

  • Aggiungi dati in DynamoDB

Parliamo in dettaglio di ciascuno di questi passaggi.

Esempio

Lavoreremo sul seguente esempio che mostra l'interazione di base tra DynamoDB e AWS Lambda. Questo esempio ti aiuterà a comprendere le seguenti operazioni:

  • Creazione di una tabella denominata cliente nella tabella Dynamodb e come inserire i dati in quella tabella.

  • Attivazione della funzione AWS Lambda una volta inseriti i dati e invio di posta tramite il servizio Amazon SES.

Lo schema a blocchi di base che spiega il flusso dell'esempio è come mostrato di seguito:

Crea tabella in DynamoDB con chiave primaria

Accedi alla console AWS. Vai a Servizi AWS e seleziona DynamoDB come mostrato di seguito. Seleziona DynamoDB.

DynamoDB mostra le opzioni come mostrato di seguito:

Ora fai clic su Create tableper creare la tabella come mostrato. Abbiamo chiamato la tabella comecustomer con chiave primaria per quella tabella come cust_id. Clicca suCreate pulsante per aggiungere la tabella a dynamodb.

La tabella creata è come mostrato di seguito:

Possiamo aggiungere elementi alla tabella creata come segue:

Clic Items e fare clic Create item pulsante come mostrato -

Creazione di ruoli con autorizzazioni per lavorare con DynamoDB e AWS Lambda

Per creare un ruolo, vai ai servizi AWS e fai clic su IAM.

Creiamo una policy da utilizzare solo per la tabella DynamoDB creata in precedenza -

Ora scegli un file Service. Osserva che il servizio che abbiamo selezionato èDynamoDB. PerActions abbiamo preso tutto Dynamodbazioni cioè accesso alla lista, lettura e scrittura. Perresources, selezioneremo le azioni del tipo di risorsa della tabella. Quando fai clic su di esso, puoi vedere una schermata come segue:

Ora seleziona table e Add ARNcome mostrato. OtterremoARN dettagli da customer table creato come mostrato di seguito -

accedere arn dettagli qui -

Clic Addpulsante per salvare le modifiche. Una volta fattoClick on Review policy. Immettere il nome della politica, la descrizione ecc. Come mostrato di seguito -

Clicca su create policyper salvarlo. Aggiungi la policy al ruolo da creare. SelezionareRole dal lato sinistro e inserire i dettagli.

Osserva che le politiche aggiunte sono newpolicyfordynamdb, awslambdafullaccess, cloudwatchfullaccess e amazonsesfullaccess. Aggiungi il ruolo e lo utilizzerà durante la creazione della funzione AWS Lambda.

Crea funzione in AWS Lambda

Pertanto, abbiamo creato la funzione Lambda chiamata newlambdafordynamodb come mostrato.

Ora, aggiungiamo il trigger DynamodDB all'AWS Lambda creato. Il runtime che useremo è Node.js.

Puoi trovare i seguenti dettagli nel trigger Dynamodb che deve essere configurato per AWS Lambda:

Ora, fai semplicemente clic Add per aggiungere il trigger ad AWS Lambda.

Trigger AWS Lambda per inviare posta

AWS Lambda verrà attivato quando i dati vengono inseriti in AWS Lambda. Il parametro dell'evento avrà i dati dynamodb inseriti. Questo leggerà i dati dell'evento e invierà un'e-mail.

Invio di un'e-mail

Per inviare e-mail, è necessario seguire i passaggi indicati di seguito:

Passo 1

Vai al servizio AWS e seleziona SES (semplice servizio di posta elettronica). Convalida l'e-mail a cui dobbiamo inviare un'e-mail come mostrato -

Passo 2

Fare clic sul pulsante Verify a New Email Address per aggiungere l'indirizzo e-mail.

Passaggio 3

Inserisci un indirizzo email per verificarlo. L'indirizzo e-mail riceverà e la posta di attivazione da Amazon su cui è necessario fare clic. Al termine dell'attivazione, l'ID e-mail viene verificato e può essere utilizzato con i servizi AWS.

Passaggio 4

Di seguito viene fornito il codice AWS Lambda che legge i dati dall'evento e invia e-mail:

var aws = require('aws-sdk');
var ses = new aws.SES({
   region: 'us-east-1'
});
exports.handler = function(event, context, callback) {
   console.log(event);
   let tabledetails = JSON.parse(JSON.stringify(event.Records[0].dynamodb));
   console.log(tabledetails.NewImage.address.S);
   let customerid = tabledetails.NewImage.cust_id.S;
   let name = tabledetails.NewImage.name.S;
   let address = tabledetails.NewImage.address.S;
	
   var eParams = {
      Destination: {
         ToAddresses: ["[email protected]"]
      },
      Message: {
         Body: {
            Text: {
               Data: "The data added is as follows:\n CustomerId:"+customerid+"\n Name:"+name+"\nAddress:"+address
            }
         },
         Subject: {
            Data: "Data Inserted in Dynamodb table customer"
         }
      },
      Source: "[email protected]"
   };
   console.log('===SENDING EMAIL===');
   var email = ses.sendEmail(eParams, function(err, data) {
      if (err) console.log(err);
      else {
         console.log("===EMAIL SENT===");
         console.log("EMAIL CODE END");
         console.log('EMAIL: ', email);
         context.succeed(event);
         callback(null, "email is send");
      }
   });
}

Ora salva la funzione Lambda ei dati nella tabella DynamoDB.

Aggiungi dati in DynamoDB

Usa la seguente sequenza per aggiungere dati in DynamoDB.

Passo 1

Vai al tavolo customer creato in Dynamodb.

Passo 2

Clic Create item.

Passaggio 3

Clic Save e controlla l'ID e-mail fornito in AWS Lambda per vedere se il messaggio è stato inviato da AWS Lambda.