¿Cómo puedo solucionar los problemas relacionados con las tareas programadas en Amazon ECS?

Última actualización: 31/03/2022

He programado mi tarea de Amazon Elastic Container Service (Amazon ECS) para que se ejecute periódicamente. Sin embargo, mi tarea de Amazon ECS no se activa. No recibo los registros de ejecución ni el historial de las tareas del clúster.

Resolución

Cuando utiliza una tarea programada de Amazon ECS, Amazon CloudWatch Events llama a la API RunTask para que Amazon ECS ejecute las tareas en su nombre.

Es posible que su tarea programada de Amazon ECS no se invoque debido a los siguientes motivos:

  • La expresión de tiempo o cron de Amazon EventBridge está configurada incorrectamente.
  • La regla de EventBridge no invoca el destino.
  • La API RunTask no se pudo ejecutar.
  • La salida del contenedor se debe a problemas de aplicaciones o a limitaciones de recursos.

Compruebe si la expresión cron de EventBridge está configurada incorrectamente

Para obtener la expresión cron de EventBridge, ejecute el siguiente comando de la interfaz de línea de comandos de AWS Command Line Interface (AWS CLI):

$ aws events describe-rule --name "example-rule" --region example-region

En la salida del comando, puede ver la expresión cron configurada de EventBridge en el parámetro ScheduleExpression. Asegúrese de configurar el horario de la regla en la zona horaria UTC+0.

Nota: Si recibe errores al ejecutar los comandos de AWS CLI, asegúrese de que está utilizando la versión más reciente de AWS CLI.

Compruebe si la regla no invoca el destino

Utilice las métricas de Amazon CloudWatch generadas por EventBridge para ver el rendimiento de la regla. Los puntos de datos de Invocation indican que el destino fue invocado por la regla. Si hay puntos de datos de FailedInvocations, significa que hay un problema al invocar el destino. FailedInvocations indica un error permanente y puede ser el resultado de permisos incorrectos o una mala configuración del destino.

Para revisar las métricas de CloudWatch para la regla de EventBridge, haga lo siguiente:

  1. Abra la consola de CloudWatch.
  2. En el panel de navegación, elija Metrics (Métricas) y, a continuación, elija All metrics (Todas las métricas).
  3. Elija Events (Eventos).
  4. Elija By Rule Name (Por nombre de regla).
  5. Seleccione las métricas TriggerRules, Invocations y FailedInvocations (si están disponibles) para la regla de EventBridge que está configurada para ejecutar la tarea de ECS.
  6. Elija la pestaña Graphed metrics (Métricas gráficas).
  7. En todas las métricas de la lista, seleccione SUM para la Statistic (Estadística).

Si hay puntos de datos FailedInvocations presentes, puede haber un problema relacionado con permisos de destino inadecuados. Asegúrese de que EventBridge tenga acceso para invocar su tarea de ECS. Compruebe que el rol de AWS Identity and Access Management (IAM) de EventBridge tenga los permisos necesarios. Para obtener más información, consulte Rol de IAM de Amazon ECS CloudWatch Events.

Compruebe si la acción RunTask no se ejecutó

Para comprobar si la API RunTask no se pudo ejecutar, busque RunTask en el historial de eventos de AWS CloudTrail dentro del rango de tiempo en el que se esperaba que se invocara la tarea de ECS programada.

Para saber si la tarea programada no se invocó porque la acción RunTask falló, haga lo siguiente:

  1. Abra la consola de AWS CloudTrail.
  2. En el panel de navegación, elija Event history (Historial de eventos).
  3. En la página Event history (Historial de eventos), en Lookup attributes (Atributos de búsqueda), seleccione Event name (Nombre del evento).
  4. En Enter an event name (Ingrese un nombre de evento), ingrese RunTask.
  5. Elija el rango de tiempo en el filtro de rango de tiempo en función de cuándo se esperaba que se ejecutara la tarea de ECS programada.
    Nota: Los valores preestablecidos para el rango de tiempo son 30 minutos, 1 hora, 3 horas y 12 horas. Para especificar un rango de tiempo personalizado, elija Custom (Personalizado).
  6. En la lista de resultados, elija el evento que desea ver.
  7. Desplácese hasta Event record (Registro de eventos) en la página Details (Detalles) para ver el registro de eventos JSON.
  8. Busque los elementos errorMessage o responseElements.failures.reason en el registro de eventos JSON.
    Estos elementos del registro de eventos JSON muestran el motivo por el que no se invoca la tarea de ECS programada.

Para ver ejemplos de motivos de error de la API RunTask y sus causas, consulte Motivos de error de la API.

Compruebe si el contenedor salió después de la ejecución de la tarea

Es posible que las tareas de Amazon ECS se detengan incluso después de que la tarea se ejecute correctamente debido a problemas de aplicaciones o a limitaciones de recursos. Para obtener más información, consulte ¿Cómo puedo solucionar problemas con los contenedores salientes de mis tareas de Amazon ECS?


¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?