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

Lecture de 7 minute(s)
0

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

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Lorsque vous utilisez une tâche planifiée, Amazon EventBridge appelle l'API RunTask dans Amazon ECS pour exécuter les tâches en votre nom. Il est possible que votre tâche Amazon ECS planifiée ne soit pas invoquée pour les raisons suivantes :

  • Vous avez incorrectement configuré l'heure ou l'expression cron EventBridge.
  • La règle ou la planification EventBridge n'invoque pas la cible.
  • L'API RunTask n'a pas pu s'exécuter.
  • L'instance de conteneur s'est fermée en raison de problèmes liés à l'application ou de contraintes de ressources.
  • Les tâches planifiées ont échoué en raison de contraintes de capacité.
  • Les tâches planifiées ont échoué en raison de problèmes de connectivité réseau.

Vérifier que l'expression cron dans EventBridge est correctement configurée

Pour obtenir l'expression cron EventBridge, exécutez l'une des commandes de l'AWS CLI suivantes.

Si vous utilisez les règles EventBridge, exécutez la commande describe-rule :

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

Si vous utilisez EventBridge Scheduler, exécutez la commande get-schedule :

aws scheduler get-schedule --name example-schedule --region example-region

Remarque : Remplacez example-rule par le nom de votre règle, example-schedule par le nom de votre planification et example-region par votre région AWS.

Dans la sortie de la commande, vérifiez l'expression cron EventBridge dans le paramètre ScheduleExpression. Assurez-vous de définir la planification des règles sur le fuseau horaire UTC+0.

Vérifer que la cible ou la planification n’invoque pas la cible

Pour vérifier les métriques Invocations et FailedInvocations Amazon CloudWatch pour la règle EventBridge, procédez comme suit :

  1. Ouvrez la console CloudWatch.
  2. Dans le volet de navigation, choisissez Métriques, puis sélectionnez Toutes les métriques.
  3. Choisissez Événements.
  4. Choisissez Par nom de règle.
  5. Sélectionnez TriggerRules, Invocations et FailedInvocations pour la règle EventBridge qui exécute la tâche Amazon ECS.
  6. Choisissez l'onglet Graphique des métriques.
  7. Dans Statistiques, sélectionnez SUM pour chaque métrique.

Pour vérifier les performances du planificateur EventBridge, consultez les métriques CloudWatch InvocationAttemptCount, TargetErrorCount et InvocationDroppedCount.

Si vous voyez des données FailedInvocations ou InvocationDroppedCount, vérifiez que le rôle EventBridge AWS Identity and Access Management (IAM) est autorisé à invoquer votre tâche.

Si vous voyez des données TargetErrorCount, cela signifie qu'un problème est survenu avec l'invocation de la cible. Vérifiez si votre tâche a démarré, a démarré et immédiatement échoué, ou si elle n'est pas terminée.

Vérifier si l'action RunTask a échoué

Procédez comme suit :

  1. Ouvrez la console AWS CloudTrail.
  2. Dans le volet de navigation, sélectionnez Historique des événements.
  3. Dans Attributs de recherche, sélectionnez Nom de l'événement.
  4. Dans Saisissez un nom d’événement, saisissez « run task ».
  5. Dans le filtre de plage horaire, sélectionnez les heures auxquelles vous vous attendiez à ce que la tâche Amazon ECS planifiée soit exécutée.
  6. Dans le tableau, sélectionnez l'événement que vous souhaitez consulter.
  7. Dans les enregistrements d'événements JSON, recherchez errorMessage ou responseElements.failures.reason pour confirmer que l'API n'a pas invoqué la tâche planifiée.
    Remarque : Vous pouvez trouver l'ID de la tâche qui a échoué dans le champ responseElements.tasks.taskARN.
  8. Résolvez la panne de l'API.

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

Même une fois la tâche exécutée avec succès, les tâches Amazon ECS peuvent s'arrêter en raison de problèmes liés à l'application ou de contraintes de ressources. Pour résoudre ce problème, consultez la section Comment résoudre les problèmes liés aux tâches Amazon ECS qui s'arrêtent ou ne démarrent pas à la fermeture de mon conteneur ?

Vérifier les problèmes liés aux contraintes de capacité

Les problèmes de contrainte de capacité qui entraînent l'échec des tâches se produisent lorsque votre cluster ne dispose pas d’une quantité suffisante de ressources de calcul, telles que le processeur et la mémoire. Ou bien, les problèmes surviennent lorsque d'autres charges de travail exécutées sur le même cluster entraînent une utilisation élevée des ressources. Des contraintes ou des stratégies restrictives en matière de placement des tâches peuvent également réduire les ressources disponibles.

Pour surveiller votre utilisation des ressources, configurez Container Insights sur vos clusters Amazon ECS. Vous pouvez également configurer des alarmes CloudWatch pour vous avertir lorsque vous atteignez un seuil d'utilisation des ressources. Pour vous assurer que les ressources sont disponibles au moment où vous en avez besoin, définissez des réservations de processeur et de mémoire pour les tâches. Vous devrez peut-être augmenter le nombre souhaité pour le service Amazon ECS afin de dimensionner le cluster, ou utiliser l’auto scaling du cluster.

Examinez les contraintes existantes en matière de placement des tâches et ajustez-les pour les rendre moins restrictives. Il est recommandé de hiérarchiser les charges de travail critiques, de replanifier les charges de travail non essentielles et de tester différentes stratégies de placement, telles que répartir, binpack ou aléatoire.

Utilisez les fournisseurs de capacité Amazon ECS pour réserver des capacités pour les charges de travail importantes. Il est recommandé d'utiliser des instances dédiées Amazon Elastic Compute Cloud (Amazon EC2) pour les charges de travail qui requièrent un matériel isolé. Utilisez AWS Fargate pour les tâches qui requièrent des ressources disponibles.

Vérifier les problèmes de connectivité réseau

Pour résoudre les problèmes de connectivité réseau liés aux tâches planifiées, prenez les mesures suivantes :

  • Assurez-vous que les règles du groupe de sécurité et de la liste de contrôle d'accès réseau (ACL réseau) autorisent le trafic entrant et sortant requis pour vos tâches.
  • Vérifiez que vous avez correctement configuré la passerelle Internet ou la passerelle NAT pour votre cloud privé virtuel (VPC).
  • Consultez les tables de routage de votre passerelle.
  • Examinez vos définitions de tâches pour les variables d'environnement comportant des adresses IP ou des noms d'hôtes codés en dur. Assurez-vous que les adresses IP ou les noms d'hôtes existants sont corrects et que vous pouvez les joindre.

Pour tester la connectivité réseau à partir de vos instances de conteneur, procédez comme suit :

  1. Utilisez SSH pour vous connecter à l'instance Amazon EC2.
  2. Pour exécuter des commandes à distance sur votre conteneur, exécutez la commande execute-command suivante :
    aws ecs execute-command --cluster cluster-name --task task-id --container container-name --command "/bin/bash" --interactive
    Remarque : Remplacez cluster-name par le nom de votre cluster, task-id par votre ID de tâche et container-name par le nom de votre instance de conteneur.
  3. Pour tester la connectivité, exécutez l'une des commandes suivantes :
    curl -v http://example.com
    -ou-
    nslookup example.com
    -ou-
    nc -zv example.com 80
    Remarque : Remplacez example.com par votre domaine.
  4. Vérifiez la résolution et le routage DNS pour identifier les problèmes de réseau.

Pour simplifier la connectivité, exécutez des tâches sur Fargate au lieu d'Amazon EC2. Avec Fargate, vous n'avez pas besoin de gérer l'infrastructure sous-jacente. Vous pouvez également utiliser des points de terminaison de VPC pour vous connecter à des services sans passerelle Internet, périphérique NAT, connexion VPN ou connexion AWS Direct Connect.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 3 mois