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.
Depurar errores en la consola Step Functions
En el tema anteriorConfigurar entrada y salida, aprendió a filtrar y manipular datos. Es posible que se produzcan errores en la configuración de la máquina de estado y en la selección de datos. En este último tema, se le presentará la depuración de errores de tiempo de ejecución mediante la consola Step Functions.
Es posible que se produzcan errores de tiempo de ejecución, como los siguientes:
Una JSON ruta no válida para el
Variable
campo en elChoice
estado.Problema de definición de la máquina de estado, por ejemplo, no se ha definido ninguna regla de correspondencia para un estado
Choice
.Expresiones de JSON ruta no válidas al aplicar filtros para manipular la entrada y la salida.
Fallos en las tareas debido a una excepción de la función de Lambda.
IAMerrores de permisos.
sugerencia
Para ver opciones adicionales de gestión de errores, consulteGestión de errores en los flujos de trabajo de Step Functions.
Depuración de la ruta no válida: error de elección de estado
Si especifica una JSON ruta incorrecta o irresoluble en el campo Variable del Choice
estado o no define una regla coincidente en el Choice
estado, recibirá un error al ejecutar el flujo de trabajo.
Para ilustrar el error de ruta no válida, en este tutorial se presenta un error de estado Choice
en el flujo de trabajo. Utilizará la máquina de CreditCardWorkflowestados y editará su definición para introducir el error.
Abra la consola Step Functions y, a continuación, elija la máquina de CreditCardWorkflowestados.
Seleccione Editar para editar la definición de la máquina de estado. Realice el cambio resaltado en el siguiente código en la definición de su máquina de estado.
{ "Comment": "A description of my state machine", "StartAt": "Get credit limit", "States": { "Get credit limit": { ... ... }, "Credit applied >= 5000?": { "Type": "Choice", "Choices": [ { "Variable": "$.Payload", "NumericLessThan": 5000, "Next": "Auto-approve limit" }, { "Variable": "$.Payload", "NumericGreaterThanEquals": 5000, "Next": "Wait for human approval" } ], "Default": "Wait for human approval" }, ... ... } }
Seleccione Guardar y, a continuación, seleccione Guardar de todos modos.
Ejecutar la máquina de estado.
En la página de detalles de ejecución de la máquina de estado, lleve a cabo alguna de las siguientes operaciones:
Seleccione Causa en el mensaje de error para ver el motivo del error de ejecución.
Seleccione Mostrar detalles de pasos en el mensaje de error para ver el paso que provocó el error.
En la pestaña Entrada y salida de la sección Detalles de pasos, pulse el botón de alternancia de Vista avanzada para ver la ruta de transferencia de datos de entrada y salida de un estado seleccionado.
En Vista gráfica, asegúrese de que se seleccione ¿Crédito aplicado >= 5000? y proceda del modo siguiente:
Vea el valor de entrada del estado en el cuadro Entrada.
Seleccione la pestaña Definición y observe la JSON ruta especificada para el campo Variable.
¿El valor de entrada para el crédito aplicado es superior a 5000? el estado es un valor numérico, mientras que usted especificó la JSON ruta del valor de entrada como
$.Payload
. Durante la ejecución de la máquina de estados, elChoice
estado no puede resolver esta JSON ruta porque no existe.
Edite la máquina de estado para especificar el valor del campo Variable como
$
.{ "Comment": "A description of my state machine", "StartAt": "Get credit limit", "States": { "Get credit limit": { ... ... }, "Credit applied >= 5000?": { "Type": "Choice", "Choices": [ { "Variable": "$", "NumericLessThan": 5000, "Next": "Auto-approve limit" }, { "Variable": "$", "NumericGreaterThanEquals": 5000, "Next": "Wait for human approval" } ], "Default": "Wait for human approval" }, ... ... } }
Depurar los errores de expresión de la JSON ruta al aplicar filtros de entrada y salida
Al trabajar con los filtros de entrada y salida, es posible que se produzcan errores de tiempo de ejecución debido a la especificación de expresiones de JSON ruta no válidas.
En el siguiente ejemplo, se utiliza la máquina de WorkflowInputOutputestados que creó en el tutorial 5 y se muestra un escenario en el que se utiliza el ResultSelector
filtro para seleccionar partes del resultado de la tarea.
Aplique el filtro
ResultSelector
para elegir una parte del resultado de la tarea para el paso Verificar identidad. Para ello, edite la definición de la máquina de estado de la siguiente manera:{ "StartAt": "Verify identity", "States": { "Verify identity": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:
check-identity
", "Payload": { "email": "jdoe@example.com", "ssn": "123-45-6789" } }, ... ... "ResultSelector": { "identity.$": "$.Payload.body.message" }", "End": true } } }Ejecutar la máquina de estado.
En la página de detalles de ejecución de la máquina de estado, lleve a cabo las siguientes operaciones:
Seleccione Causa en el mensaje de error para ver el motivo del error de ejecución.
Seleccione Mostrar detalles de pasos en el mensaje de error para ver el paso que provocó el error.
En el mensaje de error, tenga en cuenta que el contenido del nodo $.payload.BODY es una cadena de escape. JSON El error se ha producido porque no se puede hacer referencia a una cadena mediante la notación de ruta. JSON
Para hacer referencia al nodo $.payload.BODY.MESSAGE, haga lo siguiente:
Utilice la función
States.StringToJSON
intrínseca para convertir primero la cadena a un JSON formato.Especifique la JSON ruta del nodo $.payload.BODY.MESSAGE dentro de la función intrínseca.
"ResultSelector": { "identity.$":"States.StringToJson($.Payload.body.message)" }
Ejecute de nuevo la máquina de estado.
Conclusión y siguientes pasos
¡Enhorabuena! Has llegado al final de Explicación introductoria Step Functions.
Limpieza
Ahora que ha terminado de empezar, se recomienda limpiar (eliminar) los recursos que ya no desee utilizar. Limpiar AWS los recursos evita que tu cuenta incurra en más cargos.