Programar un flujo de trabajo sin servidor
con AWS Step Functions y Amazon CloudWatch
Automatizar la respuesta a eventos operativos para recursos de su cuenta AWS puede ayudar a reducir los gastos generales operativos de su infraestructura de AWS Cloud. Como ejemplo del mundo real, si es ingeniero de DevOps o gerente de TI, podría querer automatizar los trabajos de ETL, la sincronización de datos o la seguridad.
Para solucionar este desafío, puede ejecutar un flujo de trabajo sin servidor en un cronograma basado en tiempo. Amazon CloudWatch Events ofrece una transmisión de eventos del sistema casi en tiempo real que describe los cambios y las notificaciones para sus recursos de AWS. Desde este flujo, puede crear reglas para dirigir eventos específicos a AWS Step Functions e invocar una máquina de estado para realizar un procesamiento adicional. AWS Step Functions le permite coordinar múltiples servicios en flujos de trabajo sin servidor para poder crear y actualizar procesos automatizados rápidamente.
En este tutorial, utilizará Step Functions para organizar un flujo de trabajo sin servidor en respuesta a un evento de CloudWatch. Primero, creará una máquina de estado muy simple utilizando AWS Step Functions. Luego, usará Amazon CloudWatch Events para configurar una regla que ejecute su máquina de estado cada minuto. Si bien este tutorial invoca un flujo de trabajo en un cronograma basado en el tiempo, se puede generalizar para integrarlo con otros servicios de AWS que generen eventos.
En este tutorial, utilizará AWS Step Functions y Amazon CloudWatch. Ambos servicios están incluidos en la capa gratuita de AWS.
Es necesario contar con una cuenta de AWS para realizar este tutorial
No se aplican cargos adicionales por el uso de Step Functions ni CloudWatch. Los recursos que cree con el tutorial se pueden utilizar dentro de la capa gratuita.
Paso 1. Crear un rol de AWS Identity and Access Management (IAM)
AWS Step Functions puede ejecutar código y acceder a otros recursos de AWS (por ejemplo, datos almacenados en buckets de Amazon S3). Para mantener la seguridad, debe otorgar a Step Functions acceso a estos recursos mediante AWS Identity and Access Management (IAM).
a. Abra la consola de administración de AWS en otra ventana del navegador para poder tener abierta esta guía paso a paso. Cuando la pantalla se cargue, escriba su nombre de usuario y contraseña para comenzar. Luego escriba IAM en la barra de búsqueda y seleccione IAM para abrir la consola del servicio.
Paso 2. Crear una máquina de estado de AWS Step Functions
En este paso, creará una máquina de estado simple y que se ejecute en forma independiente utilizando un estado de Paso. Un estado de Paso simplemente pasa su entrada a su salida, y no realizar ningún trabajo en realidad.
En un escenario del mundo real, su flujo de trabajo sin servidor puede hacer lo que sea necesario para hacerlo. Podría coordinar múltiples funciones Lambda para realizar tareas, tomar decisiones, etc. Para los fines de este tutorial, vamos a mantener el flujo de trabajo simple.
a. Abra laconsola de AWS Step Functions. Step Functions ofrece varias máquinas de estado predefinidas como plantillas. Para este tutorial, creará una máquina de estado utilizando la plantilla Hello World. En la página Crear una máquina de estado, seleccione Plantillas y luego elija Hello world.
c. Step Functions completa el nombre de la máquina de estado en forma automática. También completa el panel de Definición de la máquina de estado con la descripción Idioma de estados de Amazon de la máquina de estado. Para obtener más información sobre cómo definir máquinas de estado, consulte Estructura de máquina de estado.
Hagamos algunas modificaciones simples a su máquina de estado:
En la línea 2 y la línea 5, sustituya “HelloWorld” por “Hacer algo”
En la línea 7, sustituya “Hello World!” por “¡Trabajo completo!”
Luego, haga clic en el botón actualizar al lado de su flujo de trabajo visual para actualizar el diagrama de máquina de estado para que refleje sus cambios.
Paso 3. Cree una regla de Amazon CloudWatch Events
Ahora que ha creado su máquina de estado, puede crear una regla Amazon CloudWatch Events que ejecute su máquina de estado según un cronograma. Amazon CloudWatch Events brinda la transmisión casi en tiempo real de eventos de sistema que describen cambios en los recursos de Amazon Web Services (AWS). Mediante el uso de reglas sencillas puede realizar configuraciones rápidamente, hacer coincidir eventos y redirigirlos a una o más funciones o flujos objetivo.
d. En la sección Objetivos, elija Añadir objetivo. Elija Máquina de estado de Step Functions de la lista y seleccione su máquina de estado ScheduledWorkflow.
Elija Configurar entrada y seleccione Evento coincidente. Esto hará pasar los detalles del Evento CloudWatch como entrada para Step Functions cada vez que se ejecuta una instancia de su máquina de estado.
Seleccione Crear una nueva regla para este recurso específico y luego haga clic en Configurar detalles.
e. Se muestra la página Paso 2: Configurar detalles de la regla. Ingrese execute_state_machine como el Nombre de su regla, deje Activado para estado marcado, y luego elija Crear regla.
Se crea la regla y aparece la página Reglas, enumerando todos sus reglas CloudWatch Events.
Se ejecutará una nueva ejecución de su máquina de estado a cada minuto.
Paso 4. Personalice cómo su máquina de estado lidia con las entradas y salidas
A continuación, personalizará cómo su máquina de estado lidia con la entrada y la salida. Comprender cómo fluye la información de estado a estado, y aprender cómo filtrar y manipular estos datos, le ayudará a diseñar e implementar de manera los flujos de trabajo en AWS Step Functions.
b. En la ventana Definición de máquina de estado, consulte la línea 7 de su máquina de estado. El campo Resultado del estado Paso especifica el resultado que se debería pasar al siguiente estado. Dado que su máquina de estado solo tiene un estado, se pasará el mensaje “¡Trabajo completo!” al estado final de su flujo de trabajo.
Quizás recuerde que el estado Step Functions Pass simplemente pasa su entrada a su salida. Puede usar el campo ResultPath para modificar la salida de un estado. Por ejemplo, puede sustituir la entrada de estado por el resultado que produce (por ejemplo salida de una función Lambda del estado Tarea).
Para combinar la entrada del estado con su resultado, añada una nueva línea después de la línea 7 y escriba:
"ResultPath": "$.taskresult",
Esto combinará los detalles de CloudWatch Event que invocó la ejecución de la máquina de estado con la salida del estado Paso, en este caso “¡Trabajo completo!”. Para obtener más información, consulte Procesamiento de entrada y salida en Step Functions.
Paso 5. Confirme que su flujo de trabajo esté funcionando como se espera
Ahora que ha activado su regla CloudWatch Events, CloudWatch dispara una ejecución de su flujo de trabajo de la máquina de estado a cada minuto. En este paso, observará dichas ejecuciones y verificará que los detalles de CloudWatch Event estén siendo captados por Step Funcions.
b. Bajo Ejecuciones, puede observar las ejecuciones que se disparan mediante CloudWatch Events. Puede hacer clic en el botón actualizar para actualizar la ventana y observar las nuevas ejecuciones que aparecen en su máquina de estado. Espere unos instantes para permitir que se disparen al menos dos instancias.
c. Haga clic con el botón derecho en una de las ejecuciones y abra el enlace en una nueva pestaña del navegador. Repita para lograr una ejecución diferente de su máquina de estado.
En cada pestaña, haga clic en el estado “Hacer algo” en el panel de flujo de trabajo Visual para completar los detalles del Panel de detalles de Step a la derecha.
Al hacer clic en Entrada, puede ver los detalles del evento coincidente de CloudWatch. Tenga en cuenta las diferencias de los eventos, tales como los campos “ID” y “tiempo”.
Paso 6. Terminar los recursos
En este paso, terminará los recursos de AWS Step Functions y Amazon CloudWatch.
Importante: Terminar los recursos que no se están utilizando de forma activa reduce los costos y es una práctica recomendada. No terminar los recursos puede conllevar cargos.
b. En la ventana de Máquinas de estado, haga clic en la máquina de estado que creó para este tutorial y seleccione Eliminar. Confirme la acción seleccionando Eliminar máquina de estado en el cuadro de diálogo. Su máquina de estado se eliminará en uno o dos minutos una vez que Step Functions haya confirmado que se han completado las ejecuciones en proceso.
¡Felicitaciones!
Ha programado con éxito un flujo de trabajo sin servidor para que se ejecute a cada minuto.
AWS Step Functions le permite inspeccionar y auditar la ejecución de tareas recurrentes para confirmar que se hayan ejecutado de manera consistente. Al combinar AWS Step Functions con Amazon CloudWatch Events, puede automatizar tareas diarias, semanales y mensuales, o disparar la ejecución de su flujo de trabajo Step Functions cuando se cumplan ciertas condiciones.