Obtenga información sobre las máquinas de estado 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.

Obtenga información sobre las máquinas de estado en Step Functions

Step Functions se basa en máquinas y tareas de estados. En Step Functions, las máquinas de estados se denominan flujos de trabajo, que son una serie de pasos basados en eventos. Cada paso de un flujo de trabajo se denomina estado. Por ejemplo, un estado de tarea representa una unidad de trabajo más que otra AWS un servicio realiza, como llamar a otro Servicio de AWS oAPI. Las instancias de flujos de trabajo en ejecución que realizan tareas se denominan ejecuciones en Step Functions.

Ejemplo ilustrativo de un diagrama de flujo de trabajo de Step Functions.

Conceptos clave

A continuación, se proporciona una descripción general de los términos clave de Step Functions para dar contexto.

Plazo Descripción
Flujo de trabajo Secuencia de pasos que a menudo reflejan un proceso empresarial.
Estados

Pasos individuales de su máquina de estados que pueden tomar decisiones en función de sus entradas, realizar acciones a partir de esas entradas y pasar las salidas a otros estados.

Para obtener más información, consulte Descubrimiento de estados de flujo de trabajo para usarlos en Step Functions.

Workflow Studio

Diseñador visual de flujos de trabajo que ayuda a crear prototipos y flujos de trabajo con mayor rapidez.

Para obtener más información, consulte Desarrollo de flujos de trabajo en Step Functions Workflow Studio.

Máquina de estado

Un flujo de trabajo definido mediante JSON texto que representa los estados o pasos individuales del flujo de trabajo junto con camposStartAt, comoTimeoutSeconds, yVersion.

Para obtener más información, consulte Estructura de máquinas de estados en Amazon States Language para flujos de trabajo de Step Functions.

Amazon States Language

Un lenguaje estructurado y JSON basado que se utiliza para definir sus máquinas de estados. Con ASL él, puede definir un conjunto de estados que pueden funcionar (Taskestado), determinar qué estados pasar a los siguientes (Choiceestado) y detener una ejecución con un error (Failestado).

Para obtener más información, consulte Uso del lenguaje de Amazon States para definir los flujos de trabajo de Step Functions.

Configuración de entrada y salida

Los estados de un flujo de trabajo reciben JSON datos como entrada y, por lo general, JSON los pasan como salida al siguiente estado. Step Functions proporciona filtros para controlar el flujo de datos entre estados.

Para obtener más información, consulte Procesamiento de entradas y salidas en Step Functions.

Integración con los servicios

Puede llamar AWS APIacciones de servicio de tu flujo de trabajo.

Para obtener más información, consulte Integración de servicios con Step Functions.

Tipo de integración de servicios
  • AWS SDKintegraciones: forma estándar de llamar a cualquiera de las más de doscientas Servicios de AWS y más de nueve mil API acciones directamente desde tu máquina de estados.

  • Integraciones optimizadas: integraciones personalizadas que agilizan las llamadas y el intercambio de datos con determinados servicios. Por ejemplo, Lambda Invoke convertirá automáticamente el Payload campo de la respuesta de una JSON cadena de escape en un objeto. JSON

Patrón de integración de servicios

Al llamar a un Servicio de AWS, utiliza uno de los siguientes patrones de integración de servicios:

Ejecución

Las ejecuciones de máquinas de estado son instancias en las que se ejecuta un flujo de trabajo para realizar tareas.

Para obtener más información, consulte Inicio de ejecuciones de máquinas de estado en Step Functions.

Datos de la máquina de estado

Los datos de la máquina de estado son los siguientes:

  • Los datos de entrada iniciales de la máquina de estado

  • Los datos que se pasan entre estados

  • La salida de la máquina de estado

En esta sección se describe cómo se formatean y utilizan los datos de la máquina de estado en AWS Step Functions.

Formato de los datos

Los datos de la máquina de estados se representan mediante JSON texto. Puede proporcionar valores a una máquina de estados mediante cualquier tipo de datos compatible conJSON.

nota
  • Los números en formato JSON de texto se ajustan a la JavaScript semántica. Estos números suelen corresponder a valores de IEEE-854 valores de doble precisión.

  • El texto siguiente es válidoJSON:

    • Cadenas independientes, delimitadas por comillas

    • Objects

    • Matrices

    • Números

    • Valores booleanos

    • null

  • La salida de un estado se convierte en la entrada para el siguiente estado. Sin embargo, con el procesamiento de entrada y salida, puede restringir los estados para que trabajen con un subconjunto de los datos de entrada.

Entrada y salida de la máquina de estado

Puede proporcionar sus datos de entrada iniciales a un AWS Step Functions máquina de estado de dos maneras. Puede pasar los datos a una acción StartExecution al iniciar una ejecución. También puede pasar los datos a la máquina de estado desde la consola de Step Functions. Los datos iniciales se pasan al estado StartAt de la máquina de estado. Si no se proporcionan datos de entrada, el valor predeterminado es un objeto vacío ({}).

El último estado (terminal) es el encargado de devolver la salida de la ejecución. Esta salida aparece como JSON texto en el resultado de la ejecución.

Para los flujos de trabajo estándar, puede recuperar los resultados del historial de ejecuciones mediante intermediarios externos, tales como la acción DescribeExecution. Puede consultar los resultados de la ejecución en la consola de Step Functions.

En el caso de Express Workflows, si ha activado el registro, puede recuperar los resultados de los CloudWatch registros o ver y depurar las ejecuciones en la consola de Step Functions. Para obtener más información, consulte Uso de CloudWatch registros para registrar el historial de ejecuciones en Step Functions y Visualización de los detalles de ejecución en la consola Step Functions.

También debe tener en cuenta las cuotas relacionadas con la máquina de estado. Para obtener más información, consulte Cuotas de servicio de Step Functions

Entrada y salida de estados

La entrada de cada estado consiste en JSON texto del estado anterior o, en el caso del StartAt estado, en la entrada de la ejecución. Algunos estados de control de flujo replican los datos de entrada en la salida.

En el ejemplo siguiente, la máquina de estado suma dos números.

  1. Defina el AWS Lambda función.

    function Add(input) { var numbers = JSON.parse(input).numbers; var total = numbers.reduce( function(previousValue, currentValue, index, array) { return previousValue + currentValue; }); return JSON.stringify({ result: total }); }
  2. Defina la máquina de estado de .

    { "Comment": "An example that adds two numbers together.", "StartAt": "Add", "Version": "1.0", "TimeoutSeconds": 10, "States": { "Add": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:Add", "End": true } } }
  3. Inicie una ejecución con el siguiente JSON texto.

    { "numbers": [3, 4] }

    El Add estado recibe el JSON texto y lo pasa a la función Lambda.

    La función de Lambda devuelve el resultado del cálculo al estado.

    El estado devuelve el siguiente valor en la salida.

    { "result": 7 }

    Como Add también es el estado final de la máquina de estado, este valor se devuelve como salida de la máquina de estado.

    Si el estado final no devuelve ninguna salida, la máquina de estado devuelve un objeto vacío ({}).

Para obtener más información, consulte Procesamiento de entradas y salidas en Step Functions.

Invocación AWS Step Functions de otros servicios

Puede configurar varios otros servicios para invocar máquinas de estado. Según el tipo de flujo de trabajo de la máquina de estado, puede invocar máquinas de estado de forma asíncrona o sincrónica. Para invocar máquinas de estado de forma sincrónica, utilice la StartSyncExecution API llamada o la integración de Amazon API Gateway con Express Workflows. Con la invocación asíncrona, Step Functions detiene la ejecución del flujo de trabajo hasta que se devuelve un token de tarea. No obstante, esperar a que aparezca un token de tarea hace que el flujo de trabajo sea sincrónico.

Los servicios que puede configurar para invocar Step Functions incluyen:

Las invocaciones de Step Functions se rigen por la cuota de StartExecution. Para obtener más información, consulte:

Transiciones en máquinas de estados

Cuando inicia una nueva ejecución de su máquina de estado, el sistema comienza con el estado al que se hace referencia en el campo principal StartAt. Este campo, que se proporciona como una cadena, debe coincidir exactamente, incluyendo mayúsculas y minúsculas, con el nombre de un estado en el flujo de trabajo.

Después de que un estado funcione, AWS Step Functions usa el valor del Next campo para determinar el siguiente estado al que avanzar.

Los campos Next también especifican los nombres de estado como cadenas. Esta cadena distingue entre mayúsculas y minúsculas y debe coincidir exactamente con el nombre de un estado definido en la descripción de la máquina de estado

Por ejemplo, el siguiente estado incluye una transición a NextState.

"SomeState" : { ..., "Next" : "NextState" }

La mayoría de los estados solamente permiten usar una regla de transición con el campo Next. Sin embargo, algunos estados de control de flujo, como el estado Choice, permiten especificar varias reglas de transición, cada una con su propio campo Next. El lenguaje de estados de Amazon proporciona detalles sobre cada uno de los tipos de estado que se pueden especificar; por ejemplo, información acerca de cómo especificar las transiciones.

Los estados pueden tener varias transiciones de entrada procedentes de otros estados.

El proceso se repite hasta que alcanza un estado terminal (un estado con "Type": Succeed, "Type": Fail o "End": true) o se produce un error del sistema en tiempo de ejecución.

Cuando redriveuna ejecución, se considera una transición de estado. Además, todos los estados que se vuelven a ejecutar en un redrive también se consideran transiciones de estado.

Las siguientes reglas se aplican a los estados de una máquina de estado:

  • Los estados pueden tener lugar en cualquier orden dentro del bloque delimitado. No obstante, el orden en el que aparecen no afecta al orden en el que se ejecuta. El contenido de los estados determina este orden.

  • En una máquina de estado solo puede haber un estado designado como estado start. El estado start se define mediante el valor del campo StartAt en la estructura de nivel superior.

  • En función de la lógica de la máquina de estado (por ejemplo, si la máquina de estado tiene varias ramificaciones lógicas), es posible que haya varios estados end.

  • Si la máquina de estado se compone de un solo estado, este podría ser tanto el estado inicial como el estado final.

Transiciones en el estado Distributed Map

Cuando utilice el estado Map en modo Distributed, se le cobrará una transición de estado por cada ejecución del flujo de trabajo secundario que inicie el estado Distributed Map. Al usar el estado Map en el modo En línea, no se carga una transición de estado por cada iteración del estado Map en línea.

Puede optimizar los costos mediante el estado Map en modo distribuido e incluir un flujo de trabajo anidado en la definición del estado Map. El estado Distributed Map también agrega más valor al iniciar ejecuciones de flujos de trabajo secundarios del tipo Rápido. Step Functions almacena la respuesta y el estado de las ejecuciones del flujo de trabajo secundario de Express, lo que reduce la necesidad de almacenar los datos de ejecución en CloudWatch los registros. También puede acceder a los controles de flujo disponibles con un estado Distributed Map, como definir umbrales de error o agrupar por lotes un grupo de elementos. Para obtener información sobre los precios de Step Functions, consulte AWS Step Functions precios.

Consistencia de lectura in Step Functions

Actualizaciones de State Machine en AWS Step Functions eventualmente son consistentes. Todas las StartExecution llamadas que se realicen en unos segundos utilizarán la definición actualizada y roleArn (el nombre del recurso de Amazon para el IAM rol). Es posible que las ejecuciones que se inicien inmediatamente después de llamar a UpdateStateMachine utilicen la definición de la máquina de estado y el roleArn anteriores.

Para más información, consulte los siguientes temas: