Comment résoudre les problèmes liés aux tâches planifiées dans Amazon ECS ?

Date de la dernière mise à jour : 31/03/2022

J'ai planifié l'exécution périodique de ma tâche Amazon Elastic Container Service (Amazon ECS). Toutefois, ma tâche Amazon ECS n'est pas déclenchée. Je n'obtiens pas les journaux d'exécution ou l'historique des tâches du cluster.

Solution

Lorsque vous utilisez une tâche Amazon ECS planifiée, Amazon CloudWatch Events appelle l'API RunTask dans Amazon ECS pour exécuter les tâches en votre nom.

Votre tâche Amazon ECS planifiée peut ne pas être appelée pour les raisons suivantes :

  • L'heure ou l'expression cron Amazon EventBridge n'est pas correctement configurée.
  • La règle EventBridge n'invoque pas la cible.
  • L'API RunTask n'a pas pu être exécutée.
  • Le conteneur se ferme en raison de problèmes d'application ou de contraintes de ressources.

Vérifiez si l'expression cron EventBridge est configurée correctement

Pour obtenir l'expression cron EventBridge, exécutez la commande AWS Command Line Interface (AWS CLI) suivante :

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

Dans la sortie de la commande, vous pouvez afficher l'expression cron EventBridge configurée dans le paramètre ScheduleExpression. Assurez-vous de définir la planification de la règle dans le fuseau horaire UTC+0.

Remarque : si vous recevez des erreurs lors de l'exécution des commandes depuis l'interface de ligne de commande AWS, assurez-vous que vous utilisez la version AWS CLI la plus récente.

Vérifiez si la règle invoque la cible

Utilisez les métriques Amazon CloudWatch générées par EventBridge pour afficher les performances de la règle. Les points de données Invocations indiquent que la cible a été appelée par la règle. Si des points de données FailedInvocations sont présents, il y a un problème lors de l'appel de la cible. FailedInvocations représente un échec permanent et peut être le résultat de mauvaises autorisations ou d'une mauvaise configuration de la cible.

Pour consulter les métriques CloudWatch de la règle EventBridge, procédez comme suit :

  1. Ouvrez la console CloudWatch.
  2. Dans le panneau de navigation, choisissez Metrics (Métriques), puis All Metrics (Toutes les métriques).
  3. Choisissez Events (Événements).
  4. Choisissez By Rule Name (Par nom de règle).
  5. Sélectionnez les métriques TriggerRules, Invocations et FailedInvocations (si disponibles) de la règle EventBridge configurée pour exécuter la tâche ECS.
  6. Choisissez l'onglet Graphed metrics (Métriques graphiques).
  7. Pour toutes les métriques répertoriées, sélectionnez SUM pour Statistic (Statistique).

Si des points de données FailedInvocations sont présents, il peut y avoir un problème lié à des autorisations cibles inadéquates. Assurez-vous qu'EventBridge a accès pour appeler votre tâche ECS. Vérifiez que le rôle AWS Identity and Access Management (IAM) d'EventBridge disposent des autorisations requises. Pour plus d'informations, consultez Rôle IAM CloudWatch Events Amazon ECS.

Vérifiez si l'action RunTask a été exécutée

Pour vérifier si l'API RunTask a été exécutée, recherchez RunTask dans l'historique des événements AWS CloudTrail dans la plage de temps à laquelle la tâche ECS planifiée devait être appelée.

Pour savoir si la tâche planifiée n'a pas été appelée en raison de l'échec de l'action RunTask, procédez comme suit :

  1. Ouvrez la console AWS CloudTrail.
  2. Dans le panneau de navigation, sélectionnez Event history (Historique des événements).
  3. Dans la page Historique des événements, pour Lookup attributes (Attributs de recherche), sélectionnez Event name (Nom de l'événement).
  4. Pour Enter an event name (entrez un nom d'événement), saisissez RunTask.
  5. Choisissez la plage de temps dans le filtre de plage de temps au moment où la tâche ECS planifiée devait s'exécuter.
    Remarque : les valeurs prédéfinies pour la plage de temps sont 30 minutes, 1 heure, 3 heures et 12 heures. Pour spécifier une plage de temps personnalisée, choisissez Custom (Personnalisée).
  6. Dans la liste des résultats, choisissez l'événement que vous souhaitez afficher.
  7. Faites défiler jusqu'à Event record (Enregistrement de l'événement) sur la page Details pour afficher l'enregistrement de l'événement JSON.
  8. Recherchez les éléments errorMessage ou responseElements.failures.reason dans l'enregistrement de l'événement JSON.
    Ces éléments de l'enregistrement de l'événement JSON affichent la raison pour laquelle la tâche ECS planifiée n'est pas appelée.

Pour obtenir des exemples de motifs d'échec de l'API RunTask et de leurs causes, consultez la section Motifs d'échec d'API.

Vérifiez si le conteneur s'est fermé après l'exécution de la tâche

Les tâches Amazon ECS peuvent être arrêtées même après l'exécution réussie de la tâche en raison de problèmes d'application ou de contraintes de ressources. Pour plus d'informations, consultez Comment résoudre les problèmes liés à la fermeture des conteneurs de mes tâches Amazon ECS ?


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?