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.
Uso de CloudWatch registros para registrar el historial de ejecuciones en Step Functions
Los flujos de trabajo estándar registran el historial de ejecución enAWS Step Functions, aunque si lo desea, puede configurar el registro en Amazon CloudWatch Logs.
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 ver el historial de ejecución y los resultados de un flujo de trabajo rápido, debe configurar el registro en Amazon CloudWatch Logs. La publicación de registros no bloquea ni ralentiza las ejecuciones.
Garantías de entrega de registro
Amazon CloudWatch Logs se entrega haciendo todo lo 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 CloudWatch los cargos por los registros
Configuración de registros
Al crear un flujo de trabajo estándar mediante la consola Step Functions, esa máquina de estados no se configurará para enviar CloudWatch registros a Logs. Al crear un flujo de trabajo rápido mediante la consola Step Functions, esa máquina de estados se configurará de forma predeterminada para enviar CloudWatch registros a Logs.
Para los flujos de trabajo exprés, Step Functions puede crear un rol con la política AWS Identity and Access Management (IAM) necesaria para CloudWatch los registros. 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.
Para cada ejecución iniciada desde la consola, Step Functions proporciona un enlace a CloudWatch los registros, configurado con el filtro correcto para recuperar los eventos de registro específicos de esa ejecución.
Si lo desea, puede configurar AWS KMS las claves 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 pasar el LoggingConfigurationparámetro cuando utilice CreateStateMachineo UpdateStateMachine. Puede analizar más a fondo sus datos en CloudWatch CloudWatch Logs Insights. Para obtener más información, consulte Análisis de datos de registro con CloudWatch Logs Insights.
CloudWatch Registra las cargas útiles
Los eventos del historial de ejecución pueden contener propiedades de entrada o salida en sus definiciones. Si la entrada de escape o la salida de escape enviada a CloudWatch Logs supera los 248 KiB, se truncará como resultado de las cuotas de CloudWatch Logs.
-
Para determinar si una carga se ha truncado, revise las propiedades
inputDetailsyoutputDetails. Para obtener más información, consulte el Tipo de datosHistoryEventExecutionDataDetails. -
En el caso de los flujos de trabajo estándar, puede ver el historial de ejecución completo mediante
GetExecutionHistory. -
GetExecutionHistoryno está disponible para flujos de trabajo rápidos. Si desea ver las entradas y salidas completas, puede utilizar Amazon S3 ARNs. Para obtener más información, consulte Uso de Amazon S3 ARNs en lugar de transferir grandes cargas en Step Functions.
Políticas de IAM para iniciar sesión en Logs CloudWatch
También tendrá que configurar la función de IAM de ejecución de su máquina de estado para tener el permiso adecuado para iniciar sesión en CloudWatch los registros, 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 Resource campo. CloudWatch Las acciones de la API, 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 CloudWatch los recursos, consulta CloudWatch Logslos recursos y las operaciones en la Guía del CloudWatch usuario de Amazon.
-
Para obtener información sobre los permisos que necesita para configurar el envío de CloudWatch registros a 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 al iniciar sesión en CloudWatch Logs
Si su máquina de estado no puede enviar CloudWatch registros a Logs o recibe el error: "AccessDeniedException : The state machine IAM Role is not authorized to access
the Log Destination«, intente los siguientes pasos:
-
Compruebe que la función de ejecución de su máquina de estado tenga permiso para iniciar sesión en CloudWatch Logs.
Cuando llames a CreateStateMachinelos puntos finales de la UpdateStateMachineAPI, asegúrate de que la función de IAM especificada en el
roleArnparámetro proporciona los permisos necesarios, como se muestra en el ejemplo anterior de política de IAM. -
Compruebe que la política de recursos de CloudWatch Logs no supere el límite de 5.120 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/statespara 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 Evitar los límites CloudWatch de tamaño de la política de recursos. -
Compruebe que el número de políticas de recursos de CloudWatch registros de la cuenta sea inferior a diez.
CloudWatch Logs 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 CloudWatch de registros
Para verificar el problema, compruebe la cantidad de políticas de recursos mediante el comando de la CLI:
aws logs describe-resource-policiesPara 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:
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>