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.
Configurar las entradas y salidas del flujo de trabajo en Step Functions
En el tema anteriorEjecutar el flujo de trabajo , aprendió a ejecutar su flujo de trabajo. En este tema, aprenderá a seleccionar, filtrar y manipular los datos a medida que pasan de un estado a otro.
Una ejecución de Step Functions recibe JSON texto como entrada y pasa esa entrada al primer estado del flujo de trabajo. Los estados individuales de un flujo de trabajo reciben JSON datos como entrada y, por lo general, JSON los pasan como salida al siguiente estado. De forma predeterminada, los datos pasan de un estado al siguiente del flujo de trabajo, a menos que haya configurado la entrada o la salida. Comprender cómo fluye esta información de un estado a otro y aprender a filtrar y manipular estos datos resulta esencial para diseñar e implementar de forma eficaz los flujos de trabajo en Step Functions.
Step Functions proporciona los siguientes filtros para controlar el flujo de datos de entrada y salida entre estados:
nota
Según el caso de uso, es posible que no necesite aplicar todos estos filtros en los flujos de trabajo.
InputPath
-
Selecciona WHATuna parte de toda la carga útil de entrada para utilizarla como entrada de una tarea. Si especifica este campo, Step Functions lo aplicará en primer lugar.
Parámetros
-
Especifica HOWel aspecto que debe tener la entrada antes de invocar la tarea. Con el
Parameters
campo, puede crear una colección de pares clave-valor que se pasan como entrada a un Servicio de AWS integración, como una AWS Lambda función. Estos valores pueden ser estáticos o seleccionarse dinámicamente desde la entrada de estado o desde el objeto de contexto del flujo de trabajo. ResultSelector
-
Determina WHATelegir entre los resultados de una tarea. Con el campo
ResultSelector
puede crear una colección de pares clave-valor que sustituyan el resultado de un estado y que pasen esa colección aResultPath
. Especificar la salida de estado mediante los flujos ResultPath de trabajo de Step Functions
-
Determina si WHEREse debe colocar el resultado de una tarea. Utilice
ResultPath
para determinar si la salida de un estado es una copia de su entrada, el resultado que produce o una combinación de ambos. Filtrar el estado de salida mediante flujos OutputPath de trabajo de Step Functions
-
Determina WHATenviar al siguiente estado. Con
OutputPath
él, puede filtrar la información no deseada y transferir solo la parte de JSON los datos que le interesa.
sugerencia
ResultSelector
Los filtros Parameters
y funcionan construyendoJSON, mientras que los OutputPath
filtros InputPath
y filtran nodos específicos dentro de un objeto de JSON datos, y el ResultPath
filtro crea un campo en el que se puede añadir la salida.
Para obtener más información acerca de la configuración de entrada y salida en los flujos de trabajo, consulte Procesamiento de entradas y salidas en Step Functions.
Filtrar y manipular las entradas y los resultados
- Seleccione partes específicas de la entrada sin procesar mediante el filtro InputPath
- Manipular la entrada seleccionada mediante el filtro Parámetros
- Configure la salida mediante los ResultSelector filtros ResultPath, y OutputPath
- Manipule la entrada seleccionada mediante el campo Parámetros
- Siguientes pasos
Seleccione partes específicas de la entrada sin procesar mediante el filtro InputPath
Utilice el filtro InputPath
para seleccionar una parte específica de la carga útil de entrada.
Si no especifica InputPath
, su valor predeterminado es $
, lo que hace que la tarea del estado se refiera a toda la entrada sin procesar en lugar de a una parte específica.
Para aprender a utilizar el filtro InputPath, realice los siguientes pasos:
Paso 1: Crear una máquina de estado
importante
Asegúrese de que su máquina de estados esté debajo de la misma AWS cuenta y región como la función Lambda que creó anteriormente.
-
Utilice el ejemplo de estado
Parallel
aprendido en el Tutorial 4 para crear una nueva máquina de estado. Asegúrese de que el prototipo de flujo de trabajo se parezca al siguiente prototipo. -
Configure las integraciones para las funciones de lambda
check-identity
ycheck-address
. Para obtener información sobre la creación de las funciones de Lambda y su uso en la máquina de estado, consulte Paso 1: Crear las funciones de Lambda para realizar las comprobaciones necesarias y Paso 2: Actualizar el flujo de trabajo: añadir tareas paralelas a realizar. -
Para Carga, asegúrese de mantener la selección predeterminada de Usar entrada de estado como carga.
-
Seleccione Siguiente y, a continuación, realice los pasos del 1 a 3 en Paso 1: Guardar la máquina de estado del Tutorial 5 para crear una nueva máquina de estado. Para este tutorial, asigne a su máquina de estado el nombre
WorkflowInputOutput
.
Paso 2: Ejecutar la máquina de estado
-
En la WorkflowInputOutputpágina, elija Iniciar ejecución.
-
(Opcional) Introduzca un nombre de ejecución personalizado para anular el valor predeterminado generado.
ASCIINombres no identificables y registro
Step Functions acepta nombres para máquinas de estados, ejecuciones, actividades y etiquetas que no contengan ASCII caracteres. Como estos personajes no funcionan con Amazon CloudWatch, te recomendamos que utilices solo ASCII caracteres para poder hacer un seguimiento de las métricas CloudWatch.
-
En el área de entrada, añade los siguientes JSON datos como entrada de ejecución.
{ "data": { "firstname": "Jane", "lastname": "Doe", "identity": { "email": "jdoe@example.com", "ssn": "123-45-6789" }, "address": { "street": "123 Main St", "city": "Columbus", "state": "OH", "zip": "43219" } } }
-
Seleccione Iniciar ejecución.
-
La ejecución de la máquina de estado produce un error porque no ha especificado qué partes de la ejecución deben utilizar la entrada
check-identity
y las funciones de Lambdacheck-address
para realizar la verificación de identidad y dirección requerida. -
Continúe con el paso 3 de este tutorial para corregir el error.
Paso 3: Utilizar el filtro InputPath
para seleccionar partes específicas de una entrada de ejecución
-
En la página Detalle de ejecución, seleccione Editar máquina de estado.
-
Para verificar la identidad del solicitante tal como se menciona en la entrada de ejecución proporcionada enPaso 2: Ejecutar la máquina de estado, edite la definición de la tarea de verificación de identidad de la siguiente manera:
... { "StartAt": "Verify identity", "States": { "Verify identity": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "InputPath": "$.data.identity", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:check-identity:$LATEST" }, "End": true } } } ...
En consecuencia, los siguientes JSON datos pasan a estar disponibles como entrada para la
check-identity
función.{ "email": "jdoe@example.com", "ssn": "123-45-6789" }
-
Para verificar la dirección del solicitante mencionada en la entrada de ejecución, edite la definición de la tarea
Verify address
del siguiente modo:... { "StartAt": "Verify address", "States": { "Verify address": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "InputPath": "$.data.address", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-1:123456789012:function:check-address:$LATEST" }, "End": true } } } ...
En consecuencia, los siguientes JSON datos pasan a estar disponibles como entrada para la
check-address
función.{ "street": "123 Main St", "city": "Columbus", "state": "OH", "zip": "43219" }
-
Seleccione Iniciar ejecución. La ejecución de la máquina de estado ahora se completa correctamente.
Manipular la entrada seleccionada mediante el filtro Parámetros
Si bien el InputPath
filtro le ayuda a limitar la JSON entrada sin procesar que proporciona, con el Parameters
filtro puede pasar una colección de pares clave-valor como entrada. Estos pares clave-valor pueden ser valores estáticos definidos en la definición de la máquina de estado o valores seleccionados de la entrada bruta mediante InputPath
.
En sus flujos de trabajo, se aplican Parameters
después de InputPath
. Parameters
ayuda a especificar cómo la tarea subyacente acepta su carga útil de entrada. Por ejemplo, si la función check-address
Lambda acepta un parámetro de cadena como entrada en lugar de los JSON datos, puede utilizar el Parameters
filtro para transformar la entrada.
En el siguiente ejemplo, el filtro Parameters
recibe la entrada que ha seleccionado InputPath
en Paso 3: Utilizar el filtro InputPath para seleccionar partes específicas de una entrada de ejecución y aplica la función intrínseca States.Format
a los elementos de entrada para crear una cadena llamada addressString
. Las funciones intrínsecas le ayudan a realizar operaciones básicas de procesamiento de datos en una entrada determinada. Para obtener más información, consulte Funciones intrínsecas en Amazon States Language para los flujos de trabajo de Step Functions.
"Parameters": { "addressString.$": "States.Format('{}. {}, {} - {}', $.street, $.city, $.state, $.zip)" }
En consecuencia, se crea la siguiente cadena y se proporciona a la función de Lambda check-address
como entrada.
{ "addressString": "123 Main St. Columbus, OH - 43219" }
Configure la salida mediante los ResultSelector filtros ResultPath, y OutputPath
Cuando se invoca la función check-address
Lambda en la máquina de WorkflowInputOutputestados, la función devuelve una carga útil de salida después de realizar la verificación de la dirección. En la página de Detalles de la ejecución, elija el paso Verificar dirección y vea la carga útil de salida dentro de Resultado de la tarea en el panel Detalles del paso.
{ "ExecutedVersion": "$LATEST", "Payload": { "statusCode": 200, "body": "{\"approved\":true,\"message\":\"identity validation passed\"}" }, "SdkHttpMetadata": { "AllHttpHeaders": { "X-Amz-Executed-Version": [ "$LATEST" ], ... ... "StatusCode": 200 }
Usando ResultSelector
Si necesita proporcionar el resultado de las comprobaciones de identidad y dirección a los siguientes estados de su flujo de trabajo, puede seleccionar el nodo Payload.body en la salida JSON y utilizar la función StringToJson intrínseca del ResultSelector
filtro para formatear los datos según sea necesario.
ResultSelector
selecciona lo que se necesita del resultado de la tarea. En el ejemplo siguiente, ResultSelector
toma la cadena de $.PAYLOAD.BODY, aplica la función States.StringToJson
intrínseca para convertir la cadena y coloca el resultado dentro del nodo de identidadJSON. JSON
"ResultSelector": { "identity.$": "States.StringToJson($.Payload.body)" }
En consecuencia, se crean los siguientes datos. JSON
{ "identity": { "approved": true, "message": "Identity validation passed" } }
Al trabajar con estos filtros de entrada y salida, es posible que se produzcan errores de tiempo de ejecución a causa de JSONpath expresiones no válidas.
Usando ResultPath
Puede especificar una ubicación en la carga útil de entrada inicial para guardar el resultado del procesamiento de tareas de un estado mediante el campo ResultPath
. Si no especifica ResultPath
, su valor predeterminado es $
, lo que hace que la carga útil de entrada inicial se sustituya por el resultado sin procesar de la tarea. Si especifica ResultPath
como null
, el resultado sin procesar se descarta y la carga útil de entrada inicial pasa a ser la salida efectiva.
Si aplica el ResultPath
campo a los JSON datos creados con el ResultSelector
campo, el resultado de la tarea se añade dentro del nodo de resultados de la carga útil de entrada, como se muestra en el siguiente ejemplo:
{
"data": {
"firstname": "Jane",
"lastname": "Doe",
"identity": {
"email": "jdoe@example.com",
"ssn": "123-45-6789"
},
"address": {
"street": "123 Main St",
"city": "Columbus",
"state": "OH",
"zip": "43219"
},
"results": {
"identity": {
"approved": true
}
}
}
Usando OutputPath
Puede seleccionar una parte de la salida de estado después de la aplicación de ResultPath
para pasar al siguiente estado. Con este enfoque, puede filtrar la información no deseada y transmitir solo la parte JSON que necesita.
En el siguiente ejemplo, el campo OutputPath
guarda la salida de estado dentro del nodo de resultados: "OutputPath": "$.results"
. De este modo, el resultado final del estado, que puede pasar al siguiente estado, es el siguiente:
{
"addressResult": {
"approved": true,
"message": "address validation passed"
},
"identityResult": {
"approved": true,
"message": "identity validation passed"
}
}
Utilizar las características de la consola para visualizar los flujos de datos de entrada y salida
Puede visualizar el flujo de datos de entrada y salida entre los estados de los flujos de trabajo mediante el simulador de flujos de datos
Manipule la entrada seleccionada mediante el campo Parámetros
Si bien el InputPath
campo le ayuda a limitar la JSON entrada sin procesar que proporciona, con el Parameters
campo puede pasar una colección de pares clave-valor como entrada. Estos pares clave-valor pueden ser valores estáticos definidos en la definición de la máquina de estado o valores seleccionados de la entrada bruta mediante InputPath
.
En sus flujos de trabajo, Parameters
se aplican después. InputPath
Parameters
le ayudan a especificar cómo la tarea subyacente acepta su carga útil de entrada. Por ejemplo, imagine que si la función check-address
Lambda acepta un parámetro de cadena como entrada en lugar de los JSON datos, puede utilizar el Parameters
campo para transformar la entrada.
En el siguiente ejemplo, el Parameters
campo recibe la entrada que seleccionó utilizando InputPath
en la Seleccione partes específicas de la entrada sin procesar mediante el filtro InputPath sección y aplica la States.Format
función intrínseca a los elementos de entrada para crear una cadena llamadaaddressString
. Las funciones intrínsecas le ayudan a realizar operaciones básicas de procesamiento de datos en una entrada determinada. Para obtener más información, consulte Funciones intrínsecas.
"Parameters": { "addressString.$": "States.Format('{}. {}, {} - {}', $.street, $.city, $.state, $.zip)" }
En consecuencia, se crea la siguiente cadena y se proporciona a la función Lambda de dirección de verificación como entrada.
nota
Si actualiza la entrada con este ejemplo y ejecuta la máquina de estados, devolverá un error porque la función Lambda no acepta la entrada en el formato actualizado.
{ "addressString.$": "123 Main St. Columbus, OH - 43219" }
Siguientes pasos
En el último temaDepurar errores, aprenderás a depurar errores en tus flujos de trabajo de Step Functions.