Aprendiendo AWS Step Functions en Español: Un Taller Completo
Heads up!
This summary and transcript were automatically generated using AI with the Free YouTube Transcript Summary Tool by LunaNotes.
Generate a summary for freeIf you found this summary useful, consider buying us a coffee. It would help us a lot!
Introducción
¡Hola! Bienvenidos a nuestro taller sobre AWS Step Functions en español. En este streaming, Marcia y Adrián nos guiarán a través de un recorrido educativo sobre cómo usar Step Functions, una poderosa herramienta de orquestación en la nube de Amazon Web Services (AWS). Nos enfocaremos en varios módulos que abarcan desde la configuración básica hasta patrones de integración avanzados.
Con una audiencia internacional que ya nos acompaña desde diferentes rincones del mundo, es un momento perfecto para aprender y hacer preguntas sobre esta tecnología.
¿Qué son AWS Step Functions?
AWS Step Functions es un servicio que permite coordinar múltiples servicios de AWS en un flujo de trabajo visual. Puedes diseñar y ejecutar pasos de trabajo secuenciales y en paralelo en tu aplicación, lo cual mejora la eficiencia y escalabilidad. Este taller está diseñado para que tanto principiantes como desarrolladores experimentados puedan absorber conocimientos útiles.
Estructura del Taller
- Presentación de los participantes.
- Introducción a AWS Step Functions y su arquitectura.
- Ejecución de un workshop en vivo que incluye varios módulos prácticos.
- Preguntas y respuestas de la audiencia.
Presentación de los Participantes
Como se mencionó, Marcia es una reconocida experta en la materia y está acompañada por Adrián, quien comparte su experiencia. Ambos están listos para comenzar esta jornada de aprendizaje.
Módulo 1: Conceptos Básicos
En este primer módulo, comenzamos con el módulo "Hola Mundo", que nos adentra a lo simple: definir una máquina de estado en AWS Step Functions. Aquí aprenderemos sobre:
- ¿Qué es una máquina de estado?
- Cómo implementar la máquina en el entorno de AWS.
- Ejercicio práctico sobre la ejecución.
Estructura de la Máquina de Estado
Una máquina de estado tiene:
- Entradas: Datos que se recibe al inicio.
- Estados: Las diferentes tareas que la máquina ejecutará.
- Salidas: Resultados que la máquina produce al finalizar su ejecución.
Utilizando la consola de AWS, se puede definir una máquina de estado usando el lenguaje de definición de estado de Amazon (ASL). Aprenderemos cómo realizar esta configuración en nuestro taller.
Módulo 2: Request/Response
En el segundo módulo, abordamos el patrón de integración llamado request/response.
Ejercicio Práctico
- Definición de una máquina de estado que, al recibir un evento, ejecuta una función Lambda que responde a un evento en SNS (Simple Notification Service).
A través de este módulo, los participantes verán cómo los patrones de integración alinean las máquinas de estado de AWS con diferentes servicios utilizados en las aplicaciones.
Módulo 3: Ejecución de Trabajos
En este módulo, se profundiza en cómo ejecutar trabajos utilizando AWS Batch junto con Step Functions. La clase fortalecerá el conocimiento sobre el manejo de trabajos asincrónicos y cómo monitorizar el estado de esos trabajos.
Ejercicio de Gestión de Trabajos
- Diseño de una máquina de estado que lanza trabajos en Batch y espera resultado.
Módulo 4: Callbacks
Nos expandimos en el manejo de eventos, donde aprenderemos a utilizar tokens de tareas para comunicar el fin de procesos externos. Aquí, implementaremos una función lambda para enviar el token de vuelta a AWS Step Functions.
Módulo 5: Manejo de Concurrencia
Aquí, se exploran los estados Choice y Map. La habilidad de procesar arrays y seleccionar caminos alternativos en el flujo de trabajo se enfatiza según criterios decisiona les como prioridades.
Módulo 6: Manipulando Entrada y Salida
Aprenderemos cómo transformar la entrada y salida dentro de una máquina de estado, con el uso de intrinsic functions para realizar cálculos y modificaciones a los datos en tiempo real.
Módulo 7: Integración con API Gateway
La integración de AWS Step Functions con API Gateway es crucial. Proporcionaremos un ejercicio práctico sobre las mejores prácticas para configurar y ejecutar flujos de trabajo. Esto incluirá un ejercicio que demuestra cómo el flujo de trabajo responde de manera síncrona y asíncrona a las solicitudes de usuario.
Conclusiones del Taller
A través de cada módulo, hemos visto ejemplos prácticos de AWS Step Functions en acción. Progresamos desde conceptos básicos hasta patrones avanzados y finalizamos con la integración con API Gateway. Las habilidades adquiridas son valiosas para cualquier desarrollador que desee construir flujos de trabajo escalables y eficientes en AWS.
Preguntas y Respuestas
Durante el taller, los participantes están animados a hacer preguntas en el chat, que serán respondidas en tiempo real.
Agradecemos a todos los que participaron en este primer taller de AWS Step Functions en español. Alentamos a los asistentes a compartir sus experiencias y aprendizajes en los comentarios. ¡Esperamos verlos en futuras sesiones!
estés en español este no estoy sola hoy estoy con ariam que nos va a acompañar Bueno él va a ser todo el trabajo yo voy
a venir acá a mover las manos sí hacer de mediadora este cómo estás Adrián muy bien muy bien Marcia muy bien
muy contento de estar aquí nada primera vez que hago un streaming así así que vamos a ver qué tal va a estar Genial
porque tenemos una audiencia súper internacional ya me estaban diciendo que hay gente de Suecia hay gente de México
hay gente de Argentina hay gente de Perú hoy no alguien va a esperar la versión en inglés Pobrecito Lucas
haremos otra haremos otra en inglés este Pero bueno este es el canal en español así que lo siento
va a ser todo en español así que me alegro que estén todos acá que se hayan Unido Qué vamos a hacer hoy
desarrollando que es el workshop de este functions que bueno el equipo de desarrollo del del servicio Pues nos
sigue añadiendo así añadiendo funcionalidades y nosotros tenemos que seguir manteniendo el workshop y sacando
nuevos módulos y actualizándolos y y hoy en particular es lo que queremos anunciar un poco no es que el
hemos hecho una traducción Durante los últimos dos meses y se hace dos o tres meses solamente lo has hecho tú la
mayoría yo con otros compañeros también compañeros también sí sí sí sí sí y no solo al español también está en francés
ir por todos los bueno algunos módulos del works bueno tenemos tiempo para todos en la versión en español y Pero
antes de todo eso primero capaz presentarte un poquito quién sos qué haces a mí ya me conocen
porque están acá en mi canal así que me imagino muy bien Yo soy Partner Partner Solutions en Amazon
una una afición muy importante por el todo lo que tiene que ver con serverless me gusta mucho y estoy intentando
es solo uno de los servicios Y entonces Bueno tengo dos preguntas para la audiencia para que vayan contando
primero hay alguien escuchándonos de España porque acá veo a latinoamérica y Suecia me acaban de decir
presentísima hay alguien de España que se presente que diga Hola Este y la segunda cosa es Quiero saber saben lo
que alguna vez lo usaron este Qué experiencia tienen con este functions nosotros no vamos a entrar en
los detalles no es una charla de este pero si no saben que es este faction no se vayan porque a medida que vamos a
entrar por el workshop el workshop el primer módulo se llama Hola mundo Así que van a ir aprendiendo que es este
function sobre la marcha Así que si no saben Ah acá me dicen Hola José Hola c G crg soy disléxica Lo siento los
acrónimos me cuestan este desde España Así que si si no saben que es este functions nunca trabajaron con ellas no
se asusten quédense acá vamos a aprender este que es acá me preguntan esta pregunta es una gran pregunta es
estoy en la mentalidad No sé vos Adrián Yo estoy en la mentalidad este function First O sea primero esto en functions y
después vemos entonces es parecido a lambda no es totalmente distinto Pero puedes hacer un montón de cosas
podés hacer un montón de cosas incluidas cosas con lambda con muchas funciones lambdas es más sobre todo es un un
orquestador de tareas que puede ejecutar tareas de un montón distinto de tipos que vamos a ver
algunas en el workshop y esas tareas pueden ser la ejecución de funciones lambdas como enviar mensajes a una cola
que puedes gestionar los estados del Estado la salida de un evento o de una tarea y pasarla modificarla incluso
transformarla y pasarla como input o entrada al próximo paso de la de la máquina de estado ese Por qué estado
y se pueden hacer muchas cosas de lógica de negocio entonces puedes hacer muchas cosas que antes así hacer una función de
lambda como digo yo esas funciones de landas gordotas que hacían 20 cosas ahora lo pones todo adentro de una
máquina de estado más estados más discretos hacen menos cosas capaz en alguno de esos estados llamas a la
función del anda en otros estados guardas algo en una cola en Bueno una base de datos Y así vas como poniendo
todo ese peso de de lifels que antes teníamos en la función de lambda grandoto total la pasas a este functions
este porque ahora están preguntando si va a quedar guardado el vivo sí va a quedar guardado Así que el workshop
también está disponible lo pueden seguir les vamos a pasar el link ahora se los pongo en los comentarios para que los
que quieran este seguirlo al mismo tiempo que que ariam puedan es todo en la consola WS Así que
no no hay que instalar nada no no hay que estar ganando todo completamente de la consola o sea aquí no no importa si
tienes Linux Windows o Mac todo lo vas a hacer en la consola Así que son los mismos pasos para todos Exacto así que
Y si tienen preguntas me las dejan en el chat yo las voy a ir respondiendo se las voy haciendo ariam a medida que que él
va explicando lo vamos interrumpiendo vale muy bien muy bien muy bien muchas gracias Marcia y bienvenidos todos
Bueno como ya estaba había mencionado antes este es el workshop de stems la versión que estamos viendo hoy que la
que vamos a utilizar es la la opción en en español vale que es una lo hemos lanzado hace dos meses no no no no no
más el workshop Está compuesto por actualmente 13 módulos hay un módulo 14 que todavía no está en español porque es
muy nuevo o sea lo lanzamos hace dos tres semanas en inglés estamos trabajando en la traducción ahora y lo
que iremos viendo Bueno aparte de los módulos hay información digamos teórica introductoria sobre este no vamos a
a emplear mucho tiempo en eso vamos directamente al a al handson a entrar al laboratorio a los laboratorios
entonces Yo iré y iré viendo un módulo por módulo a ver hasta donde más o menos llegamos y Marcia va a ir pues
y intentaremos responderla Vale entonces yo no O sea yo para empezar el workshop ya yo tengo mi consola de Amazon aquí
abierta vamos a Estoy buscando las instrucciones por momento vale Ya yo tengo la consola de
Amazon abierto y lo que lo primero que vamos a hacer es ver el módulo número uno que es un módulo muy simple vale
antes de empezar quisiera que veáis una cosa o sea el módulo uno es un módulo muy simple en el cual Hola mundo
básicamente vamos es para familiarizarnos con la consola de este funchos y con workshop estudio
lo que vamos a revisar es una definición de una máquina de estado en este functions y y la vamos a ejecutar
simplemente para familiarizarnos un poco con la consola una cosa acabas de mencionar a workflow Studio este
workshop lo pueden hacer sin estar en wordpress Studio cuando vayan siguiendo el el workshop van a ver un capítulo que
dice configuración y ahí les va a explicar lo que tienen que hacer si no están en workflow Studio Flow Studio no
para mostrar ya les trae desplegado todo y vos no lo vas a mostrar pero ustedes lo pueden hacer en configuración sigan
en cada uno de los módulos hay un primer paso que se llama configuración que si cuando cuando queráis hacerlo bueno el
workshop en vuestra propia cuenta de Amazon directamente tenéis que venir aquí lanzar una una de estas esas son
plantillas deformation las lanzáis en la región que consideréis y Y eso crea toda la infraestructura necesaria para cada
uno de los para cada módulo o sea en cada módulo hay una un un paso específico que se llama configuración y
ahí viene de limpieza Sí y otro de limpieza y esto es muy importante porque este si no elimináis la plantilla los
recursos se quedan creados y bueno y repercutirán en lo en el costo y lo tendréis que pagar al final
pero para para nuestro laboratorio eso ya yo tengo todo creado ya yo no no voy a pasar por el por el paso de
configuración pero si vosotros lo Vais a ejecutar el workshop en algún momento en vuestra propia cuenta de Amazon Pues sí
que tenéis que hacer la configuración y al final de cada módulo pues la limpieza básicamente la configuración son es una
plantilla de closemation stack que crea todos los recursos roles de allá etcétera etcétera Vale entonces el
módulo 1 es el módulo de Pues eso Hola mundo Entonces lo que vamos a hacer a revisar aquí ahora vamos a venir a la
y vamos a buscar una máquina de estado que se llama timer State Machine que es esta o sea ve aquí
veréis un momento Esa es la que te creó Sí yo tengo aquí un montón de máquinas de Estados ya creadas porque son la de
todos los módulos que vamos a ir a ver o al menos alguno de ellos Entonces yo aquí lo que estoy haciendo es filtrando
ahora para la máquina estaba específica del módulo uno que es la que me creó la plantilla de la que crearía la plantilla
de cromation una vez que la que la ejecutáis en vuestra propia cuenta de Amazon en mi caso ya que las tengo todas
creadas para ahorrar tiempo vale Entonces esta es la este este es el de la máquina de estado de
este punchón Vale entonces lo que queremos ver aquí ahora o sea ya tenemos una máquina de estado creada Yo quiero
venir a editarla para que veáis esto lo vamos a usar mucho o sea Esta es y es la consola de stems aquí nosotros a la
izquierda tenemos la definición de la de la máquina de estado en formato a ese l que es Amazon State Language lenguaje de
estado de Amazon y a la derecha tenemos una visualización de de todas las las etapas o los pasos por los que va a
pasar la la máquina de estado Vale entonces Esta es la vista digamos principal pero aún así tenemos otra aquí
tenemos en la consulado le ves Sí sí sí al final es lo mismo o sea que puedes ver lo mismo lo ves En una la otra lo
que pasa es que ese es mucho más visualmente mucho mejor y aquí no lo vemos aún todavía bien pero cuando añade
icono o el logo del servicio y es bastante más fácil de de entender entonces Esta es nuestra máquina de
estado inicial aquí esta máquina ha estado lo que hace es básicamente es un es un timer esto es la máquina adaptado
inicia tiene un estado que se llama wait State vale que lo voy a clickear aquí para que lo veáis
al estado Yo le puse nombre wait o bueno yo no el shop en general le pusimos el nombre wait for timer y lo que lo que
que en la entrada lo que vamos a pasar es un es un Jason es un J de entrada y ese es otro va a tener varios Campos uno
de ellos va a ser el timer seconds y lo que va a hacer esta máquina de Estados es leer este valor de la entrada y
esperar esa cantidad de segundos los que sean los que pasemos como parámetro de entrada y una vez que termine pues va a
pasar al siguiente estado Que es un estado de suceso Ahí va a terminar la máquina de estado es extremadamente
simple entonces una cosa importante que hay que tener en cuenta que todas las máquinas de estado como definición
teórica tienen una entrada tiene una salida tiene estados tienen transiciones los estados reciben entradas hacen cosas
y hacen salidas que las pasan a otros estados para que hagan cosas y esa es la base de las máquinas de estado y en eso
se basa este crear estas máquinas de estado con estados que son cosas que pueden ser en este caso esperar o puede
exactamente entonces Esta es una máquina muy estaba muy simple aquí en la definición que se la Esta es la
definición el de en el formato a ese l que será de nuevo Amazon State Language de la máquina de estado básicamente aquí
tenemos un muy rápido un comentario que le podemos poner a nuestra máquina de estado en general el estado en el que
tiene que empezar en este caso va a empezar con el estado wait for timer y los estados que pertenece que son parte
de esta máquina de estado vale en esta máquina estaba hay dos estados principales dos dos posibles estados
timer y subses en el Start yo le estoy diciendo empieza por el timer Podrían haber muchos otros estados dentro de de
los estados yo vamos a empezar por este y luego en el cuando vemos la descripción de cada uno de los estados
por ejemplo en el wave timer Nosotros le decimos el tipo de estado en este caso va a ser el tipo wait le decimos Cuál es
el parámetro que tiene que leer para esperar o sea donde el parámetro de entrada del input de la cantidad de
segundos para esperar y le decimos Cuál es el próximo estado el próximo estado es el estado subsés que es este que está
aquí abajo y así está definida esta máquina de estado súper súper simple Vale entonces lo que vamos a hacer ahora
cancelo todo lo que yo estaba haciendo aquí porque no la voy a editar para nada entonces Esta es la Esta es la este
función nuevamente y yo tengo aquí abierta la esta máquina está en particular vamos a ejecutar la máquina
de Estados aquí en este campo es donde nosotros le tendríamos que poner el input en este caso le vamos a poner y
Aquí lo tengo un segundo copy vale Este es el input de esta máquina de estado O sea el input de nuestra máquina
estaba extremadamente simple igual es timer seconds es la aquí y cinco es el valor esta máquina de estado si yo le
paso este input va a esperar cinco segundos y luego a terminar de forma satisfactoria Vale entonces la
de Estados aquí veis Bueno no sé si habéis podido ver primero la máquina de estado estaba esto wave for timer este
estado estaba en azul que significa que está en progreso cinco segundos después pasó al Estado subsés efectivamente
en esta consola en la parte de abajo si vamos al final podemos ver también tener más información de cada una de las
transiciones de estado que tuvo la máquina de estado vale en este caso pues aquí tenemos que a los 33 milisegundos
Se entró en el estado weight este timer y a los cinco con 86 se salió del Estado wi-fi timer 5 segundos después vale Y se
entró al Estado succes que es el último estado de la máquina vamos a ejecutar nuevamente muy rápido
aquí en lugar de 5 lo voy a poner 10 para que veáis la transición vale aquí lo veis está en azul significa
que este es el estado que se está ejecutando ahora está en progreso y en unos 10 segundos pues este pasará a
color verde que ya está completado y pasar las subses que es el último Aquí no hay nada directamente se termina la
ejecución Vale entonces qué otras cosas podemos Mostrar por aquí por ejemplo Aquí es muy simple en este en este
ejemplo lo vamos a ver en otros ejemplos más adelante pero por ejemplo aquí nosotros podríamos en esta misma vista
podríamos seleccionar cada uno de los estados y ver cuál es para ese estado en particular Cuál es el input y el output
de ese estado en este caso es el mismo porque no hemos modificado nada y podemos ver la definición propia de ese
estado Esta es la definición dentro de la máquina de estado que Define este estado en particular
vale Lo mismo sucede para el Estado subsés el input y el output es el mismo porque no hemos modificado Esta es una
máquina ha estado muy muy simple Vale entonces Bueno más o menos básicamente esto es nos jugamos ahí moviendo en
estas dos consolas en la en la anterior que vimos de en la que yo edité o mostré Cómo editar las máquinas las máquinas de
estado y en esta que es la la vista de ejecución de la máquina de estado una cosa curiosa también que podemos Mostrar
capas ahora no sé si en el workshop se muestra más adelante Pero todas las ejecuciones que vas haciendo quedan
guardadas y se pueden ver y se pueden entrar a esa vista este para cada una de las ejecuciones Y eso es bastante
potente Porque si tenés una lógica de negocio media complicada puedes ir viendo puedes ver las ejecuciones
pasadas por ver todos los detalles este y muchas veces la gente pregunta y cómo debagiamos no sé funciones lambda súper
complejas Y si creas capaz una máquina de estado con la misma lógica y encontrar mucho más fácil la las
soluciones cuando tenés este tipo de orquestador no sí sí aquí por ejemplo este es de nuevo la vista principal de
esta máquina está en particular aquí tenemos las dos ejecuciones que hemos que hemos hecho si yo abro la primera
por ejemplo Aquí voy aquí no vamos a ver diferencia ninguna pero pero este este son los logs y la vista de la de la
primera ejecución y luego estaría la otra también aquí saldrían todas esas y luego esto también tiene una no lo vamos
a ver pero se integra también con Clow watch creo que me está cargando si se integra un Cloud watch Aquí está
deshabilitado entonces todos los logs que genere la máquina de estado en las transiciones y tal van a Club watch lock
y luego ahí se podría procesar con otra herramienta y cualquier pregunta gente me la dejan en
los comentarios y se las Vamos haciendo este en vivo lo dejo seguir muy bien muy bien bueno
Esto es más básicamente la lo que os quería Bueno también quería mostraros que aquí nosotros en words workflow
Studio O sea no no modificamos ni añadimos nada pero lo vamos a ver más adelante o sea esto funciona de forma
tal que nosotros aquí podemos Buscar la acción que queremos hacer y directamente arrastrarla imaginaros que yo Después de
los cinco segundos cinco segundos de espera quiero ejecutar una función blanda directamente hago
selecciono la función lambda la arrastro y la pongo donde yo quiera que se ejecute y aquí pues en el panel de la
derecha pues tendría que configurar ciertas cosas por ejemplo tendría que es especificar Cuál es la función blanda
que yo quiero ejecutar que yo tengo un montón de funciones lambda voy a poner una por ejemplo
Y entonces una vez que yo salve esto y ejecute la máquina de estado Pues en esta que estamos viendo aquí ahora que
voy a poner la definición para que veáis Cómo cambió aquí tenemos ahora tres estados wave for timer lambdainbow y
subses Vale entonces si yo ejecutase esta máquina dedora primero se esperarían los cinco o diez
segundos lo que sea que yo ponga de entrada Se ejecutaría no se esperaría ese tiempo luego se ejecutaría la
función blanda y finalmente se terminaría con el estado suceso Entonces esta consola básicamente nos sirve no
sirve para eso para de forma visual armar la máquina de estado que luego nosotros siempre podemos exportar en
este formato Y esto no creo que de tiempo verlo hoy pero luego podemos usar herramientas infraestructura como código
para versionar los los La máquina de estado del fichero y y bueno integrarlos en nuestros propios
sí hay una cajita ahí que dice Flow y ahí ahora vamos a ver durante el workshop otros otros opciones pero ahí
puedes elegir Choice y que es como más que un condicional es como un switch entre una variable depende el valor A
dónde vas pero lo vamos a ver creo que en uno de los módulos vamos a ver lo vamos a ver hay varias opciones aquí y
vamos a ver varias de estas sino todas creo y acá alguien pregunta si existe Carlos pregunta si existe un
método de entrada intermedia es decir esperar a que un servicio invocado desde aquí nos regrese algo este y eso lo
vamos a ver no sé si ya pero en el módulo vamos a ver en el tres creo que lo vamos a ver sí sí sí sí se puede
hacer sí se puede hacer así que capaz podemos ir siguiendo porque yo acá vamos ya directamente en el módulo dos que es
este que tenemos por aquí abajo Ya vamos a ver el módulo 2 y 3 vamos a ver lo que se llaman para patrones de integración
el módulo tres es ejecutar un trabajo y el módulo cuatro es esperar por un token de una tarea de
esperar por la devolución de un token Entonces nosotros ejecutamos una tarea esperamos a que termine y nos dan el
token de vuelta para para decir a la máquina de estado que ya terminó ese estado en particular Entonces vamos
y vuelvo a máquina de estado Vale entonces Esta es la máquina de estado que tenemos que revisar en este módulo 2
aquí en workflow Studio vale Esta es la máquina de estado es parecida a la anterior pero en lugar de
o sea Aquí vamos a tener un timer vamos a esperar un tiempo y luego vamos a enviar un mensaje
derecha veis lo mismo Pues el primer estado wave for timer que es el primer estado ejecutar vale Start es lo que
Define Cuál es el primer estado y luego el next es el que tiene el próximo estado dentro de cada estado Entonces el
próximo aquí es Send sns message y lo que se hace es lo que hacemos Es básicamente y hay un tópico de CNS
creado que es este que está aquí y ese es el tópico al cual se va se va a hacer el publicar el mensaje entonces De dónde
sale el mensaje el mensaje es un un parámetro de entrada también de la máquina de estado O sea esta máquina de
estado va a tener dos parámetros de entrada timer seconds para el timer del primer estado y luego el mensaje en Sí
para el timer Perdón para el mensaje que se va a enviar en la en la máquina de estómago a través de la máquina de
estado Me acaban de hacer una pregunta que creo que es súper importante Es sobre permisos esta máquina de estado
tiene que tener permisos para publicar mensajes en el tópico y las máquinas de estado en general van a
necesitar los permisos correctos para hacer lo que le pidas que haga o sea exactamente exactamente todas estas lo
vamos a ver más adelante en el pero cada una de estas máquinas de estado tiene tiene permisos para
ejecutar todas las tareas de la propia máquina de estado O sea ya estas están creadas tienen su propio rol de iam con
vamos a cancelar este y vamos a ejecutar la máquina de estado y voy a copiar o sea yo estoy todos los
inputs los estoy copiando directamente de otra pantalla que tengo donde está en el tengo el la documentación del
en este caso lo que vamos a poner es este input que dice este es el mensaje que es el Este es el lo que va a leer el
estado de CNS para enviar el tópico este mensaje se va a enviar y este y está aquí Define el valor de los 5 segundos
luego se envió el mensaje evidentemente no no lo voy a recibir porque no no hay no hay ningún suscriptor en este tópico
pero aquí lo lo importante en este en este patrón de integración que se llama ricue San response es que entendáis que
lo que se está lo que está haciendo la máquina de estado aquí es directamente haciendo una llamada a la Api de CNS y
diciéndole envía este mensaje y directamente la Apps le responde de vuelta y le dice pues ya está ya ya ya a
esa llamada la Api la la Api de descendencia le mandan 200 acá y le dice que todo está bien no significa que se
hayan enviado los mensajes ni que los mensajes hayan llegaban al destino simplemente que para desde el punto de
vista de este funjustes el trabajo ya está hecho el trabajo era enviar a sns a publicar en un tópico específico ya Ese
trabajo está hecho Vale entonces aquí si vemos en la entrada pues estoy viendo la entrada de
este de este estado pues tenemos bueno el mensaje y el y el tiempo de espera vale aquí nos hemos
modificado los los el input no lo hemos modificado entre un estado y otro pero lo podríamos
Modificar el output de este de este estado cambia un poco porque al hacer una llamada a una Api al servicio de CNS
del mensaje y otra metadatos o sea de cuánto se hizo la llamada etcétera y otros metadatos específicos de respuesta
de ese mensaje o sea de esa llamada lápiz de cenes lo mismo pasará cuando ejecutemos una función lambda o llamemos
a otro servicio en particular Pues el output si bien lo podemos procesar porque lo podríamos procesar para
filtrar y por ejemplo que solo mostrarse el message ID por defecto este servicio pues este es el output
para para esta llamada la pieza Vale entonces este es el patrón Bueno uno de los digamos patrones básicos que
tipo del segundo tipo de patrón de integración que se llama a ver si lo tengo por acá claro ejecutar
perfectamente documentados vale aquí en la documentación tenemos los tres patrones response que fue el primero que
vimos el que vamos a ver ahora Run Job y wait for a callback wizard token Entonces esto si queréis lo
mezclar más tiempo revisándolo pues lo podéis hacer y está en el en el en el workshop también están estos estos
solo para recortar de nuevo cada uno de los módulos tiene el paso de configuración si cuando lo vayáis a
probar en vuestra cuenta y el paso de limpieza que tenéis que ejecutar el final para eliminar todo yo eso no lo
voy a hacer no lo necesitamos hacer yo tengo todavía todo preado entonces en este módulo en particular en el ejecutar
un trabajo lo primero vamos a hacer dos cosas en general vamos primero a ejecutar una máquina de estado asíncrona
eso significa que se manda a ejecutar una tarea y se devuelve un hocal a la máquina de estado a este functions y
este function no sabe si la tarea se completó o no y luego vamos a ejecutar un trabajo del tipo sincrono o sea de
forma tal que este función envía manda ejecutar la tarea Pero espera a que la tarea esté completada antes de pasar al
los módulos anteriores tengo una máquina de estado creada vale que se llama batch yo notification
esta máquina de Estados lo que hace es ejecutar que aquí lo lo muestro Vale Voy a ejecutar un trabajo en aws batch
el la entrada principal luego se ejecuta un yo en olls batch aquí si entramos a la configuración
al a la definición podemos ver por ejemplo que el primer estado es el el de sumidt y aquí el tipo es un
un el estado de ese tipo task que es una tarea aquí le especificamos de que Cuál es el tipo de tarea o sea qué tarea es
la que la que se va a ejecutar un jop de audio de ese bache luego le pasamos varios parámetros como el Joe name la
cola de doble de ese bache que se va a utilizar esta cola ya está creada y el Job definition o sea este es el la
definición del que utiliza WS batch para lanzar el contenedor y ejecutar la tarea que corresponda De hecho aquí yo creo
que sería incluso interesante que veamos la consola de doble s batch o sea esto ya estaba creado porque lo
crea la plantilla principal pero si venimos aquí a WS yo que tengo Primero aquí el Job definition Este es el que
Vale entonces yo creo que yo creo que ya la podemos ejecutar y luego comento un poco más sobre el resto
de los pasos así básicamente lo que va a suceder es que se va a mandar esta tarea a ejecutar si la tarea
se termina de forma correcta se va a venir al estado notify subsés O sea mandar un mensaje a través de un de un
tópico sns y si no se manda otro mensaje a otro tópico de CNS que es para notificar de de un fallo eso lo podemos
ver en esta sección de la definición vale en esta sección de aquí primero se hacen re intentos no voy a dedicar mucho
tiempo a la parte de reintentos ahora porque lo vamos a ver luego pero lo otro es que que hacemos un Catch Entonces si
notify aquí podéis ver un poco de lógica no aquí porque básicamente estamos diciendo el próximo estado por defecto
de este estado de aula de ese bache es notify success pero pero si hay un error estamos diciendo que el próximo estado
es notify O sea que parte un poco de de esa de esa lógica que nos estaba marcha que no nos habían preguntado antes es un
ejemplo de cierta cierta lógica que podemos Añadir aquí Vale entonces vamos a ejecutar la la máquina de Estados
eso de forma programática tenemos que literalmente programarlo nuestra función de lambda o en nuestro contenedor o en
nuestra aplicación y acá la máquina de estado lo hace por tiro y lo que vos le decís a qué estado ir si falla qué
estado ir si todo está bien y es mucho más fácil de gestionar y es menos agregarle cosas innecesarias por ejemplo
estás con una función de lambda no tenés que agregarle todo este boiler Plate de lógica y necesario no sí sí exactamente
Entonces vamos a ejecutar la esta tarea entonces aquí vamos a ver que pues aquí no no nos dio tiempo ni a ni a ver el en
progreso porque directamente se pasa la tarea de aula ese batch doble s batch encora el mensaje si venimos aquí a la
una tarea que está en la cola doble de ese Bach en el estado plurinable esto no significa que esté que ya se haya
ejecutado este estado dentro de wsh lo que significa es que se está esperando porque hay recursos
Hardware digamos cpu y Ram disponible para ejecutar la tarea Vale entonces este aquí lo que está pasando ahora
mismo es que el outs aún no tiene las instancias s2 del cluster de css listas para ejecutar la tarea entonces la tarea
se queda en este estado aún no no ni siquiera empezado sino que está aquí pero a la vez este función desde su
punto de vista ya terminó la tarea o sea para ella ya hizo la llamada al hablo de ese bache en color el mensaje o la tarea
y y con eso es suficiente para este punto ya eso es suficiente sin independiente y en este caso Bueno pues
el mensaje no sé la tarea no se ha completado Claro porque ahí estamos usando el método primero el de riquelme
Sí exactamente que es básicamente un rico de bastante completamente entonces lo que vamos a
hacer ahora es que vamos a modificar esta máquina de estado para hacerla sincrona Vale entonces vamos a editarla
y lo voy a hacer esperando Voy a hacer aquí para que veáis que lo podéis hacer desde cualquiera de los dos tanto desde
workflow estudio como directamente aquí modificando el fichero el el sl entonces lo que tenemos que hacer aquí es detrás
del donde donde definimos el recurso que este en este caso el recurso es un enviar un yoga doble s batch le tenemos
Vale y vamos a ejecutar nuevamente la función lamp la Perdón la máquina de esto entonces aquí ya ya de entrada no
terminó automáticamente sino que está en el estado summit backshop o sea este estado ha enviado el yo Ha encolado el
wsh a ver si da tiempo a verlo Bueno ya ya terminó ya ya han terminado los dos el primero que que no se había
ejecutado porque no habían recursos y este segundo y este función debe ya tener Bueno ya debe haber ya pasó al al
siguiente estado Por qué Porque espero a que terminase de ejecutarse la tarea en WS Bach y luego es que se pasó al Estado
veis Aquí está solo en el estado bueno aquí en progreso y en unos segundos una vez que que hable ese batch haya
terminado pues pasa con el verde y se pasa el próximo sábado en notify aquí se enviaría un mensaje CNS
acá se ve bien bien las dos diferencias entre los dos diferentes métodos uno manda el evento y aunque no haya
terminado no me importa ahora con el punto zinc Espera que termine pero la máquina de estado está esperando está
aplicación que estáis construyendo hay aplicaciones que directamente podemos enviar o ejecutar una tarea y Y ya y que
son simplemente saber de que se ha enviado o se ha encolado la tarea suficiente y con otras pues hay que
esperar a que termine porque le tal vez la salida de esa tarea es la entrada al próximo estado exacto Por eso tenemos
estas diferentes formas y después hay una tercera forma de de hacer este tipo de esperas que es el
siguiente módulo el siguiente módulo que es el módulo 4 Vale entonces para el módulo 4 voy abriendo por acá
en el módulo 4 básicamente no vamos a usar el método zinc pero sí vamos a esperar o sea va a
haber un servicio que se va a ejecutar y ese servicio que podría incluso no ser un servicio de Amazon podría ser una un
servicio externo una vez que procese ese mensaje tiene que responder a la Api de de este función diciendo la tarea esta
ya la ha completado y le pasa un toque en específico y acá me preguntan si puede haber tareas manuales por ejemplo
una persona que haga algo este por ejemplo y con este White token es cuando puedes empezar a integrar esos procesos
más manuales no de Sí por ejemplo podría haber un proceso manual que que se entra a ese estado y ahí se
necesita un proceso manual de una persona que haga algo en particular y esa persona cuando termina a través de
un sistema toca un botón y Ese botón hace la llamada Api Gateway Perdona a este functions y le y le pasa como toque
en el token de esa tarea en particular que estaba haciendo esa persona y ahí se se continúa con el resto de la del flujo
Cuánto dura una máquina de estado y una máquina de estado de este tipo que es la estándar dura un año viva entonces vos
podés tener una tarea la mandas hacer algo por ejemplo hay un humano involucrado que o un sistema Legacy o
una comparativa de los dos tipos de máquinas de estado que hay pero si esta en particular que son las estándar hasta
un año pueden estar ejecutándose digamos que la máquina de Estados el estado se mantiene Durante un
año digamos Así que Ponla de los que estaban preguntando en el chat Este sí Durán mucho tiempo y es bastante
interesante también porque esta es una forma de integrarse con otros otras herramientas otros software de terceros
no como wc Bach que es nativo de Amazon y directamente la el esperar porque termina la tarea watch de forma nativa
se hace con el punto zinc que lo que lo vimos antes aquí te podrías integrar con otro Software que haga la tarea que sea
continuar con la máquina de estado entonces lo que vamos a hacer es vamos a probar eso ahora que es el wait for Call
backstang Machine o sea Tengo que abrir esta máquina de estado que ya la tengo creada también
vale la abrimos aquí a ver yo estoy viendo las instrucciones del laboratorio lo primero que tenemos que hacer es
directamente ejecutar la máquina de estado para ver lo que pasa vale no tenemos que pasarle ninguna entrada
inicia y va a terminar Claro ya esta máquina estaba leyendo las instrucciones Esta es una máquina de
estado que lo que hace es que no lo vimos lo Tendremos que haber visto si déjame dar atrás un segundo para ver la
en cola un mensaje en una cola sqs vale Y luego hay una función blanda que que está creada también que esa función
blanda procesa el mensaje de la cola sql Lo que sucede es y el motivo por el cual esta máquina ha estado
aquí como bloqueada en este estado porque no hay nada que le diga que ya se procesó el mensaje o sea yo sé que ya
ese proceso ahora lo voy a mostrar vale Pero el problema está en que si venimos a la definición
a ver si aquí la podemos ver no tendría que verlo tendría que verlo en la en la propia definición de la
máquina de estado en venimos nuevamente a Word Flow Studio definición cierra por acá un poco
vale aquí el estado este del de encolar un mensaje en una cola sqs Pues básicamente para ver toda la parte de
definición no tenemos el tipo de tipo tarea el recurso que es básicamente Enviar un mensaje a la cola sqs y este
Vale entonces esta máquina de estado se queda en este estado hasta que algún proceso o algo le diga que el la tarea
en particular se completó como haciendo una llamada a la Api de este función estoy pasándole un token el token
vendría en este campo o sea el mensaje que se pone en la cola sqs se estaría definido aquí y ese mensaje tendría el
título del mensaje y tendría un toque ese es el token que se tiene que devolver con la llamada la Api a través
particular tenemos pues tenemos Santiago el wave Ford token entonces lo que vamos a hacer para bueno Y una vez que que
la máquina de estado pues reciba esa Esa llamada la Api y se le pasa el token pues se pasa al siguiente estado que
puede ser notify o el que sea en este caso es uno defi subs es entonces lo que vamos a hacer es vamos a ver por qué no
por qué la máquina de estado se ha quedado Pues básicamente bloqueada en el primer estado vamos a verlo acá
vale sigue en este estado porque nadie nadie ha dicho que no aquí puede estar un año 365 días puede estar Entonces
cómo lo vamos a resolver vamos a implementarlo para eso tenemos acá en el chat Me están preguntando por
el pricing porque está todo el mundo y cómo me cobran Y cómo me cobran y se está esperando este este tipo de
máquinas ha estado de tipo estándar pagan por transición O sea si el estado está esperando un año y transicionó solo
una vez pagas por esa transición o sea así que no importa que esté esperando que esté ahí activo no no pasa nada hay
dos tipos de máquina estado estas que estamos viendo hasta ahora son las estándar y en estas solo se paga por
transición o sea aquí hay de inicio fin hay como máximo dos transiciones portándose pagaría el precio por esas
dos transiciones no importa el tiempo que se esté ejecutando vas a pagar por el servicio que está por
ejemplo en batch vas a pagar por Bach este que está llamando no sí sí eso sí eso sí por supuesto pero pero este
función en sí solo solo cobra en este tipo de máquina de estado de tipo estándar por las transiciones de estado
luego vamos a ver el otro tipo de de máquinas de estado que hay que si si cobra por tiempo Vale entonces qué
tenemos que hacer Tenemos que implementar el la el callback la llamada callback a a Steve functions para que se
para que esta máquina de estado pueda completarse en general entonces lo que tenemos que hacer es yo tengo que buscar
tengo una función blanda o sea recordad que esta máquina de estado lo que hacía era encolar un mensaje en una cola sqs
Entonces mi arquitectura en general Yo sé que tiene que hay una función blanda que es esta que se llama callback token
que procesa esos mensajes de esa cola vale Yo soy ya lo tengo predefinido aquí veis el Trigger es una cola es la cola
sqs que es exactamente la misma cola pero esa función esta función lambda no está diciendo no está reportando O sea a
este función no le está diciendo Ya terminé de procesar el mensaje x el que sea entonces por qué Porque lo tiene
es la última la anterior es simplemente un login para lograr en un mensaje del estado en lo que va
entonces aquí lo que se hace se hace una llamada a la Api de este functions con este Método en particular que se llama
sen task success y se pasa como argumento unos parámetros esos parámetros son el output el que sea y el
Tas token Este es el token el mismo token que recibe la función blanda que los recibe a través de sqs porque en
mensajes sqs Este función pone un token el mensaje lo incorpora entonces la función lambda lo que tiene que hacer es
completado la el procesado el mensaje y podrá continuar con la con la ejecución Entonces vamos a ya yo quite los
este mensaje esta máquina ha estado se va a quedar en este estado no va a salir de aquí porque ya el mensaje de la cola
secuencia se procesó Landa los procesos pero nunca vino y le y le reportó a este funyo pero si nosotros hacemos una nueva
este estado puso el mensaje en la cola la función lambda se disparó el Trigger de la función lambda es el acorde sqs
proceso el mensaje y luego lambda le reportó a este en función hizo la llamada esta llamada la Api de
defuntions con este método y le pasó el token que había recibido entonces se pudo transicionar al otro estado
se pueden hacer un montón de cosas todo lo que por cualquier actividad manual se puede hacer cualquier integración con
otros servicios se puede se puede hacer etcétera Vale entonces esto es este es el tercer patrón de integración que que
tenemos si veis aquí por ejemplo yo tengo seleccionado este estado O sea el input de este estado es el mensaje bueno
el mensaje que aquí es un mensaje que no significa nada porque no lo estamos procesando pero en el output sí que está
este mensaje que dice call backtage completito Ese es el mensaje que ellos estamos enviando aquí en el campo output
vale de la de que está enviando lambda lambda está haciendo esta llamada y está pasando un output y el token
Entonces el output es este mensaje que habría aquí entonces bueno el próximo estado podría leer de este podría
resumiendo tenemos tres patrones de integración principales respuesta a la solicitud ejecución
ejecutar un trabajo de forma síncrona y esperar la devolución de la llamada con un token de tarea son los tres que hemos
visto los tres funcionan para cosas un poquito distintas lo cual es importante entender para cuándo usar uno o el otro
el respuesta de la solicitud ese envías disparás y seguís adelante por ejemplo para mandar un mensaje a un tópico un
sns o algo así que no te importa o si querés invocar una función de lambda pero no te importa el resultado
el punto zinc por ejemplo invocas una función de lambda y te devuelve el resultado enseguida o el de callback for
token si Tenés algún sistema Legacy algo manual o otro servicio el cual está integrando este entonces viendo
dependiendo de los casos de uso que tengas el patrón de integración que que pueden usar Y si tienes más preguntas
pregúntalelas en el chat que yo estoy respondiendo acá a tope muy bien Venga pues eso vale hemos ya
con esos Ese ha sido el cuarto módulo Entonces el quinto módulo vamos a ver unos estados especiales son estados
Choice y map Este es un poco más digamos complejo el estado Choice que lo estáis viendo así el estado Choice lo
que nos permite es hacer una una ramificación de la máquina de estado basado basados en un en algo pues
tomamos una decisión y ramificamos hacia una una hacia un lado de la máquina de Estados o hacia otros nos permite tomar
procesar un o sea el estado más Recibe un un Jason de entrada vale Y tiene un iterador implementa un iterador que
recorre todo el Jason y procesa o ejecuta las tareas correspondientes para cada uno de los elementos de ese de ese
de ese Jason basado en el iterador Entonces por ejemplo y lo otro que tienes que podemos jugar con la
concurrencia ese Jason lo podemos procesar digamos esos elementos dentro de ese Jason podemos procesar uno a uno
procesen en paralelo esos ese input que vienen en el Jason entonces en esta laboratorio vamos a ver
los dos estados el Joyce y el map en un en un único escenario que va a ser un poquillo un poco más complejo
Vale entonces Esta es la arquitectura que vamos a ver o sea ya yo en la cuenta tengo desplegado hay una una tabla en
Dynamo y una máquina de estado que la vamos a ver a revisar ahora en detalles esa máquina de estado lo que hace es
basado en un filtro que tiene inicial que ese es el digamos el estado Choice decide si no perdona lo primero que
haces leer un un Jason de entrada y ver y tirar sobre todo el jison porque ese va a procesar cada uno por cada uno de
esos mensajes en el Jason 9 o de elementos dentro de dentro de la raíz del Jason va a ejecutar la máquina de
estado va a ser el Joyce y ese Joyce o va a ir o a una a un a una ramificación de la máquina de estado o a otro pasado
en qué en una en un campo que se llama paraiority básicamente aquí es un campo que vamos a pasar en el mensaje si el si
el el evento o la tarea es de prioridad alta irá por la por el lado derecho de la de la máquina de estado digamos
mirando esta imagen y si el mensaje es de prioridad Baja pues irá por la otra ramificación de la de la máquina de
estado y eso lo va a hacer por cada uno de los elementos que hay en el en el Jason de entrada
entonces aquí en nuestra máquina no abrió No esta es la máquina de estado si venimos a la definición a editarla
para ver el en workflow Studio que sea un poco forma visual un poco más agradable Vale pues este es el
pues la máquina de estado básicamente aquí lo que tenemos es el estado map que es el primero que os
comentaba dentro del Estado mapa el que vamos a ver ahora es el estado el tipo de estado map inicial que se llama
inline que es el que recibe el Jason de entrada un array en formato Jason de entrada y procesa itera sobre ese array
hay un esto es el estado más distribuido es una versión nueva del Estado map que nos permite hacer
tener más concurrencia y procesar muchísimo más información en paralelo y en lugar de usar un Jason central lo que
básicamente lo que hace es un Back y tera sobre los elementos de un paquete S3 y esto nos permite ejecutar hasta si
no recuerdo mal hasta Diez mil ejecuciones en paralelo de la máquina de estado pero ese es el distributemap
nosotros vamos a ver aquí en este ejemplo el in Line map que es el por defecto que el digamos el inicial el
primero que que sacamos vale Entonces qué tenemos que revisar aquí si vamos al estado más al al Estado Maxi
Vale Eres el modo inline Y entonces aquí Tenemos aquí lo que estamos haciendo es por ejemplo Aquí está aquí abajo tenemos
que especificada la concurrencia para esta primera prueba que vamos a hacer la concurrencia está puesto en uno máximo
estado Eso es en el estado de inla ya antes mencioné que para para el distribute se puede hacer un poco más
campo acá que dice provite path esto lo que va a hacer es dentro del Jason de entrada que le vamos a pasar que lo
vamos a ver yo tengo que especificarle dentro de ese arreglo donde está Cuál es el Dónde está la lista sobre la que
tiene que iterar Vais a ver que el Jason que nosotros tenemos tiene bueno aquí que se llama Data y luego tener una
lista como valor que tiene todos los elementos a los que va a alterar supongamos que tenemos un corazón más
complejo Vale entonces aquí yo tengo que especificar exactamente cómo llegar hasta hasta la lista sobre la que tiene
que iterar el estado mapa Entonces qué más tenemos que haber en esto en esta parte que sea interesante
vale aquí creo que ya esto es sobre el estado más luego si venimos al al Estado Choice aquí es donde está
un poco la inteligencia vale aquí el estado Choice lo que va a hacer es tiene diferentes opciones vale basado en
reglas es como se llaman si venimos aquí editamos una por ejemplo lo que hace es mirar dentro del mensaje dentro del
input el campo priority y si es igual low lo que hace es pasarlo el próximo pregunta antes de movernos que me acaban
de hacer en el chat y me parece que está bueno decirlo me dicen si con este map in Line solo puedo tener hasta 40
elementos en mi Jason o puedo tener más puedes tener muchísimos más todo lo que quieras lo que en paralelo solamente
pueden se estarán procesando 40 como máximo digamos y este functions va a gestionar el procesarlo en batch de la
cantidad de concurrencia que vos le des entonces vos no tenés que gestionar eso pasar 40 ponele que le pongas al máximo
cuarenta después de hacer tus cuarenta después de hacer otros cuarenta y así va a ir enterando sobre la lista y esos