Tratamiento de condiciones de error mediante una máquina de estado de funciones por pasos - 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.

Tratamiento de condiciones de error mediante una máquina de estado de funciones por pasos

En este tutorial, creará una máquina de AWS Step Functions estados con un Estados alternativos campo. El Catch campo usa una AWS Lambda función para responder con una lógica condicional basada en el tipo de mensaje de error. Esta técnica se denomina control de errores de funciones.

Para obtener más información, consulte Errores de la función AWS Lambda en Node.js en la Guía para desarrolladores de AWS Lambda .

nota

También puede crear máquinas de estado que reintenten en los tiempos de espera o que usen Catch para adoptar un estado específico cuando se produce un error o se agota un tiempo de espera. Para ver ejemplos de estas técnicas de control de errores, consulte Ejemplos sobre el uso de Retry y Catch.

Paso 1: Crear una función de Lambda que no funciona correctamente

Utilice una función de Lambda para simular una condición de error.

importante

Asegúrese de que su función Lambda esté en la misma AWS cuenta y AWS región que su máquina de estado.

  1. Abra la AWS Lambda consola en https://console.aws.amazon.com/lambda/.

  2. Elija Crear función.

  3. Seleccione Usar un esquema, introduzca step-functions en el cuadro de búsqueda y, a continuación, elija el esquema Lanzar un error personalizado.

  4. En Nombre de la función, introduzca FailFunction.

  5. En Rol, mantenga la selección predeterminada (Crear un nuevo rol con permisos básicos de Lambda).

  6. El código siguiente aparece en el panel Código de función de Lambda.

    exports.handler = async (event, context) => { function CustomError(message) { this.name = 'CustomError'; this.message = message; } CustomError.prototype = new Error(); throw new CustomError('This is a custom error!'); };

    El objeto context devuelve el mensaje de error This is a custom error!

  7. Seleccione Crear función.

  8. Tras crear la función de Lambda, copie el nombre de recurso de Amazon (ARN) de la función que aparece en la esquina superior derecha de la página. Para copiar el ARN, haga clic en copy Amazon Resource Name . A continuación se muestra un ejemplo de ARN:

    arn:aws:lambda:us-east-1:123456789012:function:FailFunction
  9. Elija Implementar.

Paso 2: Probar la función de Lambda

Pruebe la función de Lambda para verla en acción.

  1. En la FailFunctionpágina, seleccione la pestaña Probar y, a continuación, elija Probar. No es necesario crear un evento de prueba.

  2. Para revisar los resultados de la prueba (el error simulado), en Resultado de la ejecución, expanda Detalles.

Paso 3: Crear una máquina de estado con un campo Catch

Utilice la consola de Step Functions para crear una máquina de estado que utilice un estado Task con un campo Catch. Agregue una referencia a la función de Lambda en el estado Tarea. La máquina de estado invoca la función de Lambda, que falla durante la ejecución. Step Functions reintenta la función dos veces utilizando un retroceso exponencial entre los reintentos.

  1. Abra la consola de Step Functions y seleccione Crear máquina de estado.

  2. En el cuadro de diálogo Elegir una plantilla, seleccione En blanco.

  3. Elija Seleccionar. Se abrirá Workflow Studio en Modo Diseño.

  4. Elija la pestaña Código para abrir el editor de código. En el editor de código también puede escribir y editar la definición Lenguaje de estados de Amazon de ASL de los flujos de trabajo.

  5. Pegue el siguiente código, pero sustituya el ARN de la función de Lambda que creó anteriormente en el campo Resource.

    { "Comment": "A Catch example of the Amazon States Language using an AWS Lambda function", "StartAt": "CreateAccount", "States": { "CreateAccount": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:FailFunction", "Catch": [ { "ErrorEquals": ["CustomError"], "Next": "CustomErrorFallback" }, { "ErrorEquals": ["States.TaskFailed"], "Next": "ReservedTypeFallback" }, { "ErrorEquals": ["States.ALL"], "Next": "CatchAllFallback" } ], "End": true }, "CustomErrorFallback": { "Type": "Pass", "Result": "This is a fallback from a custom Lambda function exception", "End": true }, "ReservedTypeFallback": { "Type": "Pass", "Result": "This is a fallback from a reserved error code", "End": true }, "CatchAllFallback": { "Type": "Pass", "Result": "This is a fallback from any error code", "End": true } } }

    Esta es una descripción de la máquina de estado realizada que utiliza el Amazon States Language. Define un único estado Task llamado CreateAccount. Para obtener más información, consulte Estructura de las máquinas de estado.

    Para obtener más información acerca de la sintaxis del campo Retry, consulte Ejemplos de máquina de estado que usan Retry y Catch.

    nota

    Los errores no controlados en Lambda se notifican como Lambda.Unknown en el resultado del error. Entre ellos se incluyen out-of-memory los errores y los tiempos de espera de las funciones. Puede buscar coincidencias de estos errores con Lambda.Unknown, States.ALL o States.TaskFailed para controlarlos. Cuando Lambda alcanza el número máximo de invocaciones, el error es. Lambda.TooManyRequestsException Para obtener más información acerca de errores de función de Lambda, consulte Tratamiento de errores y reintentos automáticos en la Guía para desarrolladores de AWS Lambda .

  6. (Opcional) En el Panel de visualización de gráficos, consulte la visualización gráfica en tiempo real de su flujo de trabajo.

  7. Especifique un nombre para la máquina de estado. Para ello, seleccione el icono de edición situado junto al nombre de la máquina de estado predeterminada de MyStateMachine. A continuación, en Configuración de máquina de estado, especifique un nombre en el cuadro Nombre de la máquina de estado.

    En este tutorial, escriba Catchfailure.

  8. (Opcional) En Configuración de máquina de estado, especifique otros ajustes del flujo de trabajo, como el tipo de máquina de estado y su función de ejecución.

    Para este tutorial, mantenga todas las selecciones predeterminadas en Configuración de máquina de estado.

  9. En el cuadro de diálogo Confirmar creación de rol, elija Confirmar para continuar.

    También puede seleccionar Ver configuración de rol para volver a Configuración de máquina de estado.

    nota

    Si se elimina el rol de IAM que crea Step Functions, no se podrá volver a crear más adelante. Asimismo, si se modifica el rol (por ejemplo, eliminando Step Functions de las entidades principales de la política de IAM), Step Functions no podrá restablecer la configuración original más adelante.

Paso 4: Ejecutar la máquina de estado

Después de crear la máquina de estado, puede ejecutarla.

  1. En la página Máquinas de estados, elija Catchfailure.

  2. En la página Catchfailure, seleccione Iniciar ejecución. Aparece el cuadro de diálogo Iniciar ejecución.

  3. En el cuadro de diálogo Iniciar ejecución, haga lo siguiente:

    1. (Opcional) Para identificar la ejecución, puede especificar un nombre en el cuadro Nombre. De forma predeterminada, Step Functions genera automáticamente un nombre de ejecución único.

      nota

      Step Functions le permite crear nombres para máquinas de estados, ejecuciones y actividades, así como etiquetas que contienen caracteres no ASCII. Estos nombres que no son ASCII no funcionan con Amazon. CloudWatch Para asegurarse de que puede realizar un seguimiento de CloudWatch las métricas, elija un nombre que utilice únicamente caracteres ASCII.

    2. (Opcional) En el cuadro Entrada, introduzca los valores de entrada en formato JSON para ejecutar el flujo de trabajo.

    3. Seleccione Iniciar ejecución.

    4. La consola de Step Functions le dirige a una página cuyo título es su ID de ejecución. Esta página se conoce como Detalles de la ejecución. En esta página, puede revisar los resultados de la ejecución a medida que avanza la ejecución o una vez finalizada.

      Para revisar los resultados de la ejecución, elija los estados individuales en la Vista de gráfico y, a continuación, elija las pestañas individuales del panel Detalles del paso para ver los detalles de cada estado, incluidas la entrada, la salida y la definición, respectivamente. Para obtener más información sobre la ejecución que puede ver en la página Detalles de la ejecución, consulte Página de detalles de ejecución: información general de la interfaz.

    Por ejemplo, para ver su mensaje de error personalizado, elija el CreateAccountpaso en la vista de gráfico y, a continuación, elija la pestaña Salida.

    Salida de error
    nota

    Puede conservar la entrada del estado con el error utilizando ResultPath. Consulte Se utiliza ResultPath para incluir tanto el error como la entrada en un Catch.