Uso de la función Lambda con Amazon DynamoDB
DynamoDB puede activar AWS Lambda cuando los datos se agregan a las tablas, se actualizan o eliminan. En este capítulo, trabajaremos en un ejemplo simple que agregará elementos a la tabla DynamoDB y AWS Lambda que leerá los datos y enviará correo con los datos agregados.
Requisitos
Para utilizar Amazon DB y AWS Lambda, debemos seguir los pasos que se muestran a continuación:
Cree una tabla en DynamoDB con clave principal
Cree un rol que tendrá permiso para trabajar con DynamoDBand AWS Lambda.
Crear función en AWS Lambda
AWS Lambda Trigger para enviar correo
Agregar datos en DynamoDB
Analicemos cada uno de estos pasos en detalle.
Ejemplo
Vamos a trabajar en el siguiente ejemplo que muestra la interacción básica entre DynamoDB y AWS Lambda. Este ejemplo le ayudará a comprender las siguientes operaciones:
Crear una tabla llamada cliente en la tabla Dynamodb y cómo ingresar datos en esa tabla.
Activación de la función AWS Lambda una vez que se ingresan los datos y envío de correo mediante el servicio Amazon SES.
El diagrama de bloques básico que explica el flujo del ejemplo es el que se muestra a continuación:
Crear tabla en DynamoDB con clave principal
Inicie sesión en la consola de AWS. Vaya a Servicios de AWS y seleccione DynamoDB como se muestra a continuación. Seleccione DynamoDB.
DynamoDB muestra las opciones que se muestran a continuación:
Ahora, haga clic en Create tablepara crear la tabla como se muestra. Hemos nombrado la tabla comocustomer con la clave principal para esa tabla como cust_id. Haga clic enCreate para agregar la tabla a dynamodb.
La tabla creada es la que se muestra a continuación:
Podemos agregar elementos a la tabla creada de la siguiente manera:
Hacer clic Items y haga clic en Create item botón como se muestra -
Creación de roles con permisos para trabajar con DynamoDB y AWS Lambda
Para crear un rol, vaya a los servicios de AWS y haga clic en IAM.
Creemos una política que se utilizará solo para la tabla de DynamoDB creada anteriormente:
Ahora, elija un Service. Observe que el servicio que hemos seleccionado esDynamoDB. porActions nos hemos llevado todo Dynamodbacciones, es decir, acceso a la lista, lectura y escritura. porresources, seleccionaremos las acciones del tipo de recurso de tabla. Cuando hace clic en él, puede ver una pantalla de la siguiente manera:
Ahora, seleccione table y Add ARNa él como se muestra. ObtendremosARN detalles de customer table creado como se muestra a continuación -
Entrar arn detalles aquí -
Hacer clic Addpara guardar los cambios. Una vez hechoClick on Review policy. Ingrese el nombre de la política, descripción, etc., como se muestra a continuación:
Haga clic en create policypara salvarlo. Agregue la política al rol que se creará. SeleccioneRole desde el lado izquierdo e ingrese los detalles.
Observe que las políticas agregadas son newpolicyfordynamdb, awslambdafullaccess, cloudwatchfullaccess y amazonsesfullaccess. Agregue el rol y lo usará mientras crea la función AWS Lambda.
Crear función en AWS Lambda
Por lo tanto, hemos creado la función Lambda llamada newlambdafordynamodb como se muestra.
Ahora, agreguemos el disparador DynamodDB al AWS Lambda creado. El tiempo de ejecución que usaremos es Node.js.
Puede encontrar los siguientes detalles en el activador de Dynamodb que se configurarán para AWS Lambda:
Ahora, simplemente haga clic Add para agregar el disparador a AWS Lambda.
Activador de AWS Lambda para enviar correo
AWS Lambda se activará cuando se inserten datos en AWS Lambda. El parámetro de evento tendrá los datos de dynamodb insertados. Esto leerá los datos del evento y enviará un correo electrónico.
Enviando un correo electrónico
Para enviar un correo electrónico, debe seguir los pasos que se detallan a continuación:
Paso 1
Vaya al servicio de AWS y seleccione SES (servicio de correo electrónico simple). Valide el correo electrónico al que necesitamos enviar un correo electrónico como se muestra -
Paso 2
Clic en el botón Verify a New Email Address para agregar la dirección de correo electrónico.
Paso 3
Ingrese una dirección de correo electrónico para verificarla. La dirección de correo electrónico recibirá un correo de activación de Amazon en el que se debe hacer clic. Una vez que se realiza la activación, se verifica la identificación del correo electrónico y se puede usar con los servicios de AWS.
Paso 4
El código AWS Lambda que lee los datos del evento y envía el correo electrónico se proporciona a continuación:
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");
}
});
}
Ahora, guarde la función Lambda y los datos en la tabla DynamoDB.
Agregar datos en DynamoDB
Utilice la siguiente secuencia para agregar datos en DynamoDB.
Paso 1
Ir a la mesa customer creado en Dynamodb.
Paso 2
Hacer clic Create item.
Paso 3
Hacer clic Save y compruebe la identificación de correo electrónico proporcionada en AWS Lambda para ver si AWS Lambda ha enviado el correo.