Going Serverless: cómo ejecutar su primera función AWS Lambda en la nube

Hace una década, los servidores en la nube abstraían los servidores físicos. Y ahora, "Sin servidor" está abstrayendo servidores en la nube.

Técnicamente, los servidores todavía están allí. Simplemente no necesita administrarlos nunca más.

Otra ventaja de ir sin servidor es que ya no necesita mantener un servidor en ejecución todo el tiempo. El "servidor" aparece de repente cuando lo necesita, luego desaparece cuando termina. Ahora puede pensar en términos de funciones en lugar de servidores, y toda su lógica comercial ahora puede vivir dentro de estas funciones.

En el caso de AWS Lambda Functions, esto se llama un disparador. Las funciones Lambda se pueden activar de diferentes maneras: una solicitud HTTP, un nuevo documento cargado a S3, un trabajo programado, una secuencia de datos de AWS Kinesis o una notificación del servicio de notificación simple (SNS) de AWS.

En este tutorial, le mostraré cómo configurar su propia función Lambda y, como beneficio adicional, le mostraré cómo configurar una API REST en la nube de AWS, al mismo tiempo que escribo un código mínimo.

Tenga en cuenta que los pros y los contras de Serverless dependen de su caso de uso específico. Entonces, en este artículo, no voy a decirte si Serverless es adecuado para tu aplicación en particular. Solo voy a mostrarte cómo usarlo.

Primero, necesitará una cuenta de AWS. Si aún no tiene uno, comience abriendo una cuenta gratuita de AWS aquí . AWS tiene un nivel gratuito que es más que suficiente para lo que necesitará para este tutorial.

Escribiremos la función isPalindrome, que verifica si una cadena pasada es un palíndromo o no.

Arriba está una implementación de ejemplo en JavaScript. Aquí está el enlace para la esencia de Github.

Un palíndromo es una palabra, frase o secuencia que dice lo mismo hacia atrás que hacia adelante, en aras de la simplicidad limitaremos la función a palabras solamente.

Como podemos ver en el fragmento anterior, tomamos la cuerda, la partimos, la invertimos y luego nos unimos a ella. si la cuerda y su reverso son iguales, la cuerda es un Palíndromo; de lo contrario, la cuerda no es un Palíndromo.

Creando la función isPalindrome Lambda

En este paso nos dirigiremos a AWS Console para crear la función Lambda:

En AWS Console vaya a Lambda.

Y luego presione "Comenzar ahora".

Para el tiempo de ejecución, seleccione Node.js 6.10 y luego presione "Blank Function".

Omita este paso y presione "Siguiente".

Para el tipo de nombre en isPalindrome, para la descripción escriba una descripción de su nueva función Lambda o déjelo en blanco.

Como se puede ver en el GIST por encima de una función lambda es sólo una función estamos exportando como un módulo, en este caso, el nombre de controlador. La función tiene tres parámetros: evento, contexto y una función de devolución de llamada.

La devolución de llamada se ejecutará cuando la función Lambda esté lista y devolverá una respuesta o un mensaje de error. La respuesta del proyecto en blanco Lambda está codificada como la cadena "Hola de Lambda". Para este tutorial ya que no habrá manejo de errores, solo usará Nulo. Analizaremos de cerca el parámetro del evento en las siguientes diapositivas.

Desplázate hacia abajo. Para Rol elija "Crear nuevo rol de plantilla", y para el nombre de Rol use usePalindromeRole o cualquier nombre que desee.

Para plantillas de política, elija permisos "Simple Microservice".

Para la memoria, 128 megabytes es más que suficiente para nuestra función simple.

En cuanto al tiempo de espera de 3 segundos, esto significa que, si la función no regresa en 3 segundos, AWS la apagará y devolverá un error. Tres segundos también es más que suficiente.

Deje el resto de la configuración avanzada sin cambios.

Presiona "Crear función".

Felicitaciones, ha creado su primera función Lambda. Para probarlo presione "Test".

Como puede ver, su función Lambda devuelve la respuesta codificada de "Hola de Lambda".

Ahora agregue el código de isPalindrome.js a su Función Lambda, pero en lugar de return result use callback(null, result) . A continuación, agregue un valor de cadena de hard- abcd de abcd en la línea 3 y presione "Test".

La función Lambda debería devolver "abcd no es un Palindrome".

Para el valor de la cadena codificada de "racecar", The Lambda Function devuelve "racecar is a Palindrome".

Hasta ahora, la función Lambda que creamos se está comportando como se esperaba.

En los próximos pasos, le mostraré cómo activarlo y pasarle un argumento de cadena utilizando una solicitud HTTP.

Si ha creado API REST desde cero antes de usar una herramienta como Express.js, el fragmento anterior debe tener sentido para usted. Primero crea un servidor y luego define todas sus rutas una a una.

En esta sección, le mostraré cómo hacer lo mismo utilizando AWS API Gateway.

Creando la Pasarela API

Vaya a su AWS Console y presione "API Gateway".

Y luego presione "Comenzar".

En Crear panel de API nuevo, seleccione "Nueva API".

Para el nombre de la API, use "palindromeAPI". Para la descripción, escriba una descripción de su API nueva o simplemente déjela en blanco.

Nuestra API será simple, y solo tendrá un método GET que se utilizará para comunicarse con la función Lambda.

En el menú Acciones, seleccione "Crear método". Aparecerá un pequeño submenú. Continúe y seleccione GET, y haga clic en la marca de verificación a la derecha.

Para el tipo de integración, seleccione la función Lambda.

Luego presiona "OK".

En la pantalla GET – Método de ejecución, presione "Solicitud de integración".

Para el tipo de integración, asegúrese de que la función Lambda esté seleccionada.

Para el paso del cuerpo de solicitud, seleccione "Cuando no hay plantillas definidas" y luego para Tipo de contenido, ingrese "aplicación / json".

En el espacio en blanco, agregue el objeto JSON que se muestra a continuación. Este objeto JSON define el parámetro "cadena" que nos permitirá pasar los valores de cadena a la función Lambda utilizando una solicitud HTTP GET. Esto es similar a usar los req.params de req.en Express.js.

En los próximos pasos, veremos cómo pasar el valor de cadena a la función Lambda y cómo acceder al valor pasado desde dentro de la función.

La API ahora está lista para ser implementada. En el menú Acciones, haga clic en "Implementar API".

Para la Etapa de implementación, seleccione "[Nueva etapa]".

Y para el nombre de la etapa utilice "prod" (que es la abreviatura de "producción").

La API ahora se implementa y la URL de invocación se usará para comunicarse a través de una solicitud HTTP con Lambda. Si recuerda, además de una devolución de llamada, Lambda toma dos parámetros: evento y contexto.

Para enviar un valor de cadena a Lambda, toma el URL de invocación de su función y ?string=someValue y luego se puede acceder al valor pasado desde dentro de la función utilizando event.string .

Modifique el código eliminando el valor de la cadena codificada y reemplazándolo con event.string como se muestra a continuación.

Ahora en el navegador, tome la URL de invocación de su función y agregue ?string=abcd para probar su función a través del navegador.

Como puede ver, Lambda responde que abcd no es un Palindrome. Ahora haz lo mismo con el auto de carreras.

Si lo prefiere, puede utilizar Postman para probar su nueva función de Lambda Lambda. Postman es una gran herramienta para probar los puntos finales API, puede obtener más información al respecto aquí .

Para verificar que funcione, aquí hay un Palindrome:

Y aquí hay un no palindrome:

Felicitaciones: ¡acaba de configurar y ejecutar su propia función Lambda!

¡Gracias por leer!