Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Iteración de un bucle con una función de Lambda en Step Functions

Modo de enfoque
Iteración de un bucle con una función de Lambda en Step Functions - AWS Step Functions

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

En este tutorial, implementará un patrón de diseño que utiliza una maquina de estado y una función de AWS Lambda para recorrer en iteración un bucle un número específico de veces.

Utilice este patrón de diseño cada vez que necesite realizar un seguimiento del número de bucles en una máquina de estado. Esta implementación puede ayudarle a desglosar tareas grandes o ejecuciones de ejecución prolongada en trozos más pequeños o finalizar una ejecución después de un número específico de eventos. Puede usar una implementación similar para finalizar y reiniciar periódicamente una ejecución prolongada para evitar sobrepasar las cuotas de servicio de AWS Step Functions AWS Lambda, o de otros AWS servicios.

Antes de empezar, consulte el tutorial Creación de una máquina de estado de Step Functions que utilice Lambda para asegurarse de que está familiarizado con el uso conjunto de Lambda y Step Functions.

Paso 1: Crear una función de Lambda para iterar un recuento

Al utilizar una función de Lambda puede realizar un seguimiento del número de iteraciones de un bucle en su máquina de estado. La función de Lambda siguiente recibe valores de entrada de count, index y step. Devuelve estos valores con un valor de index actualizado y un valor booleano denominado continue. La función de Lambda establece continue en true si index es menor que count.

A continuación, la máquina de estado implementa un estado Choice que ejecuta una lógica de aplicación si continue es trueo finaliza si es false.

Para crear la función de Lambda

  1. Inicie sesión en la consola de Lambda y, a continuación, elija Crear función.

  2. En la página Crear función, elija Diseñar desde cero.

  3. En la sección Información básica, configure la función de Lambda de la siguiente manera:

    1. En Nombre de la función, introduzca Iterator.

    2. En Runtime (Tiempo de ejecución), elija Node.js.

    3. En Cambiar el rol de ejecución predeterminado, elija Crear un nuevo rol con permisos básicos de Lambda.

    4. Seleccione Crear función.

  4. Copie el siguiente código para la función de Lambda en el origen del código.

    export const handler = function (event, context, callback) { let index = event.iterator.index let step = event.iterator.step let count = event.iterator.count index = index + step callback(null, { index, step, count, continue: index < count }) }

    Este código acepta los valores de entrada de count, index y step. Incrementa index en el valor de step y devuelve estos valores y el valor booleano de continue. El valor de continue es true si index es menor que count.

  5. Elija Implementar.

Paso 2: Probar la función de Lambda

Ejecute su función de Lambda con valores numéricos para verla en acción. Puede proporcionar valores de entrada para su función de Lambda que simulen una iteración.

Para probar su función de Lambda

  1. Seleccione Probar.

  2. En el cuadro de diálogo Configurar un evento de prueba, introduzca TestIterator en el cuadro Nombre del evento.

  3. Sustituya los datos de ejemplo por lo siguiente.

    { "Comment": "Test my Iterator function", "iterator": { "count": 10, "index": 5, "step": 1 } }

    Estos valores imitan los que procederían de la máquina de estado durante una iteración. La función de Lambda incrementará el índice true y devolverá continue cuando el índice sea inferior a count. Para esta prueba, el índice ya se ha incrementado a 5. La prueba incrementará index a 6 y establecerá continue como true.

  4. Seleccione Crear.

  5. Seleccione Probar para probar su función de Lambda.

    Los resultados de la prueba se muestran en la pestaña Resultados de la ejecución.

  6. Para ver los resultados de la ejecución, elija la pestaña Salida.

    { "index": 6, "step": 1, "count": 10, "continue": true }
    nota

    Si configura index como 9 y vuelve a realizar la prueba, los incrementos de index serán false y los de 10 serán continue.

Paso 3: Crear una máquina de estado

Antes de salir de la consola Lambda...

Copie el ARN de la función de Lambda. Péguelo en una nota. Lo necesitará en el siguiente paso.

A continuación, creará una máquina de estado con los siguientes estados:

  • ConfigureCount: establece los valores predeterminados de count, index y step.

  • Iterator: hace referencia a la función de Lambda creada anteriormente, transfiriendo los valores configurados en ConfigureCount.

  • IsCountReached: un estado de elección que continúa el ciclo o pasa al estado Done, en función del valor devuelto por la función Iterator.

  • ExampleWork: un resumen del trabajo que hay que hacer. En este ejemplo, el flujo de trabajo tiene un estado Pass, pero en una solución real, lo más probable es que utilice Task.

  • Done: estado final de su flujo de trabajo.

Para crear la máquina de estado en la consola:

  1. Abra la consola de Step Functions y elija Crear una máquina de estado.

    importante

    La máquina de estados debe estar en la misma AWS cuenta y región que la función Lambda.

  2. Seleccione la plantilla en blanco.

  3. En el panel Código, pegue el siguiente JSON que define la máquina de estado.

    Para obtener más información acerca del Amazon States Language, consulte Estructura de las máquinas de estado.

    { "Comment": "Iterator State Machine Example", "StartAt": "ConfigureCount", "States": { "ConfigureCount": { "Type": "Pass", "Result": { "count": 10, "index": 0, "step": 1 }, "ResultPath": "$.iterator", "Next": "Iterator" }, "Iterator": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:Iterate", "ResultPath": "$.iterator", "Next": "IsCountReached" }, "IsCountReached": { "Type": "Choice", "Choices": [ { "Variable": "$.iterator.continue", "BooleanEquals": true, "Next": "ExampleWork" } ], "Default": "Done" }, "ExampleWork": { "Comment": "Your application logic, to run a specific number of times", "Type": "Pass", "Result": { "success": true }, "ResultPath": "$.result", "Next": "Iterator" }, "Done": { "Type": "Pass", "End": true } } }
  4. Asegúrese de reemplazar el campo Iterator Resource por el ARN de la función de Lambda Iterator que creó anteriormente.

  5. Seleccione Configuración e indique un Nombre para su máquina de estado, como por ejemplo, IterateCount.

    nota

    Los nombres de máquinas de estado, ejecuciones y tareas de actividad no deben superar los 80 caracteres. Estos nombres deben ser exclusivos para su cuenta y AWS región, y no deben contener ninguno de los siguientes elementos:

    • Espacios en blanco

    • Caracteres comodín (? *)

    • Caracteres entre corchetes (< > { } [ ])

    • Caracteres especiales (" # % \ ^ | ~ ` $ & , ; : /)

    • Caracteres de control (\\u0000 - \\u001f o \\u007f - \\u009f).

    Step Functions acepta nombres para máquinas de estado, ejecuciones, actividades y etiquetas que contengan caracteres no ASCII. Como estos caracteres no funcionan con Amazon CloudWatch, te recomendamos que utilices únicamente caracteres ASCII para poder realizar un seguimiento de las CloudWatch métricas.

  6. En Tipo, acepte el valor predeterminado de Estándar. Para Permisos, seleccione Crear nuevo rol.

  7. Seleccione Crear y, a continuación, confirme la creación de los roles.

Paso 4: Iniciar una nueva ejecución

Después de crear la máquina de estado, puede iniciar una ejecución.

  1. En la IterateCountpágina, selecciona Iniciar ejecución.

  2. (Opcional) Introduzca un nombre de ejecución personalizado para anular el valor predeterminado generado.

    Nombres y registros con caracteres no ASCII

    Step Functions acepta nombres para máquinas de estado, ejecuciones, actividades y etiquetas que contengan caracteres no ASCII. Como estos caracteres no funcionan con Amazon CloudWatch, te recomendamos que utilices únicamente caracteres ASCII para poder realizar un seguimiento de las CloudWatch métricas.

  3. Seleccione Iniciar ejecución.

    Se inicia una nueva ejecución de la máquina de estado, mostrando la ejecución en funcionamiento.

    Gráfico de máquina de estado que muestra el estado del iterador en azul, lo que indica su estado en progreso.

    La ejecución se incrementa por pasos y realiza el seguimiento del contador mediante la función de Lambda. En cada iteración, realiza el trabajo de ejemplo al que se hace referencia en el estado ExampleWork de la máquina de estado.

    Cuando el recuento alcanza el número especificado en el estado ConfigureCount de la máquina de estado, la ejecución termina las iteraciones y finaliza.

    El gráfico de la máquina de estado muestra los estados Iterator y Done en verde para indicar que ambos se han realizado correctamente.
PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.