Uso de Registros de CloudWatch para registrar el historial de ejecuciones en Step Functions - AWS Step Functions

Uso de Registros de CloudWatch para registrar el historial de ejecuciones en Step Functions

Los flujos de trabajo estándar registran el historial de ejecuciones en AWS Step Functions, aunque opcionalmente puede configurar el registro en Registros de Amazon CloudWatch.

A diferencia de los flujos de trabajo estándar, los flujos de trabajo rápidos no registran el historial de ejecuciones en AWS Step Functions. Para consultar el historial de ejecuciones y los resultados de un flujo de trabajo rápido, tiene que configurar el registro en Registros de Amazon CloudWatch. La publicación de registros no bloquea ni ralentiza las ejecuciones.

Garantías de entrega de registro

Los registros de Amazon CloudWatch se entregan en la medida que es posible. La integridad y la puntualidad de las entradas de registro no están garantizadas. Si necesita un historial del flujo de trabajo garantizado en flujos de trabajo rápidos, le recomendamos que implemente los pasos del flujo de trabajo para registrar los datos en un servicio de almacenamiento de datos adecuado, como Amazon DynamoDB. Como alternativa, podría considerar la posibilidad de utilizar flujos de trabajo estándar para un historial de ejecución garantizado.

Información sobre precios

Al configurar el registro, se aplicarán los cargos de CloudWatch Logs y se le facturarán según la tarifa de los registros distribuidos. Para obtener más información, consulte Registros distribuidos en la pestaña Registros en la página Precios de CloudWatch.

Configuración de registros

Cuando crea un flujo de trabajo estándar utilizando la consola de Step Functions, esa máquina de estado no estará configurada para enviar registros a Registros de CloudWatch. Cuando crea un flujo de trabajo rápido utilizando la consola de Step Functions, esa máquina de estado estará configurada por defecto para enviar registros a Registros de CloudWatch.

Para los flujos de trabajo rápidos, Step Functions puede crear un rol con la política de AWS Identity and Access Management (IAM) necesaria para CloudWatch Logs. Si se crea un flujo de trabajo estándar o un flujo de trabajo rápido mediante la API, la CLI o CloudFormation, Step Functions no habilitará el registro de forma predeterminada y tendrá que asegurarse de que el rol tenga los permisos necesarios.

En cada ejecución que se inicia desde la consola, Step Functions proporciona un enlace a CloudWatch Logs, configurado con el filtro correcto para obtener los eventos de registro específicos para dicha ejecución.

Opcionalmente, puede configurar claves AWS KMS administradas por el cliente para cifrar sus registros. Consulte Cifrado de datos en reposo para obtener más información y configurar los permisos.

Para configurar el registro, puede transferir el parámetro LoggingConfiguration al utilizar CreateStateMachine o UpdateStateMachine. Puede analizar aún más los datos en CloudWatch Logs mediante CloudWatch Logs Insights. Para obtener más información, consulte Análisis de los datos de registro con información de CloudWatch Logs.

Cargas de CloudWatch Logs

Los eventos del historial de ejecución pueden contener propiedades de entrada o salida en sus definiciones. Si la entrada o la salida de escape enviada a CloudWatch Logs supera los 248 KiB, se truncará como resultado de las cuotas de CloudWatch Logs.

Políticas de IAM para registrarse en CloudWatch Logs

También tendrá que configurar el rol de IAM de ejecución de su máquina de estado para que tenga el permiso adecuado para registrarse en CloudWatch Logs, como se muestra en el siguiente ejemplo.

Ejemplo de políticas de IAM

A continuación se muestra una política de ejemplo que puede utilizar para configurar los permisos. Como se muestra en el siguiente ejemplo, debe especificar * en el campo Resource. Las acciones de la API de CloudWatch, como CreateLogDelivery y DescribelogGroups, no admiten los tipos de recursos definidos por Amazon CloudWatch Logs. Para obtener más información, consulte Acciones definidas por Amazon CloudWatch Logs.

  • Para obtener información sobre los recursos de CloudWatch, consulte Recursos y operaciones de CloudWatch Logs en la Guía del usuario de Amazon CloudWatch.

  • Para obtener información sobre los permisos necesarios para configurar el envío de registros a CloudWatch Logs, consulte Permisos de usuario en la sección titulada Registros enviados a CloudWatch Logs.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:CreateLogStream", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries", "logs:PutLogEvents", "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": "*" } ] }

Niveles de registro para eventos de ejecución de Step Functions

Los niveles de registro van de ALL a ERROR a FATAL y a OFF. Todos los tipos de eventos se registran cuando se configura en ALL; no se registra ningún tipo de evento cuando se configura en OFF. Para ERROR y FATAL, consulte la tabla siguiente.

Para obtener más información sobre los datos de ejecución que se muestran para las ejecuciones de flujos de trabajo rápidos en función de estos Niveles de registro, consulte Diferencias de experiencia entre las consolas estándar y rápidas.

Tipo de evento ALL ERROR FATAL OFF

ChoiceStateEntered

Registrado No registrado No registrado No registrado

ChoiceStateExited

Registrado No registrado No registrado No registrado

ExecutionAborted

Registrado Registrado Registrado No registrado

ExecutionFailed

Registrado Registrado Registrado No registrado

ExecutionStarted

Registrado No registrado No registrado No registrado

ExecutionSucceeded

Registrado No registrado No registrado No registrado

ExecutionTimedOut

Registrado Registrado Registrado No registrado

FailStateEntered

Registrado Registrado No registrado No registrado

LambdaFunctionFailed

Registrado Registrado No registrado No registrado
LambdaFunctionScheduled Registrado No registrado No registrado No registrado

LambdaFunctionScheduleFailed

Registrado Registrado No registrado No registrado

LambdaFunctionStarted

Registrado No registrado No registrado No registrado

LambdaFunctionStartFailed

Registrado Registrado No registrado No registrado

LambdaFunctionSucceeded

Registrado No registrado No registrado No registrado

LambdaFunctionTimedOut

Registrado Registrado No registrado No registrado

MapIterationAborted

Registrado Registrado No registrado No registrado

MapIterationFailed

Registrado Registrado No registrado No registrado

MapIterationStarted

Registrado No registrado No registrado No registrado

MapIterationSucceeded

Registrado No registrado No registrado No registrado

MapRunAborted

Registrado Registrado No registrado No registrado

MapRunFailed

Registrado Registrado No registrado No registrado

MapStateAborted

Registrado Registrado No registrado No registrado

MapStateEntered

Registrado No registrado No registrado No registrado

MapStateExited

Registrado No registrado No registrado No registrado

MapStateFailed

Registrado Registrado No registrado No registrado

MapStateStarted

Registrado No registrado No registrado No registrado

MapStateSucceeded

Registrado No registrado No registrado No registrado

ParallelStateAborted

Registrado Registrado No registrado No registrado

ParallelStateEntered

Registrado No registrado No registrado No registrado

ParallelStateExited

Registrado No registrado No registrado No registrado
ParallelStateFailed Registrado Registrado No registrado No registrado

ParallelStateStarted

Registrado No registrado No registrado No registrado

ParallelStateSucceeded

Registrado No registrado No registrado No registrado

PassStateEntered

Registrado No registrado No registrado No registrado

PassStateExited

Registrado No registrado No registrado No registrado

SucceedStateEntered

Registrado No registrado No registrado No registrado

SucceedStateExited

Registrado No registrado No registrado No registrado

TaskFailed

Registrado Registrado No registrado No registrado

TaskScheduled

Registrado No registrado No registrado No registrado
TaskStarted Registrado No registrado No registrado No registrado

TaskStartFailed

Registrado Registrado No registrado No registrado

TaskStateAborted

Registrado Registrado No registrado No registrado

TaskStateEntered

Registrado No registrado No registrado No registrado
TaskStateExited Registrado No registrado No registrado No registrado
TaskSubmitFailed Registrado Registrado No registrado No registrado
TaskSubmitted Registrado No registrado No registrado No registrado
TaskSucceeded Registrado No registrado No registrado No registrado
TaskTimedOut Registrado Registrado No registrado No registrado
WaitStateAborted Registrado Registrado No registrado No registrado
WaitStateEntered Registrado No registrado No registrado No registrado
WaitStateExited Registrado No registrado No registrado No registrado

Solución de problemas de registro en Registros de CloudWatch

Si su máquina de estado no puede enviar registros a Registros de CloudWatch o si recibe el error: “AccessDeniedException : The state machine IAM Role is not authorized to access the Log Destination”, intente los siguientes pasos:

  1. Compruebe que el rol de ejecución de su máquina de estado tenga permisos para registrar en Registros de CloudWatch.

    Al llamar a los puntos de conexión de la API CreateStateMachine o UpdateMachine, asegúrese de que el rol de IAM especificado en el parámetro roleArn proporciona los permisos necesarios, como se muestra en el ejemplo de política de IAM anterior.

  2. Compruebe que la política de recursos de Registros de CloudWatch no supere el límite de 5120 caracteres.

    Si la política supera el límite de caracteres, añada el prefijo a los nombres de los grupos de registros /aws/vendedlogs/states para conceder permisos a las máquinas de su estado y evitar el límite.

    Cuando crea un grupo de registros en la consola de Step Functions, los nombres sugeridos para los grupos de registros ya incluyen el prefijo /aws/vendedlogs/states. Para obtener más información sobre las mejores prácticas de registro, consulte Evasión de los límites de tamaño de políticas de recursos de CloudWatch.

  3. Compruebe que el número de políticas de recursos de registro de CloudWatch Logs en la cuenta sea inferior a diez.

    Registros de CloudWatch tiene una cuota de diez políticas de recursos por región y por cuenta. Si intenta habilitar el registro en una máquina de estado que ya tiene 10 políticas de recursos, la máquina de estado no se creará ni actualizará, y recibirá un error. Para obtener más información sobre las cuotas de registro, consulte Cuotas de Registros de CloudWatch.

    Para verificar el problema, compruebe la cantidad de políticas de recursos mediante el comando de la CLI:

    aws logs describe-resource-policies

    Para resolver el problema, modifique las políticas de recursos existentes.

    En primer lugar, realice una copia de seguridad de las políticas existentes. A continuación, una acciones o recursos similares en una nueva política y utilice el siguiente comando de la CLI para crear un nuevo origen de entrega en la cuenta:

    aws logs put-delivery-source

    Tras realizar una copia de seguridad de las políticas y actualizarlas, elimine las políticas que no se utilicen con el siguiente comando:

    aws logs delete-resource-policy --policy-name <PolicyNameToBeDeleted>