Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Solución de problemas de Step Functions

Modo de enfoque
Solución de problemas de Step Functions - 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.

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.

Si surgen problemas a la hora de trabajar con Step Functions, utilice los siguientes recursos.

Los temas siguientes proporcionan consejos para solucionar problemas de errores y problemas que puedan surgir relacionados con las máquinas de estado de Step Functions, las integraciones de servicios, las actividades y los flujos de trabajo. Si se encuentra con un problema que no aparezca en esta lista, puede utilizar el botón Comentarios de esta página para notificarlo.

Para obtener más consejos sobre la resolución de problemas y respuestas a preguntas comunes de soporte, visite el Centro de conocimientos de AWS.

Solución de problemas generales

No puedo crear una máquina de estado.

Es posible que el rol de IAM asociado a la máquina de estado no tenga permisos suficientes. Compruebe los permisos del rol de IAM, incluso para las tareas AWS de integración de servicios, X-Ray y CloudWatch registro. Se requieren permisos adicionales para los estados de las tareas de estado de .sync.

No puedo usar a para JsonPath hacer referencia al resultado de la tarea anterior.

En el caso de a JsonPath, una clave JSON debe terminar en.$. Esto significa que a solo se JsonPath puede usar en un par clave-valor. Si desea utilizar JsonPath otros lugares, como una matriz, puede utilizar funciones intrínsecas. Por ejemplo, puede utilizar algo similar a lo siguiente:

Salida de tarea A:

{ "sample": "test" }

Tarea B:

{ "JsonPathSample.$": "$.sample" }

Se produjo un retraso en las transiciones de estado.

Para los flujos de trabajo estándar hay un límite en el número de transiciones de estado. Cuando supera el límite de transiciones de estado, Step Functions retrasa las transiciones de estado hasta que se llene el bucket de la cuota. La regulación de los límites de transición de estado se puede monitorear revisando la ExecutionThrottled métrica en la Métricas de ejecución sección de la página de CloudWatch métricas.

Cuando inicio nuevas ejecuciones de flujos de trabajo estándar se produce un error de ExecutionLimitExceeded.

Step Functions tiene un límite de 1 000 000 de ejecuciones abiertas para cada una Cuenta de AWS de ellas. Región de AWS Si supera este límite, Step Functions lanza un error de ExecutionLimitExceeded. Este límite no se aplica a los flujos de trabajo rápidos. Puede utilizar OpenExecutionCount para hacer un seguimiento de cuándo se acerca al OpenExecutionLimit y crear alarmas que le notifiquen de forma proactiva en ese caso. OpenExecutionCount es un número aproximado de flujos de trabajo abiertos. Para obtener más información, consulte Métricas de ejecución.

Un error en una rama en estado paralelo provoca un error en toda la ejecución.

Este es el comportamiento esperado. Para evitar errores al utilizar un estado paralelo, configure Step Functions para detectar los errores lanzados desde cada rama.

Solución de problemas de integración de servicios

Mi trabajo está finalizado en el servicio descendente, pero en Step Functions el estado de la tarea sigue siendo "En curso" o su finalización se retrasa.

Para los patrones de integración de .sync servicios, Step Functions utiliza EventBridge reglas, en sentido descendente o una combinación de ambas APIs, para detectar el estado de las tareas posteriores. Para algunos servicios, Step Functions no crea EventBridge reglas de supervisión. Por ejemplo, para la integración AWS Glue de servicios, en lugar de utilizar EventBridge reglas, Step Functions realiza una glue:GetJobRun llamada. Dada la frecuencia de las llamadas a la API, hay una diferencia entre la finalización de tareas descendentes y el tiempo de finalización de tareas de Step Functions. Step Functions requiere permisos de IAM para gestionar las EventBridge reglas y realizar llamadas al servicio descendente. Para obtener más información sobre cómo la falta de permisos en su rol de ejecución puede afectar a la finalización de las tareas, consulte Permisos adicionales para las tareas que utilizan .sync.

Quiero devolver una salida de JSON desde una ejecución de máquina de estado anidada.

Hay dos integraciones de servicios síncronos de Step Functions para Step Functions: startExecution.sync y startExecution.sync:2. Ambos esperan a que se complete la máquina de estado anidada, pero devuelven diferentes formatos Output. Puede utilizar startExecution.sync:2 para devolver una salida de JSON en Output.

No puedo invocar una función de Lambda desde otra cuenta.

Acceder a la función de Lambda con compatibilidad entre cuentas

Si el acceso a los AWS recursos entre cuentas está disponible en su región, utilice el siguiente método para invocar una función Lambda desde otra cuenta.

Para invocar un recurso entre cuentas en los flujos de trabajo, haga lo siguiente:

  1. Cree un rol de IAM en la cuenta de destino que contiene el recurso. Esta función otorga a la cuenta de origen, que contiene la máquina de estado, permisos para acceder a los recursos de la cuenta de destino.

  2. En la definición del estado Task, especifique el rol de IAM de destino que asumirá la máquina de estado antes de invocar el recurso entre cuentas.

  3. Modifique la política de confianza del rol de IAM de destino para permitir que la cuenta de origen asuma esta función temporalmente. La política de confianza debe incluir el nombre de recurso de Amazon (ARN) de la máquina de estado definida en la cuenta de origen. Además, defina los permisos adecuados en la función de IAM de destino para llamar al recurso. AWS

  4. Actualice el rol de ejecución de la cuenta de origen para incluir el permiso necesario para asumir el rol de IAM de destino.

Consulte Acceso a AWS recursos multicuenta en Step Functions en los tutoriales para ver un ejemplo.

nota

Puede configurar la máquina de estado para que asuma un rol de IAM para acceder a los recursos desde varias Cuentas de AWS. No obstante, una máquina de estado solo puede asumir un rol de IAM en un momento dado.

Para ver un ejemplo de una definición de estado de Task que especifica un recurso multicuenta, consulte Ejemplos del campo Credentials de estado de tarea.

Acceder a la función de Lambda sin compatibilidad entre cuentas

Si el acceso a los AWS recursos entre cuentas no está disponible en su región, utilice el siguiente método para invocar una función Lambda desde otra cuenta.

En el campo Resource del estado de Task, utilice arn:aws:states:::lambda:invoke y pase el FunctionArn en parámetros. El rol de IAM asociado a la máquina de estado debe tener los permisos adecuados para invocar funciones de Lambda entre cuentas: lambda:invokeFunction.

{ "StartAt":"CallLambda", "States":{ "CallLambda":{ "Type":"Task", "Resource":"arn:aws:states:::lambda:invoke", "Parameters":{ "FunctionName":"arn:aws:lambda:us-west-2:123456789012:function:my-function" }, "End":true } } }

No puedo ver los tokens de tarea transferidos desde los estados .waitForTaskToken.

En el campo Parameters del estado de Task, debes pasar un token de tarea. Por ejemplo, puede utilizar algo similar al código siguiente.

{ "StartAt":"taskToken", "States":{ "taskToken":{ "Type":"Task", "Resource":"arn:aws:states:::lambda:invoke.waitForTaskToken", "Parameters":{ "FunctionName":"get-model-review-decision", "Payload":{ "token.$":"$$.Task.Token" }, }, "End":true } } }
nota

Puede intentar utilizar .waitForTaskToken con cualquier acción de la API. Sin embargo, algunas APIs no tienen ningún parámetro adecuado.

Solución de problemas de actividades

La ejecución de mi máquina de estado está bloqueada en un estado de actividad.

El estado de una tarea de actividad no comienza hasta que se sondea un token de tarea mediante la acción de la GetActivityTaskAPI. Se recomienda añadir un tiempo de espera de nivel de tarea para evitar que la ejecución se bloquee. Para obtener más información, consulte Uso de tiempos de espera para evitar las ejecuciones bloqueadas del flujo de trabajo de Step Functions.

Si tu máquina de estados se bloquea durante el ActivityScheduledevento, esto indica que tu flota de trabajadores en actividad tiene problemas o está infradimensionada. Deberías monitorear la ActivityScheduleTime CloudWatch métrica y configurar una alarma cuando ese tiempo aumente. Sin embargo, para agotar el tiempo de espera de ejecuciones de máquina de estado bloqueadas en las que el estado Activity no pase al estado ActivityStarted, defina un tiempo de espera de nivel de máquina de estado. Para ello, especifique un campo TimeoutSeconds al principio de la definición de máquina de estado, fuera del campo States.

Mi proceso de trabajo de actividad agota el tiempo de espera mientras espera un token de tarea.

Los trabajadores utilizan la acción de la GetActivityTaskAPI para recuperar una tarea con el ARN de actividad especificado cuya ejecución está programada para ser ejecutada por una máquina de estado en ejecución. GetActivityTaskinicia un sondeo largo para que el servicio mantenga abierta la conexión HTTP y responda en cuanto haya una tarea disponible. El tiempo máximo que el servicio retiene la solicitud antes de responder es de 60 segundos. Si no hay ninguna tarea disponible en 60 segundos, el sondeo devuelve un taskToken con una cadena nula. Para evitar este tiempo de espera, configura un socket del lado del cliente con un tiempo de espera de al menos 65 segundos en el AWS SDK o en el cliente que utilices para realizar la llamada a la API.

Solución de problemas de flujos de trabajo rápidos

Se agota el tiempo de espera de mi aplicación antes de recibir una respuesta de una llamada a la API StartSyncExecution.

Configura un tiempo de espera del socket del lado del cliente en el AWS SDK o el cliente que utilices para realizar la llamada a la API. Para recibir una respuesta, el tiempo de espera debe tener un valor superior a la duración de las ejecuciones de flujos de trabajo rápidos.

No puedo ver el historial de ejecuciones para solucionar los errores de flujos de trabajo rápidos.

Los flujos de trabajo rápidos no registran el historial de ejecuciones en AWS Step Functions. En su lugar, debes activar el CloudWatch registro. Una vez activado el registro, puede utilizar las consultas de CloudWatch Logs Insights para revisar las ejecuciones de Express Workflow. También puede ver el historial de ejecuciones de flujos de trabajo rápidos en la consola de Step Functions si selecciona el botón Habilitar de la pestaña Ejecuciones. Para obtener más información, consulte Visualización de los detalles de ejecución en la consola de Step Functions.

Para mostrar las ejecuciones en función de su duración:

fields ispresent(execution_arn) as exec_arn | filter exec_arn | filter type in ["ExecutionStarted", "ExecutionSucceeded", "ExecutionFailed", "ExecutionAborted", "ExecutionTimedOut"] | stats latest(type) as status, tomillis(earliest(event_timestamp)) as UTC_starttime, tomillis(latest(event_timestamp)) as UTC_endtime, latest(event_timestamp) - earliest(event_timestamp) as duration_in_ms by execution_arn | sort duration_in_ms desc

Para mostrar ejecuciones con error y canceladas:

fields ispresent(execution_arn) as isRes | filter type in ["ExecutionFailed", "ExecutionAborted", "ExecutionTimedOut"]
PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.