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
Administrar el estado y transformar los datos
Esta página hace referencia aJSONPath. 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 a utilizar rutas de referencia, lo que limita el alcance, por lo que la ruta debe identificar solo un nodoJSON. Consulte Rutas de referencia en Amazon States Language.
Se usa ResultPath para reemplazar la entrada con el resultado de la tarea
Si no especifica aResultPath
, 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. Sin embargo, si ResultPath
no se especifica, la acción predeterminada es reemplazar toda la entrada.
Descarte el resultado y conserve la entrada original
Si lo configura ResultPath
null
, el estado pasará la entrada original a la salida. La carga útil de entrada del estado se copiará directamente a la salida, sin tener en cuenta el 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 strings
secundario del nodo en la entrada.
{ "comment": "An input comment.", "strings": { "string1": "foo", "string2": "bar", "string3": "baz", "lambdaresult": "Hello, Step Functions!" }, "who": "AWS Step Functions" }
La salida del estado ahora incluye la entrada JSON original y el resultado es un 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: