Tras la publicación del informe de Forrester del último trimestre de 2018, comparando diferentes proveedores de plataformas API Management, inicialmente sorprende que un producto como Amazon API Gateway no esté contemplado en este análisis.

Pero la respuesta es sencilla, como su nombre indica es un producto que ofrece “solo” el Gateway, no es una plataforma completa de gestión de APIs.

Entonces, ¿qué ocurre con aquellos clientes que hayan optado por usar este producto y quieran establecer una estrategia de APIficación en su compañía?

AWS ofrece la posibilidad de integrar su gateway con el producto de API Management ofertado por RedHat, 3Scale para convertirlo en una plataforma de gestión de APIs completa.

Como paso inicial se analiza a alto nivel las funcionalidades de cada uno de los productos para corroborar qué ofrecen de manera independiente y así entender mejor qué se obtiene a través de su integración.

¿Qué ofrece 3Scale?

3Scale es una plataforma completa de API Management (gateway, manager y portal) proporcionada por RedHat, que disponibiliza una arquitectura flexible, distribuida y escalable. Se basa en una arquitectura de dos capas:

Las funcionalidades más destacables de la plataforma son las siguientes:

¿Qué ofrece Amazon API Gateway?

Sobre esta herramienta ya se habló en un post anterior, pero en resumen AWS API Gateway es un servicio completamente gestionado que permite exponer, monitorizar y securizar APIs de una forma escalable. Las funcionalidades principales que ofrece son las siguientes:

¿Por qué se integran ambos productos?

Amazon API Gateway y 3Scale API Management Platform son dos productos muy diferentes que se complementan aprovechando lo mejor de cada una de ellos.

Ambas plataformas promueven dicha integración dotando a cada una de ellas de un rol específico: Amazon API Gateway como API gateway de la plataforma y 3Scale como API Manager y API portal.

La integración tiene sentido desde las siguientes perspectivas:

En detalle las funciones que realiza cada producto son:

¿Cuáles son los escenarios de aplicación?

En ambos escenarios es el gateway de Amazon el que actúa como punto de entrada de la solicitud invocando al resto de componentes de la integración y es 3Scale el que autentica la petición.

¿Cómo funciona?

En la integración de 3Scale con Amazon API Gateway intervienen diferentes partes cada una de ellas con el siguiente propósito:

El flujo del funcionamiento de esta integración se resume en los siguientes diagramas. El primero de ellos evidencia los componentes que intervienen cuando una API se llama por primera vez con unas claves de acceso.

  1. Una petición a una API expuesta llega al gateway de Amazon y este invoca a 3Scale mediante un custom authorizer implementado en una función Lambda para comprobar si la petición está autorizada.
  2. 3Scale custom authorizer comprueba si la petición está en la caché de una llamada anterior mediante Amazon ElastiCache.
  3. Al ser la primera llamada la caché no tiene datos luego se comprueba la autorización de le petición invocando a 3scale API Management Platform.
  4. La respuesta desde 3scale API Management Platform se almacena en la caché para sucesivas peticiones.
  5. Esa misma respuesta sobre la autorización se devuelve al gateway de Amazon.
  6. Si la petición está autorizada Amazon API Gateway invoca directamente al *backend, *en este caso la función Lambda.

En el caso de llamar al mismo recurso que se procesó en el diagrama anterior el flujo sería el siguiente:

  1. Amazon API Gateway comprueba mediante el custom authorizer de 3Scale si la petición está autorizada.
  2. El custom authorizer comprueba si existe en la caché datos almacenados para esa petición. Como la solicitud anterior fue almacenada se recogen los datos que contiene la caché.
  3. El custom authorizer devuelve la respuesta de la caché al gateway de Amazon.
  4. Si la petición fue autorizada el gateway de Amazon invoca directamente al backend, en nuestro caso una función Lambda.
  5. Además, el custom authorizer de 3Scale invoca a la función de reporting 3Scale async.
  6. La función de reporting 3Scale async informa del tráfico a 3scale API Management Platform de forma que esta información pueda ser utilizada desde la API de analítica que ofrece la plataforma 3Scale.

¿Cómo se configura?

Requisitos previos

Es necesario disponer de una API desplegada y configurada en Amazon API Gateway. Si no se dispone de una, se puede utilizar Serverless CLI para generarla de una manera muy sencilla. Se pueden ver los detalles en el punto 1.3 del siguiente tutorial.

Desplegar servicios en AWS

Para hacer el despliegue se hace uso de Serverless Framework, que permite configurar y desplegar fácilmente diferentes funciones Lambda y CloudFormation, que permite configurar distintos servicios AWS mediante un archivo.

1. El primer paso consiste en clonar el repositorio con toda la configuración y código del proyecto. En este proyecto nos encontramos dentro de la carpeta awsThreeScale_Authorizer lo siguiente:

2. Instalar las dependencias de Serverless, desde la consola de comandos en la ruta donde nos hemos clonado el repositorio ejecutamos: npm install*.*

3. Configurar el fichero de configuración serverless.yml para Serverless:

Para obtener el identificador simplemente entramos desde la consola de AWS a Support Center y vemos lo siguiente:

Para obtener el identificador del servicio entramos en el portal de gestión de 3Scale y copiamos el valor:

Para obtener el valor de Provider Key se entra en el portal de gestión de 3Scale se entra en la configuración de la cuenta:

Y el valor del provider key nos aparece directamente:

Guardamos los cambios en el fichero serverless.yml.

4. Desplegar las funciones y los recursos en AWS ejecutando desde la línea de comandos: sls deploy.

Como resultado tras la configuración y despliegue vemos dentro de la consola de AWS las siguientes funciones Lambda:

Configurar Custom Authorizer

Testear flujo end-to-end

Para testear el flujo obtenemos el User Key desde la consola de gestión de 3Scale desde la aplicación suscrita a la API:

Se utiliza Postman como cliente invocando a la url del gateway, que nos ha proporcionado Amazon tras el deploy, incluyendo como cabecera el valor del User Key de 3Scale:

Para comprobar el uso de la caché se puede verificar que la primera vez que se invoca la latencia en obtener respuesta es mucho más elevada, mientras que en las sucesivas ejecuciones la respuesta se obtiene mucho más rápido.

Si queremos probar un caso en que la autenticación falla simplemente deshabilitamos el envío del token obteniendo lo siguiente:

Ventajas

Las ventajas del uso de la integración entre Amazon API Gateway y 3Scale residen en aprovechar los puntos fuertes de cada uno de los productos para generar una plataforma completa de gestión de APIs.

Desde el punto de vista del uso de Amazon API Gateway las ventajas que tenemos son:

Desde el punto de vista de 3Scale su uso proporciona todas las piezas necesarias para una estrategia de gestión y consumo de APIs exitosa con las siguientes ventajas:

Referencias

Cuéntanos qué te parece.

Enviar.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.