Aprende a generar templates de Cloudformation de recursos existentes en AWS con Former2

José Abzum
Bancolombia Tech
Published in
5 min readMar 30, 2022

En este artículo te explicaremos cómo la herramienta Former2 te puede ayudar a agilizar la creación de infraestructura en AWS, pasando de una PoC (Prueba de concepto) a un proyecto con sus templates de CloudFormation en cuestión de minutos.

Former2 es una herramienta de código abierto creada por Ian McKay que genera plantillas de AWS CloudFormation o Terraform a partir de recursos de AWS existentes.

AWS ofrece a los arquitectos de nube la posibilidad de crear infraestructura en la nube por medio de plantillas utilizando el servicio de CloudFormation, comúnmente se le llama Infraestructura como Código. Este servicio te ofrece la capacidad de construir toda una arquitectura por medio de una definición en uno o varios archivos, y que puedas utilizarlos cuantas veces tú quieras sin necesidad de volver a construir tus arquitecturas desde cero en la consola de AWS.

Una PoC es una prueba de concepto (Proof of Concept); lo cual se refiere a que tu puedes construir un proyecto con los recursos mínimos necesarios en la nube para saber si tu proyecto es viable y/o posible en su etapa de construcción.

Para no incurrir en tecnicismos en AWS, comúnmente estas pruebas de concepto se realizan creando los recursos necesarios para el proyecto de forma manual, utilizando la consola de AWS para saber si es viable. Supongamos que, para la prueba de concepto, se necesita de una instancia en EC2 que esté conectada a una VPC (existente) y que el rol asociado a la instancia tenga permisos para escribir en un bucket de S3 que también debe ser creado para la PoC.

El diagrama del proyecto sería de la siguiente forma:

Diagrama de arquitectura de ejemplo
  • 1 Instancia EC2 | AMI de Amazon Linux 2 | Conectada a una VPC.
  • 1 Rol que tenga las políticas necesarias para realizar un GetObject a un Bucket de S3
  • 1 Bucket de S3

Construir esta arquitectura en CloudFormation siguiendo la documentación de cada uno de los recursos puede resultar un poco tedioso si lo hacemos desde cero, ya que existen muchas propiedades por cada recurso que pueden ser innecesarias. Con Former2 tu podrás obtener las propiedades exactas que necesitas para poner tu arquitectura en funcionamiento con base a un recurso ya existente en la consola de AWS.

¿Cuál es el proceso para generar recursos de CloudFormation con Former2?

A continuación vamos ver cómo generar los 3 recursos que anteriormente se mencionan con Former2, para obtener su especificación de CloudFormation:

  1. Primero debes generar un Access Key ID y Secret Key ID por medio de un usuario de IAM con acceso de lectura a los recursos de AWS.
  2. Ingresa a https://former2.com/ y veras una pantalla como la siguiente:

3. Instala el plugin para tu navegador. En este caso, como yo utilizo Chrome, instalamos el plugin de Former2 para Chrome.

4. Dirígete a la opción de Setup > Credentials y encontrarás un formulario en el cuál deberás ingresar las Keys del paso número 1.

5. Una vez hayas ingresado el Access Key ID y el Secret Access Key, debes hacer click hasta finalizar el proceso y llegar al Dashboard.

haz click aquí
luego aquí
por último aquí

6. Presiona el botón Scan Account que se encuentra en la parte superior derecha. Esto hará que se reconozcan los recursos de AWS en Former2

Y espera hasta que los recursos se hayan escaneado:

espera hasta que llegue al final

7. Ahora es momento de obtener la definición de CloudFormation de los tres recursos de la arquitectura. Una vez te encuentres en el Dashboard de Former2, debes hacer click en EC2 (o el recurso de interés) para ubicar la instancia:

Tras encontrar la instancia, haces click en el checkbox en la fila de la instancia y después en Add Selected. Esto hará que en el botón Generate, que se encuentra en la parte superior, se agregue un contador de los recursos que se hayan seleccionado:

Aquí podemos ver que ya agregamos el primer recurso (Instancia EC2)

8. Para ubicar el rol, debemos dar click en Dashboard y ubicar el servicio de IAM, o en la barra de la izquierda también puedes ubicar IAM. Luego haces click en el tab de Roles y ubicas el Rol de Instancia que asociaste en el momento de la creación de la instancia

Haz click en el checkbox y luego click en el botón Add Selected para agregar la definición en el generador. Te darás cuenta que el botón Generate ahora tendrá otro recurso:

9. Repetimos el mismo procedimiento para el servicio de S3. Ubicamos S3 desde el dashboard o en la parte de almacenamiento de la barra lateral izquierda.

Importante: Debes tener instalado el plugin de Former2 para poder obtener el listado de buckets de S3. (Ver paso 3)

10. Ahora que ya tienes tus recursos seleccionados y ubicados, haces click en el botón Generate (3) en donde podrás generar el template CloudFormation de tu arquitectura:

Y listo, ahora ya sabes obtener la definición de los templates de CloudFormation de recursos que ya existen en una cuenta de AWS. En este caso, partimos de una PoC (prueba de concepto) que realizamos manualmente desde la consola de AWS y obtenemos la definición del template para implementarlo en nuestros procesos de DevOps y buenas prácticas.

--

--