Je souhaite résoudre les problèmes liés à l'échec d'une tâche Amazon Elastic Container Service (Amazon ECS) dans un cluster ECS.
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.
Pour résoudre des problèmes liés à une tâche arrêtée, utilisez la console de gestion AWS ou l'interface de ligne de commande AWS pour afficher les erreurs liées aux tâches arrêtées. Vous pouvez également utiliser DescribeTasks pour obtenir des informations sur la tâche arrêtée.
Important : Vous ne pouvez accéder aux informations extraites par DescribeTasks sur les tâches arrêtées que dans l'heure suivant l'échec des tâches. Pour conserver ces données plus longtemps, utilisez le modèle AWS CloudFormation d'amazon-ecs-stopped-tasks-cwlogs sur le site Web de GitHub. Avec ce modèle, capturez les journaux Amazon CloudWatch qu'Amazon EventBridge génère lorsqu'une tâche s'arrête.
Suivez les étapes de dépannage ci-dessous correspondant au message d'erreur reçu.
Erreurs courantes liées aux tâches arrêtées
Pour résoudre les erreurs courantes relatives aux tâches arrêtées, telles que les problèmes liés à la vérification de l'état des instances de conteneur, consultez la section Pourquoi ma tâche Amazon ECS a-t-elle été arrêtée ?
Si vous recevez une erreur d’**API **CannotPullContainerError, consultez la section Comment puis-je résoudre l'erreur d’API Amazon Elastic Container Registry (Amazon ECR) « CannotPullContainerError: » dans Amazon ECS ?
Si vous recevez une erreur OutOfMemory, consultez la section Comment puis-je résoudre les erreurs OutOfMemory dans Amazon ECS ?.
Erreur « No valid providers in chain »
Si ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE n’est pas défini sur votre instance, vous recevez une erreur similaire à l’erreur « CannotStartContainerError: Error response from daemon: failed to initialize logging driver: failed to create Cloudwatch log stream: NoCredentialProviders: no valid providers in chain ».
Pour résoudre ce problème, assurez-vous de définir ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE sur l'instance de conteneur. Exemple de syntaxe PowerShell :
<powershell>
[Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine")
Initialize-ECSAgent -Cluster cluster-name -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]'
</powershell>
Remarque : Remplacez cluster-name par le nom de votre cluster.
Erreur « The container operating system does not match the host operating system »
Si le système d'exploitation (OS) hôte ne correspond pas au système d'exploitation d'image de base de l'instance de conteneur Windows, vous recevez une erreur similaire à l’erreur « CannotStartContainerError: ResourceInitializationError: failed to create new container runtime task: failed to create shim task: hcs::CreateComputeSystem abcdxyz: The container operating system does not match the host operating system ».
Pour résoudre ce problème, vérifiez que l'hôte AWS Fargate ou Amazon Elastic Compute Cloud (Amazon EC2) utilise le même système d'exploitation que l'instance de conteneur.
Erreur « Unable to assume the role »
Si l'instance de conteneur ne peut pas endosser le rôle AWS Identity and Access Management (IAM), vous recevez une erreur similaire à l’erreur « Unable to assume the role "arn:aws:iam::abcdefxyz123:role/yyyyyyyy ».
Exécutez la commande suivante pour vous assurer que vous avez défini l'option -EnableTaskIAMRole dans le script de données utilisateur :
<powershell>
Import-Module ECSTools
Initialize-ECSAgent -Cluster 'windows' -EnableTaskIAMRole
</powershell>
Assurez-vous de répondre aux exigences de configuration de l'instance Windows.
Informations connexes
Démarrage des instances de conteneur Windows Amazon ECS pour transmettre des données