API Rest con AWS API-Gateway y AWS Lambda

En la actualidad, las arquitecturas más usadas en el desarrollo web son las que tienen al front separado del back y como intermediario un API. Este último funciona como una puerta de entrada a los servicios que brinda el back. Es decir, cada paquete de información, que necesita mostrar el front, lo tiene que pedir al API correspondiente que a su vez está conectado al back para buscar dicha información.

Para crear un API se requiere de un servidor donde este será almacenado, administrado y monitoreado. Generalmente se construye dentro del backend donde debemos construir cada endpoint con código y si queremos monitorearlo debemos construir a parte métodos especiales para este fin. Sin embargo, existen herramientas que nos brindan eso y mucho más, como el servicio API-Gateway de AWS, que nos permite hacer todo esto solo mediante configuración. En este tutorial aprenderemos a configurar AWS Api-Gateway y conectarlo a un AWS Lambda para crear un API muy simple pero que entregue información útil.

Índice

  1. Qué es API Gateway
  2. Creando nuestro primer API
  3. Creando una función Lambda
  4. Conectando API Gateway con Lambda
  5. Tu turno

1. Qué es API Gateway

Amazon API Gateway es un servicio de AWS que facilita a los desarrolladores la creación, la publicación, el mantenimiento, el monitoreo y la protección de APIs a cualquier escala.

API Gateway nos permite crear APIs RESTful y APIs WebSocket. Un API REST es un tipo de API que envía un estado hacia la computadora que lo haya solicitado al otro extremo. Esta información se envía utilizando el protocolo HTTP en formato JSON generalmente. Toda esta comunicación se hace mediante peticiones o requests.

Por otra parte Un API WebSocket admite una comunicación bidireccional entre el cliente y el backend. Para esto el backend puede enviar mensajes de devolución de llamada a los clientes conectados.

Si quieres tener una arquitectura de microservicios para tus proyectos es necesario que tengas una forma eficiente de crear y administrar APIs y eso es lo que nos ofrece AWS API Gateway. Una arquitectura de microservicios hace que la aplicación sea escalable y de rápido desarrollo.

Como puedes ver API Gateway funciona como la puerta de entrada de otros servicios de AWS como Lambda. Con API Gateway puedes hacer un sistema de autenticación de usuario, que mediante Lambda tome los usuarios y los almacena en DynamoDB para luego enviar el response de confirmación al usuario.

2. Creando nuestro primer API

Comenzamos ingresando a la consola de API Gateway donde para crear nuestro primer API le damos click en Create API.

En este tutorial crearemos un HTTP API, para el cual en la siguiente vista le damos click en Build dentro del cuadro de HTTP API. Este tipo de API nos permitirá crear un API REST en el que haremos nuestra primera petición de datos. La diferencia que hay entre este y la opción de API REST es que este último nos permite un mayor control sobre las peticiones al API. Luego lo veremos en un tutorial completo.

En la siguiente vista nos pedirá un nombre para nuestra API y desde ya podemos agregar una integración, es decir podemos conectar un Lambda que será el que procese los datos que enviamos al API y cargue la respuesta a retornar.

Por ahora obviaremos todo, ya que más adelante recién crearemos nuestra función Lambda, así que le damos click en Review and Create y en la siguiente vista le damos a Create.

Una vez creado nuestro API tendremos esta vista que es la consola de configuración del API que acabamos de crear. Si queremos ingresar al API o hacer un request ya tenemos la dirección https, que en el gráfico superior está marcado en un cuadro rojo. Entonces, ya podríamos probar nuestro API usando Postman. Sin embargo, solo obtendremos un mensaje de {"message":"Not Found"} 😅.

Esto sucede porque no tenemos una integración conectada. A continuación, pasaremos a crear una función Lambda que nos devolverá información más útil.

3. Creando una función Lambda

Comenzaremos ingresando a la consola de AWS Lambda y le damos click a Create Function para crear nuestra primera función Lambda.

En la siguiente vista le daremos un nombre a nuestra función y el entorno de ejecución que queremos que nuestra función tenga. Para este ejemplo utilizaremos Nodejs. Al finalizar le damos click a Create function.

Ahora que nuestra función ya está creada, pasaremos a la siguiente vista que es la consola principal de nuestra función Lambda. Para poder editar el código de nuestra función solo nos dirigimos a la sección Code source donde encontraremos un editor de código con el código de ejemplo que trae nuestra función.

Por ahora dejaremos el código tal y como viene, si deseas podrías editar ese código usando JavaScript. Por ahora, nosotros nos enfocaremos en la configuración y lo que nos falta ahora es enlazar el API Gateway que creamos con esta función Lambda.

4. Conectando API Gateway con Lambda

Volvemos a API Gateway e ingresamos a la consola de la API que creamos anteriormente demo-prueba. Dentro de aquí ingresamos a la sección de rutas (routes) y aquí nuestra primera ruta o endpoint, así que le damos click en Create.

Aquí colocaremos el método de petición que aceptará nuestro endpoint o ruta y el nombre de nuestra ruta para luego dar click en Create.

En la siguiente vista, ya dentro de nuestra ruta creada enlazaremos la función Lambda que creamos con esta ruta. Para hacer esto le damos click a Attach integration.

En la siguiente vista le daremos click en Create and attach an integration.

El siguiente paso es escoger el tipo de nuestra integración que en nuestro caso es Lambda function, luego seleccionaremos la región y la función Lambda que queremos conectar al API.

Con esto ya tenemos una conexión entre nuestro API demo-prueba y nuestra función Lambda function-hello y si ingresamos a la dirección https de nuestro API seguido de la ruta que creamos /hello-world pues ya podremos ver el mensaje que quedó programado en la plantilla que la función Lambda trajo consigo al momento que lo creamos. Entonces obtendremos el mensaje "Hello from Lambda!".

Además si ingresamos a nuestra consola de nuestra función Lambda podremos ver el API Gateway que conectamos a él.

5. Tu turno

Y listo ya sabes utilizar API Gateway junto con Lambda, con este simple ejemplo ya puedes comenzar a hacer pruebas en el front usando una API real.