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.
Configure las entradas y salidas de estados con Workflow Studio en Step Functions
Cada estado toma una decisión o realiza una acción en función de la información que recibe. En la mayoría de los casos, pasa la salida a otros estados. En Workflow Studio, puede configurar la forma en que un estado filtra y manipula sus datos de entrada y salida en las pestañas Entrada y Salida del panel Panel de inspectores. Utilice los enlaces Información para acceder a la ayuda contextual al configurar las entradas y salidas.
Para obtener información detallada sobre cómo Step Functions procesada las entradas y las salidas, consulte Procesamiento de entradas y salidas en Step Functions.
Configurar la entrada a un estado
Cada estado recibe la entrada del estado anterior comoJSON. Si desea filtrar la entrada, puede usar el filtro InputPath
que se encuentra en la pestaña Entrada del panel Panel de inspectores. InputPath
Es una cadena, que comienza con$
, que identifica un JSON nodo específico. Se denominan rutas de referencia y siguen una JsonPath sintaxis.
Para filtrar la entrada:
-
Elija Filtrar la entrada con InputPath.
-
Introduzca un valor válido JsonPath
para el InputPath
filtro. Por ejemplo,$.data
.
El filtro InputPath
se añadirá a su flujo de trabajo.
ejemplo Ejemplo 1: usar un InputPath filtro en Workflow Studio
Supongamos que la entrada a su estado incluye los siguientes JSON datos.
{
"comment": "Example for InputPath",
"dataset1": {
"val1": 1,
"val2": 2,
"val3": 3
},
"dataset2": {
"val1": "a",
"val2": "b",
"val3": "c"
}
}
Para aplicar el InputPath
filtro, elija Filtrar la entrada con InputPath y, a continuación, introduzca una ruta de referencia adecuada. Si ingresa$.dataset2.val1
, lo siguiente JSON se transfiere como entrada al estado.
{"a"}
Una ruta de referencia también puede tener una selección de valores. Si los datos a los que hace referencia son { "a":
[1, 2, 3, 4] }
y se aplica la ruta de referencia $.a[0:2]
como el filtro InputPath
, el resultado es el siguiente.
[ 1, 2 ]
Los estados de flujo Estado del flujo de trabajo paralelo, Mapa del estado del flujo de trabajo y Pase el estado del flujo de trabajo tienen una opción de filtrado de entrada adicional denominada Parameters
en la pestaña Entrada. Este filtro surte efecto después del InputPath filtro y se puede usar para construir un JSON objeto personalizado compuesto por uno o más pares clave-valor. Los valores de cada par pueden ser valores estáticos, se pueden seleccionar desde la entrada o se pueden seleccionar desde un Objeto Context (Contexto) con una ruta.
nota
Para especificar que un parámetro utilice una ruta de referencia para apuntar a un JSON nodo de la entrada, el nombre del parámetro debe terminar por. .$
ejemplo Ejemplo 2: Crear una JSON entrada personalizada para el estado paralelo
Supongamos que los siguientes JSON datos son la entrada a un estado paralelo.
{
"comment": "Example for Parameters",
"product": {
"details": {
"color": "blue",
"size": "small",
"material": "cotton"
},
"availability": "in stock",
"sku": "2317",
"cost": "$23"
}
}
Para seleccionar parte de esta entrada y transferir pares clave-valor adicionales con un valor estático, puede especificar lo siguiente en el campo Parámetros, en la pestaña Entrada del estado Parallel.
{
"comment": "Selecting what I care about.",
"MyDetails": {
"size.$": "$.product.details.size",
"exists.$": "$.product.availability",
"StaticValue": "foo"
}
}
El resultado será el siguiente JSON dato.
{
"comment": "Selecting what I care about.",
"MyDetails": {
"size": "small",
"exists": "in stock",
"StaticValue": "foo"
}
}
Configurar la salida de un estado
Cada estado produce una JSON salida que se puede filtrar antes de pasar al siguiente estado. Hay varios filtros disponibles y cada uno afecta a la salida de forma diferente. Los filtros de salida disponibles para cada estado se muestran en la pestaña Salida del panel Inspector. En el caso de los estados Estado del flujo de trabajo de tareas, cualquier filtro de salida que seleccione se procesa en este orden:
-
ResultSelector
: utilice este filtro para manipular el resultado del estado. Puede construir un JSON objeto nuevo con partes del resultado. -
Especificar la salida de estado mediante los flujos ResultPath de trabajo de Step Functions
: utilice este filtro para seleccionar una combinación de la entrada de estado y del resultado de tarea que transferir a la salida. -
Filtrar el estado de salida mediante flujos OutputPath de trabajo de Step Functions
: Utilice este filtro para filtrar la JSON salida y elegir qué información del resultado se pasará al siguiente estado.
Utilice ResultSelector
ResultSelector
es un filtro de salida opcional para los siguientes estados:
-
Estados Estado del flujo de trabajo de tareas, que son todos los estados que aparecen en la pestaña Acciones del Navegador de estados.
-
Estados Mapa del estado del flujo de trabajo, en la pestaña Flujo del navegador de estados.
-
Estados Estado del flujo de trabajo paralelo, en la pestaña Flujo del navegador de estados.
ResultSelector
se puede usar para construir un JSON objeto personalizado compuesto por uno o más pares clave-valor. Los valores de cada par pueden ser valores estáticos o seleccionarse a partir del resultado del estado con una ruta.
nota
Para especificar que un parámetro utilice una ruta para hacer referencia a un JSON nodo en el resultado, el nombre del parámetro debe terminar por. .$
ejemplo Ejemplo de uso de un ResultSelector filtro
En este ejemplo, se utiliza ResultSelector
para manipular la respuesta de la EMR CreateCluster API llamada de Amazon para un EMR CreateCluster
estado de Amazon. El siguiente es el resultado de la EMR CreateCluster
API llamada de Amazon.
{
"resourceType": "elasticmapreduce",
"resource": "createCluster.sync",
"output": {
"SdkHttpMetadata": {
"HttpHeaders": {
"Content-Length": "1112",
"Content-Type": "application/x-amz-JSON-1.1",
"Date": "Mon, 25 Nov 2019 19:41:29 GMT",
"x-amzn-RequestId": "1234-5678-9012"
},
"HttpStatusCode": 200
},
"SdkResponseMetadata": {
"RequestId": "1234-5678-9012"
},
"ClusterId": "AKIAIOSFODNN7EXAMPLE"
}
}
Para seleccionar parte de esta información y pasar un par clave-valor adicional con un valor estático, especifique lo siguiente en el ResultSelectorcampo, en la pestaña Resultados del estado.
{
"result": "found",
"ClusterId.$": "$.output.ClusterId",
"ResourceType.$": "$.resourceType"
}
El uso de ResultSelector
produce el siguiente resultado.
{
"result": "found",
"ClusterId": "AKIAIOSFODNN7EXAMPLE",
"ResourceType": "elasticmapreduce"
}
Utilice ResultPath
La salida de un estado puede ser una copia de su entrada, del resultado que produce o una combinación de su entrada y su resultado. Use ResultPath
para controlar qué combinación de estos se pasa a la salida del estado. Para ver más casos de uso de ResultPath
, consulte Especificar la salida de estado mediante los flujos ResultPath de trabajo de Step Functions.
ResultPath
es un filtro de salida opcional para los siguientes estados:
-
Estados Estado del flujo de trabajo de tareas, que son todos los estados que aparecen en la pestaña Acciones del navegador de estados.
-
Estados Mapa del estado del flujo de trabajo, en la pestaña Flujo del navegador de estados.
-
Estados Estado del flujo de trabajo paralelo, en la pestaña Flujo del navegador de estados.
-
Estados Pase el estado del flujo de trabajo, en la pestaña Flujo del navegador de estados.
ResultPath
se puede utilizar para añadir el resultado a la entrada de estado original. La ruta especificada indica dónde añadir el resultado.
ejemplo Ejemplo de uso de un ResultPath filtro
Supongamos que lo siguiente es la entrada a un estado Task.
{
"details": "Default example",
"who": "AWS Step Functions"
}
El resultado del estado Task es el siguiente.
Hello, AWS Step Functions
Puede añadir este resultado a la entrada del estado aplicando ResultPath
e introduciendo una ruta de referencia que indique dónde añadir el resultado, por ejemplo $.taskresult
:
Con estoResultPath
, lo siguiente es lo JSON que se pasa como salida del estado.
{
"details": "Default example",
"who": "AWS Step Functions",
"taskresult": "Hello, AWS Step Functions!"
}
Usa OutputPath
El OutputPath
filtro le permite filtrar la información no deseada y pasar solo la parte JSON que necesita. OutputPath
Es una cadena, que comienza por$
, que identifica los nodos dentro del JSON texto.
ejemplo Ejemplo de uso de un OutputPath filtro
Imagine que una API llamada a Lambda Invoke devuelve metadatos además del resultado de la función Lambda.
{
"ExecutedVersion": "$LATEST",
"Payload": {
"foo": "bar",
"colors": [
"red",
"blue",
"green"
],
"car": {
"year": 2008,
"make": "Toyota",
"model": "Matrix"
}
},
"SdkHttpMetadata": {
"AllHttpHeaders": {
"X-Amz-Executed-Version": ["$LATEST"]
...
Se puede utilizar OutputPath
para filtrar los metadatos adicionales. De forma predeterminada, el valor del OutputPathfiltro para los estados de Lambda Invoke creados a través de Workflow Studio es. $.Payload
Este valor predeterminado elimina los metadatos adicionales y devuelve un resultado equivalente a ejecutar directamente la función de Lambda.
El ejemplo del resultado de la tarea Lambda Invoke y el valor del filtro $.Payload
de salida transmiten los siguientes JSON datos como salida.
{
"foo": "bar",
"colors": [
"red",
"blue",
"green"
],
"car": {
"year": 2008,
"make": "Toyota",
"model": "Matrix"
}
}
nota
El OutputPath
filtro es el último filtro de salida que surte efecto, por lo que si utiliza filtros de salida adicionales, como ResultSelector
oResultPath
, debe modificar el valor predeterminado del $.Payload
OutputPath
filtro en consecuencia.