Tutorial 8: Errores de depuración en la consola - AWS Step Functions

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.

Tutorial 8: Errores de depuración en la consola

Al trabajar con Step Functions, es posible que se produzcan errores de ejecución por motivos como los siguientes:

  • Una ruta JSON no válida para el campo Variable del Choice estado.

  • Problema de definición de máquina de estados, como que no se haya definido una regla de coincidencia para un Choice estado.

  • Expresiones de ruta JSON no válidas al aplicar filtros para manipular la entrada y la salida.

  • La tarea falla debido a una excepción de la función Lambda.

  • Errores de permisos de IAM.

En este tutorial, aprenderás a depurar algunos de estos errores mediante la consola de Step Functions. Para obtener más información, consulte Gestión de errores en Step Functions.

Depuración de la ruta no válida: error de estado de elección

Cuando especificas una ruta JSON incorrecta o irresoluble en el campo Variable del Choice estado o no defines una regla coincidente en el Choice estado, recibes un error mientras ejecutas el flujo de trabajo.

Para ilustrar el error de ruta no válida, este tutorial presenta un error de Choice estado en el flujo de trabajo. Utilizará la máquina de CreditCardWorkflowestados y editará su definición para introducir el error.

  1. Abra la consola de Step Functions y, a continuación, seleccione la máquina de CreditCardWorkflowestados.

  2. Seleccione Editar para editar la definición de la máquina de estados. Realice el cambio resaltado en el siguiente código en la definición de su máquina de estados.

    { "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" }, ... ... } }
  3. Selecciona Guardar y, a continuación, selecciona Guardar de todos modos.

  4. Haz funcionar la máquina estatal.

  5. En la página de detalles de ejecución de la ejecución de su máquina de estados, realice una de las siguientes acciones:

    1. Elija Causa en el mensaje de error para ver el motivo del error de ejecución.

    2. Seleccione Mostrar detalles del paso en el mensaje de error para ver el paso que provocó el error.

  6. En la pestaña Entrada y salida de la sección Detalles del paso, pulse el botón de conmutación de vista avanzada para ver la ruta de transferencia de datos de entrada y salida para un estado seleccionado.

  7. En la vista gráfica, asegúrate de que el crédito aplicado sea superior a 5000. se selecciona y realiza lo siguiente:

    1. Vea el valor de entrada del estado en el cuadro de entrada.

    2. Elija la pestaña Definición y observe la ruta JSON especificada para el campo Variable.

      ¿El valor de entrada del crédito aplicado es superior a 5000? state es un valor numérico, mientras que especificó la ruta JSON para el valor de entrada como$.Payload. Durante la ejecución de la máquina de estados, el Choice estado no puede resolver esta ruta JSON porque no existe.

  8. Edite la máquina de estados 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" }, ... ... } }

Depuración de errores de expresión de rutas JSON al aplicar filtros de entrada y salida

Al trabajar con los filtros de entrada y salida, es posible que se produzcan errores en tiempo de ejecución debido a la especificación de expresiones de ruta JSON no válidas.

El siguiente ejemplo usa la máquina de WorkflowInputOutputestados que creó en el Tutorial 5 y muestra un escenario en el que se usa el ResultSelector filtro para seleccionar partes del resultado de la tarea.

  1. Aplique el ResultSelector filtro para elegir una parte del resultado de la tarea para el paso Verificar identidad. Para ello, edite la definición de su máquina de estados 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 } } }
  2. Haz funcionar la máquina estatal.

  3. En la página de detalles de ejecución de la ejecución de su máquina de estados, haga lo siguiente:

    1. Elija Causa en el mensaje de error para ver el motivo del error de ejecución.

    2. Seleccione Mostrar detalles del paso en el mensaje de error para ver el paso que provocó el error.

  4. En el mensaje de error, observa que el contenido del nodo $.payload.body es una cadena JSON de escape. El error se ha producido porque no se puede hacer referencia a una cadena mediante la notación de rutas JSON.

  5. Para hacer referencia al nodo $.payload.Body.Message, haga lo siguiente:

    1. Utilice la función States.StringToJSON intrínseca para convertir primero la cadena a un formato JSON.

    2. Especifique la ruta JSON para el nodo $.payload.body.Message dentro de la función intrínseca.

      "ResultSelector": { "identity.$":"States.StringToJson($.Payload.body.message)" }
  6. Vuelva a ejecutar la máquina de estados.