Uso de la función Lambda con Amazon SNS

Amazon SNS es un servicio que se utiliza para notificaciones push. En este capítulo, explicaremos el funcionamiento de AWS Lambda y Amazon SNS con la ayuda de un ejemplo donde se realizarán las siguientes acciones:

  • Crear tema en el servicio SNS y usar AWS Lambda Agregar temas a CloudWatch

  • Envíe un mensaje de texto SNS al número de teléfono proporcionado.

Requisitos

Para crear un tema en el servicio SNS y utilizar AWS Lambda Agregar temas a CloudWatch, no es necesario que siga los pasos que se indican a continuación:

  • Crear tema en SNS
  • Crear función para obtener permiso en IAM
  • Crear función AWS Lambda
  • Publicar en el tema para activar el disparador
  • Verifique los detalles del mensaje en el servicio CloudWatch.

Para enviar un mensaje de texto SNS en el número de teléfono proporcionado, debemos hacer lo siguiente:

  • Agregue código en AWS Lambda para enviar un mensaje a su teléfono.

Ejemplo

En este ejemplo, crearemos un tema en SNS. Cuando se ingresan detalles en el tema para publicar, se activa AWS Lambda. Los detalles del tema se registran en CloudWatch y AWS Lambda envía un mensaje por teléfono.

Aquí hay un diagrama de bloques básico que explica lo mismo:

Crear tema en SNS

Tendrá que seguir los pasos que se indican a continuación para crear un tema en SNS:

Paso 1

Inicie sesión en la consola de AWS y vaya al servicio SNS en Amazon como se muestra a continuación:

Paso 2

Hacer clic Simple Notification Servicio y Create topic en eso.

Paso 3

Entonces, tienes que hacer clic Create new topic botón como se muestra -

Paso 4

Introducir el Topic name y Display name y haga clic en Create topic. Debería ver el nombre del tema en la pantalla de la siguiente manera:

Crear rol para permisos en IAM

Para crear un rol que funcione con AWS Lambda y el servicio SNS, debemos iniciar sesión en la consola de AWS. Luego, seleccione IAM de los servicios de Amazon y haga clic en rol en el lado izquierdo como se muestra a continuación.

Observe que hemos agregado políticas para SNS, Lambda y CloudWatch. Agregue el nombre del rol y haga clic en el botón Crear rol para completar el proceso de creación del rol.

Crear función AWS Lambda

En esta sección, comprendamos cómo crear la función AWS Lambda utilizando nodejs como tiempo de ejecución.

Para ello, inicie sesión en la consola de AWS y elija AWS Lambda en los servicios de AWS. Agregue el nombre de la función, los detalles del rol, etc. y cree la función AWS Lambda como se muestra.

Agregar activador de SNS

Para agregar un activador de SNS, ingrese los detalles de configuración de SNS como se muestra:

Luego, seleccione SNS topic y Add el disparador de la función AWS Lambda como se muestra -

Luego, agregue el código lambda de AWS que se indica a continuación:

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);
};

En el código anterior, event.Records[0].Sns.Messageda los detalles del mensaje agregado. Hemos agregado registros de la consola para verlos en CloudWatch. Ahora, guarde la función Lambda con la memoria requerida y la asignación de tiempo.

Publicar en tema para activar el activador

Recuerde que ya hemos creado el tema en SNS en el Paso 1. Ahora publicaremos en el tema y veremos los detalles en CloudWatch que serán activados por AWS Lambda -

Publicar en tema

Primero, seleccione el nombre del tema que desea publicar. Haga clic enPublish to topic botón -

Introducir el Subject y Message detalles como se muestra a continuación -

También puede seleccionar JSON formato de mensaje para enviar JSONestilo. Hacer clicPublish the message botón al final de la pantalla.

Verifique los detalles del mensaje en el servicio CloudWatch

Inicie sesión en la consola AWS y abra el servicio CloudWatch. Haga clic en los registros del lado izquierdo y seleccione los registros de la función AWS Lambda creada. Puede encontrar la siguiente pantalla para los registros con mensajes creados como se muestra arriba:

Agregue código en AWS Lambda para enviar un mensaje a su teléfono

Aquí usará la mensajería de texto SNS para enviar mensajes en el teléfono usando AWS Lambda. Puede utilizar el siguiente código para actualizar el código de AWS Lambda de la siguiente manera:

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);
      }	
   });
};

Hemos agregado AWS SDK y el servicio SNS para usar para enviar mensajes. El mensaje del evento proveniente de SNS se envía como mensaje de texto al número de teléfono proporcionado.

Observe el siguiente código, por ejemplo:

sns.publish({
   Message: snsmessage,
   PhoneNumber: '+911212121212'
}, function (err, data) {
   if (err) {
      console.log(err);
      callback(err, null);
   } else {
      console.log(data);
      callback(null, data);
   }	
});

Ingrese el tema ahora para ver el mensaje en Cloudwatch y el número de teléfono proporcionado anteriormente.

Hacer clic Publish messagepara publicar el mensaje. Verá un mensaje en el número de teléfono que se indica a continuación: