Solutions Arch. Associate Hands-On
imagen:propia

Solutions Arch. Associate Hands-On

El objetivo de este tutorial es el de implementar un flujo de trabajo serverless en AWS. Pero, a diferencia del hands-on original (donde se hace de manera manual en la consola de AWS) utilizaremos Terraform como herramienta de despliegue automatizado.

Caso de Uso:

Implementar una aplicación serveless para automatizar el manejo de incidencias de soporte en un callcenter. El problema principal radica en que si bien se pueden configurar funciones Lambdas para que se llamen entre ellas, a medida que se escale la aplicación y su robustez crezca, manejar estas conexiones se convertiría en un problema, incluso para implementar pequeños cambios en el flujo de la aplicación.

Es por ello que se decide utilizar AWS Step Functions. Este servicio permitirá coordinar de manera eficiente las múltiples funciones Lambda a emplear. Para más detalle en este caso de uso y practicar su implementación manual en la consola de AWS, por favor ingrese en el siguiente enlace: Crear un flujo de trabajo sin servidor.

Diagrama:

No alt text provided for this image

Prerrequisitos:

  • Tener activa una cuenta AWS, recomendando tener disponible la capa gratuita, pues con ella no generara ningún gasto la implementación del flujo. Enlace oficial AWS.
  • Contar con Terraform instalado. El tutorial se ejecutará sobre un sistema Linux Ubuntu 20.04. Enlace oficial Terraform.
  • Se debe tener conectadas las plataformas de Terraform y AWS para acceder programáticamente (vía terminal). Por favor validar el siguiente enlace oficial donde explican como hacerlo: Enlace oficial Terraform.
  • GIT (opcional).

Repositorio:

El codigo del hands-on se encuentra en el siguiente enlace en un repositorio de GitHub, especificamente en el directorio serveless_basic_workflow: Repositorio GitHub.

No alt text provided for this image

Detalle del Proyecto:

En primer lugar, procedemos a clonar, copiar o descargar el proyecto que se encuentra en la carpeta serveless_basic_workflow, allí encontraremos la siguiente estructura de archivos:

No alt text provided for this image

La carpeta functions contiene el código en javascript, del flujo de soporte del callcenter. Están en formato .zip con el fin de que puedan ser utilizados por Terraform al crear las funciones Lambdas. Ese código es el mismo que está presentado en el tutorial original en AWS y no es necesario modificarlo de ninguna manera.

No alt text provided for this image

La carpeta terraform contiene todo el código necesario para implementar el flujo de trabajo, aquí nos detendremos para explicar cada uno de los archivos antes de ejecutarlo.

Variables.tf

No hay mucho que explicar aqui, es donde declaramos las variables a utilizar en los diferentes documentos de Terraform.

No alt text provided for this image

Output.tf

Son las salidas que se muestran en el terminal, posterior a la implementación realizada en Terraform. Es muy práctica para revisar si los valores de elementos de algunos recursos son los correctos, como en el caso del output lambda_function_arn donde nos mostrara el valor del arn de cada una de las funciones Lambda luego de creadas.

No alt text provided for this image

Provider.tf

Aqui declaramos el proveedor sobre el cual implementaremos la infraestructura y la version del mismo, en este caso seria AWS. Adicionalmente declaramos un default_tags el cual añadira esas etiquetas a todos los recursos de AWS creados.

No alt text provided for this image

Data.tf

Data nos permite usar información que está definida fuera de Terraform o que está en una configuración diferente a la que estamos usando. Para este tutorial estamos llamando datos de AWS correspondiente a las políticas IAM relacionadas con Lambda. El aws_caller_identity está a manera de ejemplo y solo es llamado en el output, no tiene incidencia en el flujo de trabajo que estamos desplegando.

No alt text provided for this image

Security.tf

En este documento se declaran los recursos relacionados con seguridad e identidad, para este tutorial se requerirá la creación de dos roles, uno para las funciones Lambda y otro para Step Functions.

No alt text provided for this image

Estos roles deben estar asociados a unas políticas de acceso. Estas políticas son las que llamamos desde el archivo Data.tf al estar ya definidas por defecto por AWS. Procedemos a asociarlas a su rol correspondiente.

No alt text provided for this image

Main.tf

En este documento se definen los dos recursos serverless requeridos para el tutorial. En primer lugar, creamos las funciones Lambda utilizando para ello un for_each que recorra el diccionario creado en Variables.tf para así evitar duplicidad de código.

No alt text provided for this image

Finalmente definimos una state machine en Step Functions donde declararemos en un JSON las tareas necesarias para el flujo de trabajo en la asignacion de tickets del callcenter.

No alt text provided for this image

Ejecución del Proyecto:

Luego de revisar en detalle, nos disponemos a implementar este flujo de trabajo por medio de Terraform, para ello ejecutaremos terraform init para inicializar y descargar lo necesario para implementar los recursos. Recuerden que se debe ejecutar los comandos en el mismo directorio donde se encuentre el proyecto de Terraform:

No alt text provided for this image

Ahora corremos un terraform plan para validar que esté estructurado correctamente los documentos de terraform y revisar los recursos que crearemos en AWS.

No alt text provided for this image

Ha llegado el momento de implementar los recursos, terraform apply --auto-approve nos permitirá crearlos sin pasar por la validación previa (ya que la hemos hecho en el paso anterior).

No alt text provided for this image
No alt text provided for this image

Hemos creado con éxito 10 recursos en AWS, ahora validaremos dentro de la consola de administración en AWS que este flujo de trabajo funcione de manera correcta.

Validación:

En primer lugar, veamos que estén las funciones Lambdas creadas y configuradas.

No alt text provided for this image

Revisamos los roles.

No alt text provided for this image

El state machine creado correctamente dentro de AWS Step Functions

No alt text provided for this image

Accedemos al state machine y comprobaremos el funcionamiento del flujo de la misma manera que se valida en el tutorial en AWS. En primer lugar, le damos clic a Start execution

No alt text provided for this image

En el input sustituimos el valor por defecto por el siguiente: "inputCaseID": "001" y damos clic en Start execution de nuevo.

No alt text provided for this image

Esperamos unos minutos que ejecute cada una de las tareas del flujo y al terminar en alguna de las dos salidas comprobamos que la implementación ha sido un éxito.

No alt text provided for this image

Para finalizar y evitar cobros innecesarios debemos proceder a destruir el flujo de trabajo creado en AWS. Para esto basta con un terraform destroy al pedir confirmación escribimos "yes" y esperamos que nos confirme la destruccion de los recursos.

No alt text provided for this image
No alt text provided for this image

Con esto concluimos este hands-on de dificultad básica. Cualquier comentario o corrección al proceso ejecutado será bien recibido.

Inicia sesión para ver o añadir un comentario.

Más artículos de John R.

  • WebApp en Docker usando AWS ECS

    WebApp en Docker usando AWS ECS

    En este artículo explicaremos como hacer un despliegue de un servidor Nginx sobre contenedores utilizando ECS, el cual…

  • Servidor Apache con AWS CDK

    Servidor Apache con AWS CDK

    Para implementar recursos y servicios de AWS tenemos varias herramientas como la consola AWS que sería su interfaz…

  • CREAR UN ROL DE ACCESO EN AWS

    CREAR UN ROL DE ACCESO EN AWS

    Continuando con los artículos de configuración básica en AWS, esta vez procederemos con la creación de un rol que es…

  • CREAR UN USUARIO ADMIN EN AWS

    CREAR UN USUARIO ADMIN EN AWS

    Cuando creamos nuestra primera cuenta cloud con AWS, lo que nos interesa de primer momento es aprender a desplegar los…

  • Solutions Arch. Associate Hands-On

    Solutions Arch. Associate Hands-On

    En este hands-on vamos a implementar un flujo de trabajo serverless que organice un microservicio basado en AWS SQS…

  • Solutions Arch. Associate Hands-On

    Solutions Arch. Associate Hands-On

    Continuamos trabajando con los hands-on de AWS, en esta oportunidad implementaremos un único servicio AWS: Amazon…

  • Configurar un cliente Windows para administrarlo remotamente desde un servidor Ansible

    Configurar un cliente Windows para administrarlo remotamente desde un servidor Ansible

    Caso de Uso Administrar uno o varios clientes Windows a través de Ansible. Para hacer esto posible, el SO Windows…

    2 comentarios
  • DevOps Lab: EC2 AWS Jenkins server

    DevOps Lab: EC2 AWS Jenkins server

    Descripción del laboratorio Implementar en una instancia EC2 de AWS con sistema operativo Ubuntu, un servidor Jenkins…

  • Chart Bar Race con Python y Tableau

    Chart Bar Race con Python y Tableau

    Me permito compartir una visualización de datos en chart bar race (que se ha vuelto tan popular estos días) sobre los…

Otros usuarios han visto

Ver temas