API Privada con Serverless Framework, AWS y VPCs.

Api Gateway Private Endpoint

Generalmente cuando hablamos de APIs pensamos en la forma como otros desarrolladores se pueden conectar a nuestros sistemas, productos, o servicios. Sin embargo, cuando empiezas a desacoplar tus sistemas te das cuenta que el utilizar APIs para el desarrollo interno puede ser igual o más útil para el negocio.

Este ejemplo sencillo muestra como poder crear un API privada usando Serverless Framework y Amazon Web Services. Ojo, pestaña, y ceja, lo que estoy haciendo con este ejemplo no es hacer privada un API a través de autentificación y autorización, eso siempre se puede agregar sobre el API como una capa de seguridad aún mayor, en este caso estamos haciendo privada la conexión para que solo pueda ser accedida desde nuestra VPC a través de un AWS PrivateLink.

Ya han pasado un poco más de dos años desde que AWS lanzó esta  funcionalidad, sin embargo no había tenido la oportunidad y necesidad de utilizarla anteriormente. Pueden leer el Post original de AWS acá : https://aws.amazon.com/blogs/compute/introducing-amazon-api-gateway-private-endpoints/

El código de este ejemplo puede ser encontrado en GitHub : https://github.com/ctala/serverless-private-api-endpoint

Leer más

Tutorial : Full RESTfull API con AWS, Terraform, y Serverless Framework

Hace ya algunos años que he querido hacer un tutorial como este, en dónde de manera sencilla pueda explicar los distintos pasos de la creación de un API REST, o al menos como lo he aprendido a hacer basado en experiencia y errores.

Una de las razones del por qué nunca comencé con este proyecto es debido a que crear un API puede ser tan complejo como uno quiera, y nunca encontré el tiempo para realizarlo, por lo que decidí lanzar este tutorial por partes e iré publicando las distintas partes a medida que las vaya realizando.

En este tutorial crearemos un Full RESTfull API con seguridad basada en tokens utilizando AWS, Swagger, Terraform, DynamoDB, SSM, y Serverless Framework quién generará los recursos del API Gateway y Lambdas.

 

Estado Proyecto En Progreso
Fecha Inicio 17/05/2020
Fecha Actualización 17/05/2020
Fecha de Término
Capítulos listos 2/10
Link Youtube Playlist https://www.youtube.com/playlist?list=PLCjIDwuXOgwR64ScpUf6WLnW6j2jdkREX

 

Indice

  1. Entendiedo la necesidad. API de manejo de datos de usuarios y los datos requeridos.
  2. Conociendo las herramientas que se utilizarán y el por qué las usaremos.
  3. Diseñando la API utilizando Swagger. Antes de crear el API debemos saber que información recibirá y que información retornará.
  4. Generando la base de datos DynamoDB, y el recurso relacionado de SSM utilizando Terraform.
  5. Generando los endpoints utilizando Serverless Framework.
  6. Generando el CRUD de la aplicación. – Create, Read, Update, Delete –
  7. Asegurando nuestra API.

Extra

  1. Bloqueo de recursos en Terraform para impedir eliminaciones accidentales.
  2. Endpoint que lista los usuarios con paginación.
  3. Sincronizando DynamoDB con Redshift para realizar operaciones analiticas.

Leer más

Usando TravisCI y Github Package Repository (GPR)

TRAVIS CI

Travis-CI es un sistema de Integración Continua, y es una herramienta muy importante en el mundo de la automatización de pasos a producción, mientras que GitHub Package Repository corresponde a un sistema de manejo de paquetes y dependencias relativamente nuevo proporcionado por GitHub.

Estamos modificando el flujo de automatización que tenemos de paso a producción, y un amigo me recomendó enormemente ( y reiteradamente ) que comenzara a usar TravisCI.

Hace bastante no escribía un blogpost, sin embargo pasé un par de horas que no tenía planeadas en invertir en esta conexión así que creo que amerita escribir algo al respecto.

Antes de iniciar :

  1. Debes de tener una cuenta en GitHub
  2. Debes de tener una cuenta en TravisCI
  3. Asumiré que la conexión entre ambos ya está realizada y tienes un proyecto que incluya un paquete alojado en GITHub Package Repository.

Leer más

Mejorando el performance de SQS para millones de escrituras

Solución Procesar SQS Fargate Aurora

Hace ya casi un año que Amazon publicó que estaban desarrollando el soporte de Amazon SQS como «Event Source» para una función Lambda, y desde que la solución estuvo disponible buscaba una escusa para poder encontrar un mini proyecto para probarla.

Para el desarrollo interno de la empresa tengo un «Bot» que obtiene de manera diaria un CSV con alrededor de 1.000.000 de filas. Para todos los que estamos acostumbrados a trabajar con archivos grandes, 1M de datos no suena tan complejo, por lo que a pesar de tener mejores opciones decidí que era el momento de hacer una prueba de fuego parseando este archivo y enviando el resultado directamente a la cola fila por fila para luego ser procesado a través de una función lambda.

Este post es para comentar sobre la estructura final del proyecto, y como se fue modificando para poder funcionar de manera correcta.

Leer más

Creando un servidor de MySQL local con Docker

Docker es un software de manejo de contenedores que permite exportar tu código junto con la configuración del entorno en donde se encuentra de manera sencilla y liviana sin preocuparse por los cambios que puedan haber en el sistema operativo, mientras que MySQL es la base de datos relacional Open Source más popular.

El objetivo de este POST es explicar el paso a paso de la creación de un contenedor de MySQL de manera local que se pueda acceder desde otras aplicaciones instaladas en la misma máquina. Se usa un computador con Ubuntu 18.04 LTS para el tutorial.

Requerimientos

  • Docker Instalado

Leer más