Crea una API Rest fácilmente utilizando API Gateway y AWS Lambda (I)

Como comentabamos en una entrada anterior, la arquitectura ServerLess nos proporciona soluciones de bajo coste, con opciones de modularizar nuestras aplicaciones y con alta escalabilidad.

Esta arquitectura se conoce como ServerLess o FaaS, se ejecutan en la nube y los proveedores de servicios nos cobran solamente por el tiempo de ejecución del entorno.

En esta entrada nos centraremos en los servicios que nos proporciona Amazon Web Services y utilizaremos funciones creadas en AWS Lambda para crear de manera rápida y fácil una API Rest. Para ello añadiremos un API Gateway por delante para capturar todas las llamadas HTTP. Este Gateway se comunicará con funciones Python definidas en AWS Lambda. Es un funcionamiento básico pero en las siguientes entradas intentaremos completarla añadiendo más funcionalidades en el código de Lambda.

Para poder seguir debidamente el siguiente tutorial, recomendamos tener una cuenta en AWS. Si no es así, puedes crear una cuenta”free tier“.

Primera función AWS Lambda

Primero de todo necesitamos programar el código que queremos ejecutar. Como hemos mencionado anteriormente, lo vamos a hacer en Python. Este programa, en cada llamada, recogerá la información del tiempo en Getaria (Gipuzkoa) desde el servicio OpenWeatherMap por medio de una llamada HTTP Rest y lo devolvera por pantalla.

Para ello en la sección AWS Lambda de la consola de AWS crearemos una nueva función.

Podemos hacer uso de plantillas utilizadas en otros proyectos pero para este ejemplo crearemos uno desde cero.

Seleccionaremos el nombre y el entorno de programación a utilizar para esta nueva función.

También los permisos (roles).

El siguiente paso será escribir el código. En este caso la función realizará una llamada simple HTTP GET a OpenWeatherMap con los parámetros que indiquemos como query parameters:

  1. appId: La API Key que nos provee OpenWeatherMap
  2. id: identificador de la ciudad, en este caso Getaria (id: 6358128)
  3. units: unidad para recibir los datos, por ejemplo metrics

Aquí un ejemplo del código que hemos escrito:

Una vez que tenemos programado, guardamos el código y podemos realizar una prueba de funcionamiento. Para ello usaremos el botón “Probar” de la parte superior. La primera vez nos preguntará si queremos crear parámetros de entrada para esta prueba, pero como esta función no recibe ninguna, la podremos dejar por defecto.

Esta es una función simple pero podemos añadir muchas más funcionalidades; etiquetas, acceso a otros servicios de AWS (S3, RDS, SES, SQS…).

Conectar el API Gateway con nuestra función AWS Lambda

Esta función para que esté publico, necesitamos añadirle una API Gateway como trigger. Este Gateway, recibirá las peticiones HTTP y según la configuración se las pasará a la función AWS Lambda que hemos creado.

Es hora de configurar la API Gateway. El sistema nos dará la posibilidad de utilizar una ya creada o crear una nueva. Nosotros la crearemos, sin seguridad, como API Abierta.

En la siguiente pantalla, podemos ver la configuración por defecto de una nueva API Gateway, donde tiene un “endpoint” para poder ser llamado usando cualquier método de HTTP (ANY). Una vez recibida la llamada, la API interactuará con Lambda.

Como hemos repetido anteriormente, esta es una configuración muy básica, pero podemos añadir mucha complejidad de funcionalidades, seguridad, permisos, métodos…

Ahora solo nos falta publicar nuestra API. Pulsamos sobre “Deploy API“.

Para saber cuál es la URL de nuestra API, entraremos en el apartado “Stage” y clicando sobre el método GET, nos aparecerá la URL en pantalla.

Podemos probar la URL desde cualquier navegador web o podemos utilizar una aplicación como Postman.

Esto es todo para la primera entrada. En los siguientes artículos intentaremos añadir más funcionalidades a esta API que hemos creado.

NOTA: por seguridad hemos desactivado tanto la API Gateway como la función Lambda que hemos creado, ya que están vinculadas con nuestra API Key de OpenWeatherMap y no queremos sufrir peticiones que la caduquen.

Besterik gabe.

Ondo izan!

Web orri honek cookiek erabiltzen ditu erabiltzailearen nabigazioa errazteko