Je souhaite placer une tâche dans Amazon Elastic Container Service (Amazon ECS). J’obtiens cependant le message d’erreur suivant : « [AWS service] was unable to place a task because no container instance met all of its requirements. »
Brève description
Vous pouvez recevoir cette erreur pour une ou pour plusieurs des raisons suivantes :
- Aucune instance de conteneur n’a été trouvée dans votre cluster
- Le port requis par la tâche est déjà utilisé
- Mémoire insuffisante pour vos tâches
- Unités de processeur insuffisantes pour votre instance de conteneur
- Pas assez de points d’attache disponibles pour l’interface réseau Elastic (ENI)
- Attribut obligatoire manquant dans l’instance de conteneur
Pour en savoir plus, consultez la page Messages relatifs aux événements de service.
Remarque : si vous n’avez pas reçu le message d’erreur mentionné ci-dessus, choisissez un article en fonction du message d’erreur que vous avez reçu, parmi les exemples suivants :
Résolution
Remarque : si des erreurs surviennent lors de l’exécution de commandes AWS CLI, vérifiez que vous utilisez la version la plus récente d’AWS CLI.
Pour corriger l’erreur reçue, choisissez une résolution en fonction de votre cas d’utilisation :
- Si aucune instance de conteneur n’est enregistrée dans votre cluster, ajoutez des instances de conteneur à celui-ci.
- Si le port requis par la tâche est en cours d’utilisation, ajoutez des instances de conteneur à votre cluster ou réduisez le nombre de tâches souhaitées.
Remarque : si possible, envisagez d’utiliser le mappage dynamique des ports pour permettre à vos tâches d’utiliser n’importe quel port disponible sur une instance de conteneur.
- Si l’instance de conteneur ne dispose pas de suffisamment de mémoire pour vos tâches, réduisez la quantité de mémoire dans votre définition de tâches. Vous pouvez également lancer d’autres instances de conteneur dans votre cluster. Pour en savoir plus, consultez la section Mémoire insuffisante sur la page Messages relatifs aux événements de service. Cette section se trouve sous : le service (nom-service) n’a pas pu placer de tâche, car aucune instance de conteneur ne répondait à toutes ses exigences.
- Si l’instance de conteneur ne dispose pas de suffisamment de processeurs, ajustez le processeur requis par les tâches ou lancez d’autres instances de conteneur dans votre cluster.
Pour en savoir plus, consultez la section Nombre de processeurs insuffisant sur la page Messages relatifs aux événements de service. Cette section se trouve sous : le service (nom-service) n’a pas pu placer de tâche, car aucune instance de conteneur ne répondait à toutes ses exigences. Vous pouvez également consulter la page Comment corriger l’erreur « The closest matching container-instance container-instance-id has insufficient CPU units available » dans Amazon ECS ?
- Si l’instance de conteneur ne dispose pas de point d’attache disponible pour l’interface réseau Elastic (ENI), ajoutez d’autres instances de conteneur à votre cluster. Pour en savoir plus, consultez la section Nombre de points d’attache ENI disponibles insuffisant sur la page Messages relatifs aux événements de service. Cette section se trouve sous : le service (nom-service) n’a pas pu placer de tâche, car aucune instance de conteneur ne répondait à toutes ses exigences. Si ce problème persiste, envisagez d’utiliser awsvpcTrunking pour augmenter la densité de l’interface réseau Elastic sur vos instances Amazon Elastic Compute Cloud (Amazon EC2).
- S’il manque un attribut obligatoire à l’instance de conteneur, consultez la section Attribut obligatoire manquant dans l’instance de conteneur sur la page Messages relatifs aux événements de service. Cette section se trouve sous : le service (nom-service) n’a pas pu placer de tâche, car aucune instance de conteneur ne répondait à toutes ses exigences. Pour identifier les attributs manquants, exécutez la commande ecs-cli check-attributes :
ecs-cli check-attributes --task-def Task_Definition --container-instances Container_Instance --cluster Cluster_Name
Remarque : pour Task_Definition Name, saisissez le nom de votre définition de tâche. Pour Container_Instance, saisissez le nom de votre instance de conteneur. Pour Cluster_Name, saisissez le nom de votre cluster.
- Vous pouvez configurer un service Amazon ECS pour qu’il s’exécute sur un sous-réseau différent de celui de l’instance de conteneur. Dans ce cas, la sortie de la commande ecs-cli-check-attributes sera Aucun pour les attributs manquants, ce même si la tâche échoue en raison de l’erreur d’attribut manquant. Vous devez vérifier que les sous-réseaux de votre service correspondent bien à l’instance de conteneur. Pour ce faire, recréez le service Amazon ECS dans le sous-réseau où se trouve l’instance de conteneur. Pour en savoir plus, consultez les pages Paramètres de définition des tâches et Configuration de l’agent de conteneur Amazon ECS.
Par exemple, si vous exécutez la commande suivante :
ecs-cli check-attributes --task-def task:1 --container-instances 650cf1df296749e1bce1b9e0cebb588a --cluster test-cluster
La sortie ressemble à ce qui suit :
Container Instance Missing Attributes
tes-cluster None
Pour obtenir plus d’informations, exécutez cette commande :
ecs-cli --help
Informations connexes
Mise en réseau des tâches Amazon ECS
Logique de régulation de service