No hay gran introducción esta vez. Si necesitas crear tu propia REST API en AWS aquí es donde debes de estar.
1 – Crear la función Lambda
El primero paso es precisamente crear tu función Lambda.
Si no estas seguro cómo puedes revisar el siguiente artículo: Como crear una función de Lambda en AWS en 5 minutos
Lo normal es que para un API real, nuestra lambda devuelva información de alguna base de datos. Sin embargo en este caso para agilizar solo utilizaré el siguiente código en una función Lambda.
exports.dataLambda = async (event, context, callback) => {
return [
{
"id": "1",
"username": "srb2010",
"languages": [
"java",
"javascript",
"php"
]
},
{
"id": "2",
"username": "mjpe554",
"languages": [
"go",
"dart",
"kotlin"
]
}
]
}
Al probar la función nos debe regresar este resultado
¡Listo! La función esta terminada. Ahora vamos al paso interesante. Hacer que nuestra API la utilicé.
Si ya tienes una API, o vienes de aprender “Como crear un mock REST API en AWS API Gateway en 7 minutos” puedes saltarte al paso 4. Si quieres aprender a desplegar una desde 0. Sigue leyendo.
2 – Creación del API en la consola
Lo primero que necesitas hacer es entrar a tu cuenta de AWS y buscar la opción de API Gateway.
A continuación selecciona la opción de crear una REST API pública. La UI diferirá si en la cuenta en la qué estas trabajando ya tiene REST APIs o no.
Configura las opciones de la siguiente manera:
- Protocolo: REST
- Crear API nueva: API nueva
- Nombre de API: Sample API
- Descripción: Una API de muestra
- Tipo de punto de enlace: Regional
3 – Creación de un recurso
Una vez creada estarás por defecto en la sección de Recursos de tu API. Para crear un recurso, selecciona:
Acciones->Crear recurso
En este ejemplo crearemos un recurso sample. Para evitarte problemas de acceso y poder hacer pruebas siempre te recomiendo que habilites la opción de CORS. Si no sabes qué es CORS puedes revisar aquí.
*Ten en cuenta que entender CORS es importante para decidir si lo necesitas activar o no en tu proyecto, sin embargo si sólo vas a hacer pruebas no es necesario que lo entiendas aún.
Una vez creado el recurso, API Gateway mostrará la siguiente interfaz con tu recurso creado y los métodos del mismo.
*El método de OPTIONS aparece por haber habilitado la opción de CORS. Si no habilitaste esta opción, este elemento no aparecerá.
4 – Creación de un método
Ahora agregaremos el método GET a nuestro recurso. Para ello debes selccionarlo y hacer click en:
Acciones->Crear método
En la lista selecciona GET. Y haz click en el símbolo para aceptar la creación del mismo.
Una vez creado API Gateway te pregunta acerca del tipo de integración que va a tener este método.
Las opciones del formularo definen lo siguiente:
Tipo de Integración – Las opciones son para poder enlazar tu método con diferentes servicios:
- Función Lambda – Para enlazar el método con una función Lambda de AWS.
- HTTP – Para enlazar el método con otros APIs pre-existentes (HTTP).
- Simulación – Para enlazar el método con un mock API, que no tiene otro propósito que simular el comportamiento de un API real.
- Servicio de AWS – Para enlazar el método con algun otro servicio de AWS.
- Enlace de VPC – Para enlazar el método con un enlace de una VPN.
Usar la integración de proxy Lambda – Básicamente utilizar una integración de este tipo quiere decir que la Lambda tendra el control total de los datos de entrada y de salida. Al no seleccionar esta casilla estas diciendo que quieres que API Gateway se encargué de manejar parte del flujo de datos.
*Porsupesto las implicaciones en tu código y forma de trabajo son aún mas complejas que esto, así que te recomiendo que leas mas al respecto aquí.
Región Lambda – La región en la que creaste la lambda que quieres utilizar.
Función Lambda – El nombre o ARN de la lambda que quieres utillizar.
*El ARN es un id asignado a cada recurso que creas en AWS.
Usar tiempo de espera predeterminado – Si seleccionas esta opción se usa el límite por default de 29, 000 ms. De lo contrario deberás específicar tu el tiempo límite.
Nuestra función debe quedar de la siguienta manera:
- Tipo de Integración: Función Lambda
- Usar la integración de proxy Lambda: False/Unchecked
- Región Lambda: us-east-2
- Función Lambda: dataLambda
- Usar tiempo de espera predeterminado: True/Checked
Al guardar la configuración API Gateway te pedirá tu confirmación para crear permisos que dejen que la API ejecuté la función Lambda.
Acepta la creación de estos permisos y continua al siguiente paso.
5 – Publicación del API
Técnicamente nuestra API ya esta lista para usarse pero aún no esta publicada. ¿Cómo hacemos eso?
Fácil. Selecciona Acciones->Implementar la API
Se te abrirá una ventana en donde seleccionarás la etapa de tu API y llenarás información acerca de la implementación.
Es importante que entiendas la diferencia entre ‘implementación’ y ‘etapa’ dentro de API Gateway.
Una implementación es como una versión de tu API. Necesitarás crear una nueva implementación cada vez que hagas un cambio, ya sea agregar, cambiar o borrar algun recurso o método.
Una etapa tiene como propósito ser usada como diferentes ambientes de desarrollo de tu API, de manera que puedas hacer públicas diferentes versiones de la misma. Un caso de uso normal sería crear una para tu equipo de desarrollo en donde puedas trabajar y hacer cambios, una para QA y una o varias para la versiónes de producción.
Para este ejemplo estoy llenando las opciones con la siguiente información:
- Etapa de implementación: [Nueva etapa]
- Nombre de la fase: dev
- Descripción de la etapa: Etapa de desarrollo
- Descripción de implementación: Base
Sin embargo lo puedes llenar con los datos que tu quieras.
*En este caso al no tener ninguna etapa existente API Gateway me obliga a crear una nueva al lanzar la implementación. Si ya tenías una etapa puedes seleccionar esa misma o proceder con la creación de una nueva.
Ahora en la sección de Etapas podemos ver la etapa que seleccionamos con los recursos que creamos para esta nueva implementación.
A su vez si te vas a la pestaña de Historial de Implementaciones, podrás ver un listado con las diferentes implementaciones que hayas creado, incluyendo la que está utilizando la etapa actualmente.
6 – Realizando una petición al API
Por último. ¿Cómo probamos que tenemos accesso a nuestra API?
Lo primero que necesitas es la URL para tu API evidentemente.
A este path le tienes que concatenar el recurso que quieras llamar. En este caso queremos llamar a /sample, así que la url que debemos llamar (en mi caso) es:
https://dgah4cbh8c.execute-api.us-east-2.amazonaws.com/dev/sample
Ahora podemos intentar hacer una peticón a esta dirección.
¡Perfecto! Es la misma respuesta que definimos para la Lambda.
Puedes actualizar el código cuando quieras y verás los cambios reflejados en tu API prácticamente de inmediato. (Porsupuesto, ten en cuenta que si cometes errores en tu código eso también se reflejará de inmediato)
Como puedes ver el único cambio que hice fue que ahora sólo devuelvo el primer elemento de mi arreglo.
Obviamente esta es una petición GET muy simple.
Más adelante podremos ver cómo pasar parametros ya sea como query params o pasar información en el body de un POST.