Estructura de máquina de estado en Amazon States Language para flujos de trabajo de Step Functions
Administración del estado y transformación de los datos
Obtenga información sobre la Transmisión de datos entre estados con variables y la Transformación de datos con JSONata.
Las máquinas de estado se definen utilizando texto JSON que representa una estructura que contiene los siguientes campos.
-
Comment(opcional) -
Descripción en lenguaje natural de la máquina de estado.
-
QueryLanguage(Opcional; si se omite, el valor predeterminado esJSONPath) -
-
El nombre del lenguaje de consulta utilizado por la máquina de estado. Los valores permitidos son
JSONPathyJSONata. -
Si no se proporciona para la máquina de estado, el valor predeterminado para cada estado es JSONPath.
-
Cuando el lenguaje de consulta de la máquina de estado de nivel superior es
JSONPath, los estados individuales pueden anular el lenguaje de consulta al establecer QueryLanguage enJSONata. Con este enfoque, puede convertir gradualmente una máquina de estado de JSONPath a JSONata, un estado cada vez. -
Nota: No se puede revertir una máquina de estado basada en JSONata de nivel superior a una combinación de estados JSONata y JSONPath.
-
-
StartAt(Obligatorio) -
Cadena que debe coincidir exactamente (mayúsculas y minúsculas) con el nombre de uno de los objetos de estado.
-
TimeoutSeconds(Opcional) -
Número máximo de segundos que puede tardar una ejecución de la máquina de estado. Si se ejecuta durante más tiempo que el especificado, se produce un error en la ejecución con un nombre de error
States.Timeout. -
Version(opcional) -
Versión de Amazon States Language que se utiliza en la máquina de estado (el valor predeterminado es "1.0").
-
States(Obligatorio) -
Objeto que contiene un conjunto de estados separados por comas.
El campo States contiene estados.
{
"State1" : {
},
"State2" : {
},
...
}Las máquinas de estado se definen por los estados que contienen y la relación entre ellos.
A continuación se muestra un ejemplo.
{
"Comment": "A Hello World example of the Amazon States Language using a Pass state",
"StartAt": "HelloWorld",
"States": {
"HelloWorld": {
"Type": "Pass",
"Result": "Hello World!",
"End": true
}
}
}Cuando se inicia una ejecución de esta máquina de estado, el sistema comienza con el estado al que se hace referencia en el campo StartAt ("HelloWorld"). Si este estado tiene un campo "End": true, la ejecución se detiene y se devuelven los resultados. De lo contrario, el sistema busca un campo "Next": y continúa con ese estado "next". Este proceso se repite hasta que el sistema 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.
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; el orden en el que aparecen no afecta al orden en el que se ejecutan. El contenido de los estados determina este orden.
-
En una máquina de estado, solo puede haber un estado designado como
start; esta designación se hace a través del valor del campoStartAtde la estructura principal. Este estado es uno de los que se ejecuta primero cuando se inicia la ejecución. -
Los estados cuyo campo
Endtiene el valortrue, se consideran estadosend(oterminal). En función de la lógica de la máquina de estado (por ejemplo, si la máquina de estado tiene varias ramificaciones de ejecución), es posible que haya varios estadosend. -
Si la máquina de estado se compone de un solo estado, este podría ser tanto el estado
startcomo el estadoend.
Campos de estado comunes en los flujos de trabajo
Los siguientes campos son comunes a todos los elementos de estado.
-
Type(Obligatorio) -
El tipo de estado: Task, Choice, Parallel, Map, Pass, Wait, Succeed, Fail.
QueryLanguage(Opcional; si se omite, el valor predeterminado esJSONPath)-
-
El nombre del lenguaje de consulta utilizado por el estado. Los valores permitidos son
JSONPathyJSONata. -
Cuando el lenguaje de consulta de la máquina de estado de nivel superior es
JSONPath, los estados individuales pueden anular el lenguaje de consulta al establecer QueryLanguage enJSONata. Con este enfoque, puede convertir gradualmente una máquina de estado de JSONPath a JSONata, un estado cada vez.
-
-
Next -
El nombre del siguiente estado que se ejecuta cuando finaliza el estado actual. Algunos tipos de estado, como
Choice, permiten varios estados de transición.Si el estado actual es el último estado de su flujo de trabajo o un estado terminal, como Estado Succeed de un flujo de trabajo o Estado de flujo de trabajo con error, no es necesario que especifique el campo
Next. -
End -
Designa este estado como un estado terminal (termina la ejecución) si está establecido en
true. Puede haber un número cualquiera de estados terminales por máquina de estado. Solo se puede utilizarNextoEnden un estado. Algunos tipos de estado, comoChoice, o estados terminales, como Estado Succeed de un flujo de trabajo y Estado de flujo de trabajo con error, no admiten ni utilizan el campoEnd. -
Comment(opcional) -
Almacena una descripción en lenguaje natural del estado.
-
Assign(opcional) -
Se utiliza para almacenar variables. El campo
Assignacepta un objeto JSON con pares clave/valor que definen los nombres de las variables y sus valores asignados. Cualquier valor de cadena, incluidos los que estén dentro de objetos o matrices, se evaluará como JSONata si está rodeado por caracteres{% %}.Para obtener más información, consulte Transmisión de datos entre estados con variables.
-
Output(Opcional, solo JSONata) -
Se utiliza para especificar y transformar la salida del estado. Cuando se especifica, el valor anula el valor predeterminado de salida del estado.
El campo de salida acepta cualquier valor JSON (objeto, matriz, cadena, número, booleano, nulo). Cualquier valor de cadena, incluidos los que estén dentro de objetos o matrices, se evaluará como JSONata si está rodeado por caracteres {% %}.
La salida también acepta directamente una expresión de JSONata, por ejemplo: “Output”: “{% jsonata expression%}”
Para obtener más información, consulte Procesamiento de entrada y salida.
-
InputPath(Opcional, solo JSONPath) -
Una ruta que selecciona una parte de la entrada del estado que se va a pasar a la tarea del estado para su procesamiento. Si se omite, tiene el valor de
$, que designa toda la entrada. Para obtener más información, consulte Procesamiento de entrada y salida. -
OutputPath(Opcional, solo JSONPath) -
Una ruta que selecciona una parte de la salida del estado que se va a pasar al estado siguiente. Si se omite, tiene el valor de
$, que designa toda la salida. Para obtener más información, consulte Procesamiento de entrada y salida.