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
Administración del estado y transformación de los datos
Obtenga información sobre cómo pasar datos entre estados con variables y cómo transformar datos con JSONata.
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 del inspector. 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 en forma de JSON. Si desea filtrar la entrada, puede usar el filtro InputPath que se encuentra en la pestaña Entrada del panel Panel del inspector. InputPath es una cadena que comienza por $ y que identifica un nodo JSON 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 InputPathfiltro. 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 datos JSON.
{
"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 introduce $.dataset2.val1, el siguiente JSON se pasa 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 Parallel de un flujo de trabajo, Estado del flujo de trabajo Map y Estado Pass de un 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 objeto JSON 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 Acceso a los datos de ejecución desde el objeto Context en Step Functions con una ruta.
nota
Para especificar que un parámetro utilice una ruta de referencia que apunte a un nodo JSON en la entrada, el nombre del parámetro debe terminar con .$.
ejemplo Ejemplo 2: Crear una entrada JSON personalizada para el estado Parallel
Supongamos que los siguientes datos JSON son la entrada a un estado Parallel.
{
"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án los siguientes datos JSON.
{
"comment": "Selecting what I care about.",
"MyDetails": {
"size": "small",
"exists": "in stock",
"StaticValue": "foo"
}
}
Configurar la salida de un estado
Cada estado produce una salida JSON 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 de un flujo de trabajo de tarea, cualquier filtro de salida que seleccione se procesa en este orden:
-
ResultSelector: utilice este filtro para manipular el resultado del estado. Puede construir un nuevo objeto JSON con partes del resultado. -
Especificación de la salida de estado mediante ResultPath 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. -
Filtrado de la salida de estado mediante OutputPath: utilice este filtro para filtrar la salida JSON 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 de un flujo de trabajo de tarea, que son todos los estados que aparecen en la pestaña Acciones del Navegador de estados.
-
Estados Estado del flujo de trabajo Map, en la pestaña Flujo del navegador de estados.
-
Estados Estado Parallel de un flujo de trabajo, en la pestaña Flujo del navegador de estados.
ResultSelector se puede usar para construir un objeto JSON personalizado que consta de uno o varios 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 nodo JSON en el resultado, el nombre del parámetro debe terminar con .$.
ejemplo Ejemplo de uso del ResultSelector filtro
En este ejemplo, se utiliza ResultSelector para manipular la respuesta de la llamada a la CreateCluster API de Amazon EMR para obtener un estado de Amazon EMR. CreateCluster A continuación se muestra el resultado de la llamada a la API CreateCluster de Amazon EMR.
{
"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 Salida 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, el resultado que produce 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. Para ver más casos de uso de ResultPath, consulte Especificación de la salida de estado mediante ResultPath Step Functions.
ResultPath es un filtro de salida opcional para los siguientes estados:
-
Estados Estado de un flujo de trabajo de tarea, que son todos los estados que aparecen en la pestaña Acciones del navegador de estados.
-
Estados Estado del flujo de trabajo Map, en la pestaña Flujo del navegador de estados.
-
Estados Estado Parallel de un flujo de trabajo, en la pestaña Flujo del navegador de estados.
-
Estados Estado Pass de un 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 del 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 FunctionsPuede 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 este ResultPath, lo siguiente es el JSON que se pasa como salida del estado.
{
"details": "Default example",
"who": "AWS Step Functions",
"taskresult": "Hello, AWS Step Functions!"
}Utilice OutputPath
El filtro OutputPath le permite filtrar la información no deseada y pasar solo la parte de JSON que necesite. OutputPath es una cadena que comienza por $ y que identifica los nodos dentro del texto JSON.
ejemplo Ejemplo de uso del OutputPath filtro
Imagine que una llamada a la API Invoke de Lambda devuelve metadatos además del resultado de la función de 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 de $.Payload del filtro Salida pasan los siguientes datos JSON como salida.
{
"foo": "bar",
"colors": [
"red",
"blue",
"green"
],
"car": {
"year": 2008,
"make": "Toyota",
"model": "Matrix"
}
}nota
El filtro OutputPath es el último filtro de salida que surte efecto, si usa filtros de salida adicionales, como ResultSelector o ResultPath, debe modificar el valor predeterminado de $.Payload del filtro OutputPath en consecuencia.