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. Si te interesa aprender sobre la creación de aplicaciones web, te recomendamos nuestro artículo sobre Desarrollo Frontend desde Cero: Creando Tu Primer Sitio Web. 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. Si deseas profundizar en el manejo de bases de datos, te sugerimos leer nuestro artículo sobre Aprende MySQL: Introducción y Primeros Pasos para Crear Bases de Datos.
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
cuarenta van a ejecutar en paralelo y con el distribuidor pasa lo mismo pero en versión de Diez mil a la vez
a medida que va que van terminando unos Pues a ver pensar que esto puede ser una máquina está mucho más compleja y pueden
tener muchas más ramificaciones entonces unas tareas terminará antes que otras pero en paralelo solo con el inline solo
podrán haber cuarenta ejecuciones de forma concurrente digamos con el con el distribute esa mucha mayor escala
vale muy bien buena pregunta y bueno entonces en el estado Choice Pues eso lo que se hay reglas el concepto de reglas
y luego tenemos que especificar las condiciones de esa regla este estado Choice en particular lo que hace es
mirar dentro del Jason de entrada el campo priority y el valor si dice low O sea si el campo es low pues lo envía al
Estado lo W priority y si es que se está abajo lo inserta en una tabla de Dynamo entonces aquí por
ejemplo para mostrarles un poco que otras opciones se pueden hacer primero los estas reglas se pueden
complejizar bastante más las reglas que tenemos creado Ahora son las reglas simples pero Podrían haber
reglas más complejas utilizando ants y ors por ejemplo se pueden hacer notes o sea cuando no
venga algo en un mensaje en particular están los operadores están bueno operadores aquí estamos usando el igual
pero pueden haber otro tipo de operadores Y luego el valor puede ser de tipo String que es el que estamos
utilizando nosotros que directamente estamos mirando que exista que venga este String pero pueden haber también
están números etcétera valores boolianos etcétera entonces aquí se le se puede ahora hacer bastante
Se le puede dar bastante inteligencia a la al Estado Choice Entonces yo creo que con esto ya podemos ejecutar
la máquina de estado aquí nosotros podríamos Añadir otra regla más etcétera Pero bueno lo vamos a dejar así
vamos a por acá ejecutar Entonces el input cuál es Es que recordáis en la en el estado map os
mostré que en la parte de la configuración hay que especificar Cuál es el path dentro del Jason donde está
la lista sobre la que tiene que tirar y le puede habíamos puesto que era de Data de hecho lo tenemos Si lo muestro por
aquí lo tenemos eso es una imagen de las instrucciones de laboratorio vale aquí no solo especificamos dentro del Jason
de entrada Cuál es el el path a la lista a la raíz sobre el sol que tiene que tirar Entonces eso es lo que yo lo estoy
pasando como entrada este este json completo pero le estoy diciendo en la configuración o sea en la lista es el
valor que está dentro Vale entonces aquí lo que tenemos ahora Son seis tareas que procesar en paralelo o no
depende la concurrencia porque la concurrencia de momento la pusimos en uno no va a haber concurrencia o sea va
rápido creo que ya terminó tarda yo creo que ya terminó entonces aquí lo que nosotros podemos ver ahora
que lo voy a mostrar aquí en el Jason de entrada que es este cada uno de las órdenes tiene una prioridad o sea High
High está bajo Slow entonces en base a eso se ramificará por un lado u otro de la máquina de estado y acá me están
preguntando en el chat y justo viene acorde a eso qué pasa si porque acá No hay un default que
ejemplo esa estado esa orden viene sin nada va al Estado de fold que ahí no hace nada aquí no hace nada aquí no sé
terminará en este caso terminará Sí Sí exactamente ahí está la respuesta para que me preguntara el chat que justo vine
a este momento y dije tal voy a preguntar a ver muy bien Entonces cierro acá y volvemos a la ejecución que es
esta Bueno ya había terminado entonces aquí lo que nosotros qué podemos ver ahora teníamos tres seis mensajes que
este funyo se los empieza a contar desde cero vale tenemos el cero al más creo que tenemos siete tenemos siete
y este función nos empieza a contar del cero al seis el sistema si venimos al cero es el primero y aquí lo que quiero
mostrarlos es por ejemplo este en la prioridad el input era Hi entonces vino a insertar el elemento en la tabla de
Dynamo de B lo mismo pasaba creo si no recuerdo mal con el uno con el 2 Y luego con el 3 el input Slow
y no sé si visteis aquí cambio y propuso el colorcito verde en el logo o sea aquí hay un cambio por basado en el en la
prioridad vale al cambiar la prioridad del mensaje pues se ejecuta una tarea u otra Entonces estos mensajes Si nosotros
vemos aquí la forma en la que se procesó vamos a ver que por ejemplo las estos secuencial básicamente se empieza uno
cuando termina el otro en total la máquina de estado tardó casi que un segundo en completa o sea en procesar
los los seis siete mensajes que tenía Si vemos aquí hasta que no termina un estado por ejemplo hasta que no termina
termine este el primer mensaje era del tipo High entonces una vez que termine esta esta iteración se va a la próxima y
aquí lo mismo el segundo mensaje también era de tipo y hasta que no termine pues no viene así
es completamente secuencial entonces lo que vamos a hacer ahora es que vamos a modificar la concurrencia Vale entonces
ejemplo vamos a poner la concurrencia 2 aquí va a procesar dos mensajes a la vez Entonces aplicó y salgo salvo y
ejecutamos y voy tengo que copiar el Jason de entrada no tengo por acá vale copiamos es el mismo Jason veis que
tenéis 7 mensajes y que este función los cuentas de cero por eso decía que de cero a seis en las iteraciones lo
si venimos aquí a las iteraciones Pues aquí es más de lo mismo no hay nada distinto digamos pero lo que es distinto
en dependencia de las iteraciones que hagamos o sea de las ejecuciones que vamos puede terminar más o menos
iniciada y luego dice nuevamente iteración iniciada aquí que está iterando dos veces está procesando dos
mensajes a la vez vale una vez que terminan aquí en algún momento tendrá que decir tags success
las dos tareas los dos primeros mensajes eran una escritura en Dynamo de b y luego se pasa la primero se inicia otra
iteración y un poco más un poco después otra pero se están procesando los mensajes de de en este caso de dos en
aumentar la concurrencia utilizando estados Maps inline que no es lo mismo que el distribute
y acá puedo escapar Mostrar la vista de tabla no que es un poquito más clara aquí creo que se volvió Ahí deberías
poder hablar sí aquí podemos ver la duración no sé si esto lo puedo llamar ahí se pueden ver un poquito más la
empezó la iteración vale Y aquí están las dos primeras iteraciones los dos primeros mensajes empiezan a la misma
vez termina y luego se empiezan los próximos dos los otros dos a la misma vez lo que pasa que uno termina más
tarde que otro por qué porque uno tiene que escribir en Dynamo y el otro directamente es un subsés Este es el del
la cola de Low priority entonces una vez que termine este inmediatamente comienza el otro que es una escritura en Dynamo
Vale y justo cuando el número dos Estaba terminando termina empieza empieza bueno los dos últimos entonces ahí aquí se ve
un poco más la la Pues eso la iteración y la concurrencia sobre todo la forma de table View para este tipo de
Maps es bastante útil porque hay no se te mezclan todos los mensajes sí sí sí sí sí sí sí está muy bien vale pues
pues bien ese es el módulo 5 del laboratorio o el workshop Entonces vamos al módulo 6 en el módulo 6 lo que vamos
ver Cómo podemos jugar un poco transformando la entrada y la salida y cómo seleccionar ciertos campos de la
entrada porque el mensaje de la entrada de un estado a otro puede ser puede tener más información de la que yo
necesite y necesito solamente una porción del mensaje luego en la salida la puedo combinarla con con la entrada o
sea tener la entrada de salida combinarlas y está bastante interesante las opciones que hay y vamos a ver
también otro concepto que son las funciones intrínsecas que con el propio está en función se pueden hacer ciertas
funciones por ejemplo sumar valores o calcular promedios etcétera entonces lo que vamos a hacer ahora es
aquí en este en este laboratorio sí que vamos a crear una máquina desde cero si no recuerdo mal
Sí aquí vamos a crear una venimos a este Aquí vamos a crear una máquina de estado para que veáis Cómo es el proceso vamos
a diseñar una un World de forma visual y el tipo de máquina de estado que vamos a escoger es el tipo Express luego no
perdón es que me he confundido estaba en el módulo 6 perdón vale No en el módulo 6 vamos a crear una
a pasar a cero entonces aquí lo que tenemos que hacer es aquí tenemos opciones Como por ejemplo ponerle un
comentario a nuestra máquina de estado podemos dejar lo que está por efecto ponerle algo que nos guste o no
siendo los pasos del laboratorio le vamos a cambiar el nombre y vamos a tenemos que escoger Cuál es la función
vale lo que tenemos que hacer ahora es vamos a ver qué tipo de opciones tenemos para filtrar la entrada y la y la salida
lo primero que vamos a hacer es vamos a ir a un filtro en la entrada o sea aquí lo que vamos a hacer ahora es
poner en la entrada y ahora os explico Qué significa esto que aunque este en particular Ya lo
habíamos visto o uno muy parecido creo que estamos haciendo es que del input del el J son de entrada que le vamos a
pasar le estamos diciendo que se quede solo con el campo con el con el valor de lambda Y ese es el que le pase la
función lambda vale o sea nosotros podemos pasar un Jason muy complejo y aquí estamos cogiendo el pub específico
vamos a ponerlo de esta forma aquí hay muchas combinaciones es un poco complejo de entender la primera vez hay
que jugar un poco con con esto aquí lo que estamos haciendo es estamos combinando el input de la función blanda
con el el output propiamente que va la función lambda y va a resultar en una Ay perdón en algo que se llama resulta y
ese resultado va a estar dentro de un Jason que va a tener este camino sino Data y lambda resource lo
la función blanda O sea la salida de la función blanda la vamos a combinar con la entrada de la función lambda en este
campo o sea en un yeso que tiene esto Data y luego lambda resource pero luego la salida del estado en sí no la función
lambda la vamos a filtrar por Data de forma tal que solo Vamos a ver lambda resource vale Entonces esto a ver
definición en el formato acl y la visualmente el graf next y le vamos a nuestra función blanda
le vamos a poner el nombre input output processing machine vale Y luego y esto aquí viene algo que
nos preguntaban antes aquí nosotros estamos creando la máquina de estado por tanto tenemos que uno opciones son o
crear un rol que este rol en particular tendría que tener permisos para ejecutar la función lambda o seleccionar un rol
perdón a usar el rol este que ya que ya existe pero pero eso esto responde un poco la pregunta que no sé si nos
opciones de configuración que los mostré como ejemplo login Si queremos lograr y tal lo vamos a dejar por defecto
y aquí hay algo que no tenía un espacio al inicio salvamos Vale pues ya tenemos creada la función
como input le vamos a poner este este mensaje que tenemos acá vale Aquí sí veis tenemos un mensaje que tiene
quiero revisar si no si no que se me quedó una cosa por poner en la función me van a copiar acá vengo
a la máquina de estado y modifico porque me falta una cosa por añadir lo que tiene Sí sí sí me faltó aquí en
lo tenés todo no sí sí yo creo que lo tengo todo Sí es que hay una amor en el próximo paso Yo vengo siguiendo el
workshop contigo y no vi que te olvidas nada pero claro es que tengo a ver si lo tengo bien tengo vale la función blanda
el tengo la configuración de Api párame de la función lambda así tengo el input el output lo tengo también
que lo que lo quité entonces está bien entonces Está bien entonces Está bien nada Y es que me pareció estamos
para simular Cómo cómo vamos a manejar la entrada y la salida de cada uno de los de los estados entonces aquí
nosotros podríamos poner hacer cosas como demostrar esto podemos Mostrar esa slide que muestra como el estado procesa
un poco toda la información para que entiendan lo que están viendo no porque a veces la gente piensa entrada y salida
y ya está pero no hay como un montón más de cosas que están pasando esta imagen que está mostrando ariam a
mí me salva cada vez que trabajo con steph fanctions yo vuelvo a esta imagen acá te muestra la entrada a al este al
Estado Y te muestra la salida y todo lo que ocurre antes de llamar a la tarea porque esto Solo ocurre en los estados
sí sí sí sí sí sí sí aquí son por ejemplo este es el todos los posibles las posibles formas Y de dónde manipular
los los estados dentro de una transición vale Entonces nosotros podemos en el estado de entrada Pues eso pasamos un
Jason de entrada el que sea luego podemos para antes de ejecutar el evento podemos filtrar ese Jason con lo con lo
que se llama input bath que lo lo modificamos hace un momento luego lo podemos Añadir ciertos parámetros Y eso
de para el servicio en Sí luego ese Servicio al terminar de procesar el hacer la tarea que tiene que hacer pues
eh da un output Y ese output es lo que se llama el el sobre ese output nosotros podemos ejecutar una cosa que se llama
resolve selector Y eso lo podemos luego a través del Resort Paz combinar por ejemplo lo que
hicimos en hace un momento fue combinar la entrada con la salida o sea nosotros en el Resort pusimos una configuración
que combinamos la entrada de El input en general de la Perdón el input de entrada al servicio con la salida y eso lo
poníamos en el resolpad y especificamos un campo específico dentro del Jason que queríamos utilizar una aquí específica y
finalmente está o hay otra o será otra etapa más que es el output que este ya es la salida final del Estado Esto es lo
que vamos a ver como salida del estado que es lo que se podría utilizar luego en otro en otra en otra iteración y tal
con input si vos no lo agarras ese input lo vas a perder en la salida del output no va a estar el input de ese estado y
capaz lo necesitas más adelante por eso también se combina la entrada con la salida este porque es muy común te haces
una máquina de estado empezás a hacer cosas y cuando te querés dar cuenta perdiste el estado inicial de la máquina
de estado porque eso te fue perdiendo Entonces es importante ir procesando ese estado y limpiándolo y que te pase la
de un estado tiene información que no es necesaria y para hacer más liviano todo el procesado Vale entonces aquí nosotros
lo que habíamos O sea si si intentamos analizar un poco lo que habíamos visto en la configuración antes de mostrar
esto incluso vamos a ver si lo puedo mostrar de forma me podéis entender a ver si me logro explicar correctamente
lo que lo que en la ejecución lo comparamos con la ejecución o sea en mi ejecución la entrada era de Jason de
dije filtra por el campo lambda por la quilanda la quilanda aquí es Esta que está acá vale Esta es la que se
le pasa a la función blanda en Sí para la ejecución y luego en la salida la función lambda pues hace lo que tiene
que hacer que no lo hemos mirado y le dije le dijimos al al a la salida combina en el Resort Ay perdón combina
en el Resort path la entrada original con el resultado de la función blanda Y eso aquí no lo vemos ahora pero lo que
lo que está sucediendo es que él creó no lo vemos y ahora voy a explicar porque él creó este campo que se llama lambda
lo vimos hace un tiempo o sea cuando ejecutamos creo que fue la llamada sns vimos que cuando haces una llamada un
servicio de Amazon el servicio te responde con metadatos información propia de la ejecución Pues
aquí hay un montón de cosas propias que añade la la que son parte de la propia ejecución de la función lambda pero
añade la función lambda el output es este campo que se llama payload aquí si vemos no lo no voy a mostrarlo Pero esto
lo podéis ver luego el la función lambda lo que hace el lo que hace en sí la función lambda escoger este valor de
aquí que dice q y le dice Hello y le pone lo que dice por eso que dice Hello hay doble Entonces aquí estamos
que es todo esto vale con el valor lo que venía en la entrada que son los el value los los valores
ahora bien Por qué no vemos por qué no vemos deita porque luego esto eso eso que yo mostré esto que hay aquí es el
resultado resulta pero luego la oputa en sí que es el pass yo le estoy filtrando por Data entonces aquí realmente
nosotros lo que vemos aquí si yo pudiera pasa que no creo que no sé si mejor verlo en simulador Aquí yo estoy
filtrando después de cada value vendría Data y dentro estaría de función lambda bueno no no nos vamos a liar mucho con
es lo que queríamos Mostrar que se llama Data Flow Simulator en la cual nosotros podemos poner por ejemplo voy a copiar
puedo poner un input en este caso por ejemplo para esto eso es para ir viendo lo que va a suceder si yo pongo lambda
si yo pongo lambda o sea aquí en el input yo puedo ir viendo lo que va a ir sucediendo y esto lo puedo ir pues lo
podéis ir probando aquí tienen ese Resort selecto el Resort y podéis ver o sea cómo se modifica la entrada y la
salida de cada a través de cada uno de estos de estos saltos Vale entonces lo suyo sería por probar un poco con esto
primero para tener una idea de Cuál es la configuración que habría que poner en la en el estado de la de la máquina de
estado en mi opinión Esta es una de las cosas más difíciles de este function es muy complejo de explicar y de
entenderlo sin estar probandolo digamos es bastante complejo Pero bueno el mensaje es que existen estas
funcionalidades para para manipular los mensajes de la de entrada y salida de cada uno de los estados
y sobre todo para hacerlo más simple el procesado pero no tienes mucho sentido que si un estado en particular va a usar
que se yo un array pequeño o una lista pequeña dentro de un Jason pues reciba al input completo tú vas filtrando y vas
te vas quedando con lo que necesitas y luego lo puedes combinar de nuevo con la con el input y puedes pasar al siguiente
estado pero es con muy complejo de de explicar y y entender Si no lo si no lo probáis entonces la recomendación es
que que vengáis aquí al laboratorio lo probéis vosotros mismos y y vais viendo que qué by necesitando
adelante vale Vamos pues sigamos hacia adelante si tienen preguntas las ponen al chat que yo se las hago en vivo si
son relevantes O sino las respondo en el chat vale muy bien Vamos al módulo 7 que en el módulo 7
esa máquina de Estados Esto me lo vienen me lo vienen preguntando bastante Así que para todos
los que me preguntaron Cómo ejecutar en el Front este o desde el apigüe ahora bien Sí aquí vamos a integrarlo con app
Gateway y lo que vamos a hacer es Pues eso vamos a tener un que va a ejecutar la máquina de estado detrás Vale
sincrónica con Apple o sea el concepto es el mismo en una en una variante en la sincrónica at&t va a mandar a ejecutar
la máquina de estado y no voy a esperar el resultado o sea directamente va a responder que Oca
y en la otra en el modo sincrónico va a esperar al resultado de la máquina de estado entonces lo que
vamos a hacer ahora esto es alto nivel arquitectura que vamos a utilizar la máquina de estado
en esta se iba se iba a ser una máquina de estado del tipo Express y ya luego Al final este módulo si quieres explicamos
un poco algunas diferencias entre Express y estándar Vale entonces lo que vamos a hacer aquí
del tipo de tipo paralelo lo que hace Es que para una entrada en particular ejecuten paralelo tres
da tres tareas en paralelo vale para la misma entrada entonces este estado en paralelo lo que nosotros vamos a hacer
vamos a ejecutar tres funciones lambda manera funciona slanda la primera es esta que está aquí que le vamos a poner
22 números de entrada Entonces esta función lambda si estoy viendo bien las instrucciones se llama
mismo que tiene el laboratorio varios Vale entonces este estado lo que va a hacer es ejecutar esta función
y esta función blanda o sea otro estado que se llama ver Ash value y este este estado va a ejecutar una función lambda
que se va a ver a funcionar Vale entonces todo esto lo dejo por defecto y luego en el output tenemos que
hacer exactamente lo mismo desmarcar el filtro del output que no es necesario y transformar el resultado y
vamos a primero a poner aquí para que todos para que se vea bien lo que estamos haciendo sumado un poco vale
Esta es nuestra máquina de estado un estado en paralelo que recibe una entrada y ejecuta tres estados en tres
funciones lambdas en en paralelo uno que calcula el valor la suma de valores que le vamos a pasar la entrada otra que
calcula el promedio y otra función lambda que calcula el mínimo y el máximo Y eso eso va a ser la respuesta la
combinación de todo eso va a ser la respuesta ipi hay que güey básicamente va a estar va esta máquina de estado A
mí me encanta este paralelo porque va a esperar que todo termine en una forma y lo va a agarrar todo y lo va a pasar
para abajo entonces es como no tenés que gestionarlo tú de Ay cuando termine este Cómo agarro los resultados
de la máquina de estado next y Aquí vamos a ponerle un nombre a esta máquina de estado y tenemos que
escoger un rol que creo que ya tenemos un rol creado si hay un error creado que se llama continue y un error
en el laboratorio pues hay un paso de configuración y hay una plantilla que formation que tenéis que desplegar y
Vale y lo creamos vale ya estaría Ya por aquí estaría creada La máquina de Estados entonces yo
voy a copiar la rn porque lo voy a necesitar si no tengo Si no vengo aquí nuevamente y lo que vamos a hacer ahora
es ir a Api Gateway Vale entonces en la consola de IP hay ya tenemos creada creado un en Point que es
vale dentro del método post lo que tenemos que hacer es editar la integración integration request y aquí
tenemos que hacer varias cosillas Bueno lo que vemos que vamos a hacer es que vamos a ejecutar vamos a decirle a esta
correcto luego el servicio que vamos a ejecutar es este functions el método que vamos a utilizar es un
método post y vamos a pasarle el nombre de la acción que queremos ejecutar el nombre de la acción
en este caso ahora para esta ejecución va a ser Start execution vale venimos aquí estar execution Y por
último Bueno yo tengo que especificar también aquí el execution roll que es el el rol que va a asumir app Gateway para
si es importante recordar que todos los servicios todos los recursos senadores nacen sin roles son creados sin permisos
Entonces como necesita permisos para poder no sé invocar a estas funciones de lambda El eBay necesita permisos para
poder llamar al steph este así que eso es algo que siempre falla si no le pones el rol con los permisos correctos
aquí lo que este es el rol que vamos a utilizar Este es el ARN el rol que es lo que yo tengo que poner ahora este error
tiene permisos tiene full Access no sigue las buenas prácticas del punto de seguridad pero bueno para el objetivo
de laboratorio está bien en un entorno real pues no Debería ser full Access lo que tenga a este
pero bueno como digo para el laboratorio creo que cumple lo necesario y luego entonces ya tengo el ARN me están
preguntando si tiene que ser sí o sí un post para llamar a este estar execution sabes No lo sé no estoy segura habría
que mirar en la documentación tal vez dependa del servicio que que está intentando integrar pero no lo sé la
verdad que no lo sé tendríamos que lo he probado con post pero no No sabría decirlo habría que mirar la
el execusion roll déjame que estoy comprobando que esté todo bien la región este functions la
acción que es Start execusión y un troll vale por defecto vamos a dejar el Time out por defecto y ahora y luego igual
que vamos a hacer es vamos a venir a ejecutar hacer un test vale lo que vamos a hacer en el test es
vamos a copiar en el body del test este mensaje que ya yo tengo aquí creado esas son los laboratorio y lo que tengo que
esto así como cortado a la mitad y no no se ve muy bien entonces aquí en este input lo que establece Este es el input
Esto es lo que lo vamos a pasar a la llamada a la appy entre las cosas está un array o sea una lista con valores y
estos son los valores que luego la máquina de estado pues va a calcular el promedio el valor máximo el mínimo y los
va a sumar también pero vamos a hacer un test entonces aquí cuando nosotros hacemos el test lo primero que vemos es
que bueno la función lambda está O sea la lápiz es la latencia de respuesta fueron 119 milisegundos y hay realmente
en el body no dice nada en el body lo de la respuesta básicamente lo que dice es el ARN de la de la de la máquina de
pasando aquí que la máquina de estado que hemos ejecutado O sea la hemos ejecutado de forma asíncrona entonces
respuesta diciendo pues ya ya inicié la ejecución Pues con eso es suficiente pero pueden haber otros casos de uso en
recordar un poco pues eso la latencia que tuvimos y el mensaje de respuesta del Body Ok entonces lo que vamos a
hacer ahora es que vamos a modificar la el integration request y vamos a Añadir vamos a cambiar la
a cambiar la acción y vamos a poner una Start sync execusión es distinto esto es una llamada una ejecución de la máquina
entonces al test nuevamente para el test ya tiene nuestro ya tiene el input que es el mismo y lo que vamos
menos la misma un pelín más bueno anteriormente creo que eran 120 milisegundos 119 aquí un poco más 194
Por qué Porque a pie Gateway esperó por la por el resultado de la ejecución de la máquina de estado y aquí vemos en
general todo el resultado por ejemplo aquí si filtramos un poco podemos ver bueno que hay más detalles
como información de billing Y tal Pero está el input por ejemplo que son los valores de entrada y luego tenemos en el
output que es esto que está acá que tengo aquí marcado tenemos la suma de todos los valores de entradas tenemos el
promedio que es 27.8 Y tenemos el valor mínimo y el valor máximo o sea Api Gateway está recibiendo este
functions la salida de la ejecución de la máquina de estado y está respondiendo en el bodytech a su petición con con
esos valores Vale entonces y bueno además añade otros otros otra información aquí como billing
y tal eso habría que en principio se podría filtrar y tal Pues eso estas es una forma de ejecutar
e integrar a Gateway con confusions y por en como parte de este lab en particular también quiero
capaz ahora también podemos Antes de hablar de la amortización de flujos Exprés podemos contar un poquito de las
diferencias porque yo creo que ahora sí ya empiezan a ser más relevantes de Qué es una máquina estándar que es lo
que veníamos haciendo hasta el momento y que es una máquina Express habíamos dicho que las máquinas estándar tienen
un año de vida este las Express como su nombre lo dice son un poquito más cortas solo cinco minutos
este y la razón es que que son para cosas totalmente distintas no cuando nació este functions se pensó como una
orquestador a largo plazo como para hacer procesos para hacer work flows empresariales y la gente lo empezó a
adoptar como Esto está buenísimo para hacer computaciones efímeras y empezó a usarlo un montón con serverles y ahí
empezamos a escuchar a los clientes y se desarrolló lo que son los este las máquinas Express que son para ese tipo
de cuando hay mucho volumen de datos para computaciones efímera procesamiento de datos cuando Tenés una carga muy
grande este vamos a usar eso pero la la cargas por poquito tiempo sí sí sí sí sí y luego también hay Bueno hay
diferencias en cuanto a al precio y cómo cómo se Cuál es el Cómo se el costo de cada una O sea ya habíamos hablado que
request vale Y en la cantidad de gigabytes por hora que que necesite la ejecución de la máquina de estado y
luego hay diferencias en cuanto en cuanto a Qué tipo de cosas puedes hacer con cada una parte del tiempo de
aplican a estrés solo puedes hacer el típico riquestan response el básico el de punto zinc y el de
luego la estándar Pues solo soporte de invocaciones de tipo sincrónica y más o menos Estas son las las
tres el número 13 que es para flujo sanidados como dentro de un flujo una máquina de estado estándar puedes
integrar una máquina de estado Express y y lo lo una eso es súper interesante la la posibilidad de hacer flujos
anidados pero también es muy interesante ver como el costo como para si optimiza si en un tipo de flujo específico
utilizas una máquina de estado Exprés y no una una estándar como puedes utilizar los costes de en general de toda la
este tenés que pasar por transiciones y hacer cosas rápido Sí sí sí sí sí sí muy muy bueno tenés idea no me acuerdo
cuando me lo probé no no andaba para Express pero ahora lo busco y Expreso un cinco minutos y última vez para procesar
estado más largas no creo por eso por eso pero bueno ahora ahora lo reviso igual en la documentación y y se los
respondo pero no me parece Yo creo que solo está para estándar Sí sí pero podés hacer anidados y cosas interesantes por
ejemplo con Express distribuidorm estándar pues mezclamos Vale entonces lo último que quería
mostrar en este en este laboratorio en particular la parte de monitorización cómo monitoreamos funciones lambda
esta misma consola pues puedes ver las está cargando puedes ver las ejecuciones que ha tenido
la máquina de estado en este caso ha tenido dos una de la de la de la llamada asin asíncrona y la otra de la llamada
síncrona antes Esto no se podía ver y la única opción de verlo era a través de glow Watch a través de estas métricas
aquí de los blogs de glow Watch que también es una opción hace aquí directamente en la misma consola está en
functions para las máquinas de estado Express está en bebida ciertas métricas de Clow watch que las podemos ver aquí y
directamente desde esta consola de este función o ir a Cloud watch a verlos aquí están todos los logs de
de las ejecuciones de esta máquina de estado hasta antes para la máquina de estado estándar nosotros estábamos
viendo no no era esta vista no era esta vista con Clow watch vale aquí pues bueno ya lo lo podemos ver de esta forma
y luego lo que sí estaba muy bueno que es lo que es esta nueva funcionalidad para visualizar que no sé por qué le he
dado enable 20 veces y siempre me sigue preguntando lo mismo Pues aquí ya me salen todas las
ejecuciones y yo podría entrar a una ejecución en particular como mismo hicimos con las máquinas de estado está
ver lo que se hizo en cada uno de los estados la entrada la salida etcétera como mismo habíamos visto en en la
Aparentemente hasta hace poco Vale pues nada Eso es así como integramos en este módulo básicamente hay varias
luego como pues está paralelo y ejecuta ejecutarla desde ejecutar la máquina estaba de forma sincron y asíncrona Y
por último quería una cosa que mencioné antes y no luego no lo no lo hablé si Nosotros venimos aquí en integration
request esto es algo que hay que tener en cuenta cada vez que integremos o sea Al final este función puedes tener
muchos servicios y cada servicio tiene su propia particularidad y y su propio Time out muchas veces entonces hay que
tenerlo en cuenta porque eso influye en toda la máquina de estado por ejemplo el tema por defecto de esta integración que
lo que va a pasar Es que la Api Gateway va a responder como un Time out a la petición original en lugar de
esperar que la máquina de estado haya terminado eso pasa con lambda también también pasa con las funciones lambdas y
es un valor que modificable aquí o sea aquí están 29 segundos Pero podemos aumentarlo un poco pero hay que tenerlo
en cuenta y porque porque si no podemos empezar a de repente recibir errores y es básicamente porque no estamos
teniendo en cuenta los tiempos los Time de cada uno de los servicios que hay en el medio que ya aquí hay dos
o tres en este caso Api Gateway este functions y y lambda pero Podrían haber muchísimos más es decir que tenerlo
tener en cuenta Vale pues ese es el módulo 7 el último módulo para hoy y así que vayan dejando
complejo es manejado de errores que esto es bastante importante también porque hasta ahora bueno todos nos está
saliendo bien pero en la vida real las cosas fallan y bastante Entonces lo suyo es que seamos capaces de manejar ese
tipo de errores y para poder entender y saber cuándo falla una cosa y qué solución le podemos dar entonces lo que
si hay Quiero una función que se llama error handling custom error function Sí sí hay una máquina de estado que tiene
un nombre parecido que es esta que es la que vamos a ver luego pero mientras voy buscando la función planta
en adolescencia nos encanta nombrar cosas de la forma más clara posible o sea en esta función lambda si la vemos
ahora pero si vemos esa función lambda o sea esta función lambda está directamente lanzando un error vale está
lanzando un error es una función lambda que bueno pues completamente básica se ejecuta la función crea un mensaje de
error de este tipo con un nombre y un mensaje el nombre de el tipo de error digamos es custom error y el mensaje es
mensaje el que sea y lanza lanza el error directamente Entonces vamos a ver en nuestra máquina de Estados
momento lo hablamos anteriormente pero pero no lo no lo íbamos a hacer mucho creo que lo lo vimos en una máquina de
estados que cree Pero no lo llegamos a pero lo eliminamos no lo íbamos a hacer uso entonces aquí hay dos formas de
Añadir estos retroce directamente aquí desde la consola podemos poner un comentario por ponerle el número el el
tipo de error en este caso tendría que ser un custom error ahora lo veo cómo es podemos añadirle intervalos para para
reintentar nuevamente la ejecución de la máquina de estado Perdón del Estado este en particular en
este caso la función lambda el máximo número de intentos y un Back offrate esto es un número que se utiliza para
multiplicador para para variar los aumentar el intervalo de reintentos para que no reintentente de forma
cada cinco segundos de forma periódica Y no y eliminar un poco la el Blast radio que se puede crear Entonces está muy
interesante Si te vas a conectar por ejemplo tu función de la onda se conecta con un servicio de http de otro entonces
podés crear esta forma de reintento y no lo tenés que gestionar dentro de tu función de lambda por ejemplo que
generalmente agregar este código es una complicación adentro de una función de lambda parte de la función del Anda solo
vive por 15 minutos y Bueno y con esto puedes hacer que que haya un poco más de juego no de de como Sí
exactamente Entonces vamos a hacer algo ahora vamos a venir a la vamos a Añadir porque quiero que lo veáis también aquí
errores del manejado errores vamos a copiar esto que tengo por acá y lo tengo que copiar entre resource
básicamente lo que hemos añadido es estos Campos que hay acá que aquí le decimos Cuál es el tipo de
error custom error que ese es el error que está que está generando la función lambda que lo vimos hace un momento
Office el tiempo este para incrementar los los reintentos entonces si yo ahora salvo por acá
vamos a ejecutar nuestra función lambda nuestra máquina de estado que ejecutará una función lambda
te da todo el código que lo lo podés copiar y pegar voy a copiar puede ser que me haya en la
acordate que necesitas el el ARN de la función de lambda correcto y tenés uno dos tres cuatro cinco seis
exactamente capaz tenés mal formulada la máquina no no la miré no vamos a ver vamos a ver la máquina
porque no no está dice al principio no es que falte una función Bueno vamos a imaginarnos como sigue y vamos a ir
terminando que ya hace dos horas que estamos acá sí yo no puedo crear como la gente nos está mirando y este va acá
error para pues hacer una tarea específica entonces aquí nosotros aquí si miraríamos habríamos un haríamos un
filtro digamos y miraríamos el tipo de error que nosotros estamos poniendo la función lambda vale Y entonces habría un
No veis aquí se puede poner el Catch Este es el código del acl y y cuando el error sea el tipo custom
servicio de http externo si falla eso lo gestionas de una forma y haces los retraes y no sé qué pero si hay otro
tipo de error haces otro tipo de fail este y todo eso lo gestiona la página de estado de forma súper sencilla Sí Sí
exactamente y con eso ya hicimos ocho y bueno hiciste hicimos dijo el mosquito porque yo acá estuve tomando té
mirándote sufrir pero Wow No sé cómo está la audiencia si sobrevivió si nos acompañó durante estas
dos horas que estuvimos acá cómo te sentís areada no muy bien muy bien un poco un poco por el último
módulo no sé por qué porque está funcionando o sea esto la hacemos algo de haber sido en algún ARN que no copié
bien o algo Pero esto sí que esa función es que lo probé Antes de antes de Pero bueno es el
el demo effect y tuviste suerte que te tocó en el último módulo ya cuando estamos cansados y no al principio y no
te pasaste todo así que bueno los dioses de los demos hoy estuvieron de nuestro lado este la
audiencia ya me cuenta si tiene preguntas esto va a quedar colgado va a estar todo disponible el están en la
descripción de este episodio van a encontrar todos los links Así que si me dicen también en los
comentarios qué les gustaría ver Después qué otro tipo de vivos porque siempre es divertido hacer estos estos vivos y
mostrarles cosas interesantes y bueno haría Muchísimas gracias por por venir acá a mostrarnos todo esto que creo que
estuvo genial gracias a todos por por venir y a todos los que lo van a poder ver desde luego Claro en diferido en
YouTube Exacto está totalmente todos los links ahí y cualquier cosa dejan las preguntas en los comentarios que yo este
canal lo estoy este lo estoy mirando todo el tiempo así que siempre respondo todo lo que encuentro y con eso les
agradezco a todos te agradezco un montón este por haber venido a con nosotros y Bueno nos vemos el lunes hay un episodio
Heads up!
This summary and transcript were automatically generated using AI with the Free YouTube Transcript Summary Tool by LunaNotes.
Generate a summary for freeRelated Summaries
![Desarrollo Frontend desde Cero: Creando Tu Primer Sitio Web](https://img.youtube.com/vi/WiW57qvPMPc/default.jpg)
Desarrollo Frontend desde Cero: Creando Tu Primer Sitio Web
Aprende a desarrollar tu primer sitio web desde cero con HTML y CSS en este curso de frontend.
![Repaso Semanal: Preparativos para Entrevista y Avances en Inteligencia Artificial](https://img.youtube.com/vi/StOx4WLYALo/default.jpg)
Repaso Semanal: Preparativos para Entrevista y Avances en Inteligencia Artificial
Descubre mi repaso semanal sobre entrevistas, aprendizaje y emociones en el mundo del trabajo y la IA.
![Estrategias de Crecimiento Empresarial con Bill Neukom: Dominando Checklists Inteligentes](https://img.youtube.com/vi/Yvsiqj3rrfw/default.jpg)
Estrategias de Crecimiento Empresarial con Bill Neukom: Dominando Checklists Inteligentes
Descubre cómo las tácticas de crecimiento de Bill Neukom pueden transformar tu negocio mediante el uso de checklists inteligentes.
![Diseño Basado en Componentes: Todo lo que Necesitas Saber](https://img.youtube.com/vi/24loTRoJ1WE/default.jpg)
Diseño Basado en Componentes: Todo lo que Necesitas Saber
Aprende sobre el diseño basado en componentes: qué es, ventajas, desventajas y cómo implementarlo en tus proyectos.
![Aprende MySQL: Introducción y Primeros Pasos para Crear Bases de Datos](https://img.youtube.com/vi/Q6sn6UMgR54/default.jpg)
Aprende MySQL: Introducción y Primeros Pasos para Crear Bases de Datos
Descubre cómo construir y gestionar bases de datos efectivamente en MySQL.
Most Viewed Summaries
![Pamamaraan ng Pagtamo ng Kasarinlan sa Timog Silangang Asya: Isang Pagsusuri](https://img.youtube.com/vi/rPneP-KQVAI/default.jpg)
Pamamaraan ng Pagtamo ng Kasarinlan sa Timog Silangang Asya: Isang Pagsusuri
Alamin ang mga pamamaraan ng mga bansa sa Timog Silangang Asya tungo sa kasarinlan at kung paano umusbong ang nasyonalismo sa rehiyon.
![Kolonyalismo at Imperyalismo: Ang Kasaysayan ng Pagsakop sa Pilipinas](https://img.youtube.com/vi/nEsJ-IRwA1Y/default.jpg)
Kolonyalismo at Imperyalismo: Ang Kasaysayan ng Pagsakop sa Pilipinas
Tuklasin ang kasaysayan ng kolonyalismo at imperyalismo sa Pilipinas sa pamamagitan ni Ferdinand Magellan.
![A Comprehensive Guide to Using Stable Diffusion Forge UI](https://img.youtube.com/vi/q5MgWzZdq9s/default.jpg)
A Comprehensive Guide to Using Stable Diffusion Forge UI
Explore the Stable Diffusion Forge UI, customizable settings, models, and more to enhance your image generation experience.
![Pamaraan at Patakarang Kolonyal ng mga Espanyol sa Pilipinas](https://img.youtube.com/vi/QGxTAPfwYNg/default.jpg)
Pamaraan at Patakarang Kolonyal ng mga Espanyol sa Pilipinas
Tuklasin ang mga pamamaraan at patakarang kolonyal ng mga Espanyol sa Pilipinas at ang mga epekto nito sa mga Pilipino.
![Imperyalismong Kanluranin: Unang at Ikalawang Yugto ng Pananakop](https://img.youtube.com/vi/fJP_XisGkyw/default.jpg)
Imperyalismong Kanluranin: Unang at Ikalawang Yugto ng Pananakop
Tuklasin ang kasaysayan ng imperyalismong Kanluranin at mga yugto nito mula sa unang explorasyon hanggang sa mataas na imperyalismo.