Especificación de la salida de estado mediante ResultPath 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.

Especificación de la salida de estado mediante ResultPath Step Functions

Administración del estado y transformación de los datos

Esta página hace referencia a JSONPath. Step Functions agregó recientemente variables y JSONata para administrar el estado y transformar los datos.

Obtenga información sobre cómo pasar datos con variables y cómo transformar datos con JSONata.

La salida de un estado puede ser una copia de su entrada, el resultado que produce (por ejemplo, la salida de una función de Lambda del estado Task) o una combinación de su entrada y del resultado. Use ResultPath para controlar qué combinación de estos se pasa a la salida del estado.

Los siguientes tipos de estado pueden generar un resultado y pueden incluir ResultPath:

Use ResultPath para combinar un resultado de tarea con una entrada de tarea o para seleccionar uno de estos. La ruta que se proporciona a ResultPath controla la información que se pasa a la salida.

nota

ResultPath se limita al uso de rutas de referencia, que limitan el ámbito para que la ruta solo tenga que identificar un único nodo en JSON. Consulte Rutas de referencia en Amazon States Language.

Se usa ResultPath para reemplazar la entrada con el resultado de la tarea

Si no especifica una ResultPath, el comportamiento predeterminado es el mismo que "ResultPath": "$". El estado reemplazará toda la entrada de estado por el resultado de la tarea.

# State Input { "comment": "This is a test", "details": "Default example", "who" : "Step Functions" } # Path "ResultPath": "$" # Task result "Hello, Step Functions!" # State Output "Hello, Step Functions!"
nota

ResultPath se utiliza para incluir contenido a partir del resultado con la entrada, antes de pasarlo a la salida. Pero, si no se especifica ResultPath, la acción predeterminada consiste en reemplazar toda la entrada.

Descarte del resultado y conservación de la entrada original

Si establece ResultPath en null, el estado pasará la entrada original a la salida. La carga útil de entrada del estado se copiará directamente en la salida, independientemente del resultado de la tarea.

# State Input { "comment": "This is a test", "details": "Default example", "who" : "Step Functions" } # Path "ResultPath": null # Task result "Hello, Step Functions!" # State Output { "comment": "This is a test", "details": "Default example", "who" : "Step Functions" }

Se utiliza ResultPath para incluir el resultado con la entrada

Si especifica una ruta para ResultPath, la salida de estado combinará la entrada de estado y el resultado de la tarea:

# State Input { "comment": "This is a test", "details": "Default example", "who" : "Step Functions" } # Path "ResultPath": "$.taskresult" # Task result "Hello, Step Functions!" # State Output { "comment": "This is a test", "details": "Default example", "who" : "Step Functions", "taskresult" : "Hello, Step Functions!" }

También puede insertar el resultado en un nodo secundario de la entrada. Establezca ResultPath como se indica a continuación.

"ResultPath": "$.strings.lambdaresult"

Dada la siguiente entrada:

{ "comment": "An input comment.", "strings": { "string1": "foo", "string2": "bar", "string3": "baz" }, "who": "AWS Step Functions" }

El resultado de la tarea se insertaría como un elemento secundario del nodo strings en la entrada.

{ "comment": "An input comment.", "strings": { "string1": "foo", "string2": "bar", "string3": "baz", "lambdaresult": "Hello, Step Functions!" }, "who": "AWS Step Functions" }

La salida de estado ahora incluye el JSON de entrada original con el resultado como nodo secundario.

Se utiliza ResultPath para actualizar un nodo de la entrada con el resultado

Si especificas un nodo existente para ResultPath, el resultado de la tarea sustituirá a ese nodo existente:

# State Input { "comment": "This is a test", "details": "Default example", "who" : "Step Functions" } # Path "ResultPath": "$.comment" # Task result "Hello, Step Functions!" # State Output { "comment": "Hello, Step Functions!", "details": "Default example", "who" : "Step Functions" }

Se utiliza ResultPath para incluir tanto el error como la entrada en un Catch

En algunos casos, es posible que desee conservar la entrada original con el error. Utilice ResultPath en un Catch para incluir el error con la entrada original, en lugar de sustituirla.

"Catch": [{ "ErrorEquals": ["States.ALL"], "Next": "NextTask", "ResultPath": "$.error" }]

Si la instrucción Catch anterior detecta un error, incluye el resultado en un nodo error dentro de la entrada de estado. Por ejemplo, con la siguiente entrada:

{"foo": "bar"}

La salida de estado al detectar un error es la siguiente.

{ "foo": "bar", "error": { "Error": "Error here" } }

Para obtener más información sobre el control de errores, consulte lo siguiente: