Je souhaite placer une tâche dans Amazon Elastic Container Service (Amazon ECS). Cependant, je reçois le message d'erreur suivant : « [AWS service] n'a pas pu placer une tâche car aucune instance de conteneur ne répondait à toutes ses exigences ».
Brève description
Vous pouvez recevoir cette erreur pour l'une ou plusieurs des raisons suivantes :
- Aucune instance de conteneur n’a été trouvée dans votre cluster
- Port requis par la tâche déjà utilisé
- Mémoire insuffisante pour vos tâches
- Pas suffisamment d'unités CPU pour votre instance de conteneur
- Pas suffisamment de points de jonction d’interface réseau Elastic disponibles
- Un attribut requis manque dans votre instance de conteneur
Pour plus d'informations sur ces problèmes, consultez la rubrique Messages d'événement de service.
Remarque : si vous n'avez pas reçu le message d'erreur précédent, choisissez un article en fonction de l'un des messages d'erreur suivants correspondant à celui que vous avez reçu :
Solution
Remarque : si vous recevez des erreurs lors de l'exécution de commandes AWS CLI, vérifiez que vous utilisez la version la plus récente d'AWS CLI.
Pour résoudre l'erreur, choisissez une solution en fonction de votre cas d'utilisation :
- S'il n'y a aucune instance de conteneur enregistrée dans votre cluster, ajoutez des instances de conteneur à votre cluster.
- Si le port requis par la tâche est en cours d'utilisation, puis ajoutez des instances de conteneur à votre cluster ou réduisez votre nombre de tâches souhaitées.
Remarque : dans la mesure du possible, envisagez d'utiliser le mappage de port dynamique 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âche. Vous pouvez également lancer davantage d'instances de conteneur dans votre cluster. Pour plus d'informations, consultez la section Mémoire insuffisante dans Messages d'événement de service. Cette section se trouve dans la partie suivante : 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 d'unités de CPU, ajustez le nombre de CPU requis par les tâches ou lancez plus d'instances de conteneur dans votre cluster.
Pour plus d'informations, consultez la section UC insuffisante dans Messages d'événement de service. Cette section se trouve dans la partie suivante : 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 vous reporter à 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 n'a pas de points de jonction d'interface réseau Elastic disponibles, ajoutez d'autres instances de conteneur à votre cluster. Pour plus d'informations, consultez la section Pas suffisamment de points d'attache ENI disponibles dans Messages d'événement de service. Cette section se trouve dans la partie suivante : le service (nom-service) n'a pas pu placer de tâche, car aucune instance de conteneur ne répondait à toutes ses exigences. Si le problème persiste, envisagez d'utiliser awsvpcTrunking pour augmenter la densité d'interface réseau Elastic sur vos instances Amazon Elastic Compute Cloud (Amazon EC2).
- Si un attribut requis est manquant dans l'instance de conteneur, reportez-vous à la section Attribut requis manquant dans l'instance de conteneur dans Messages d'événement de service. Cette section se trouve dans la partie suivante : le service (nom-service) n'a pas pu placer de tâche, car aucune instance de conteneur ne répondait à toutes ses exigences. Pour trouver 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 ce qui est du nom Task_Definition, saisissez le nom de définition de votre 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 afin 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 indique None (Aucun) pour les attributs manquants, même si la tâche échoue en raison de l'erreur d'attribut manquant. Assurez-vous que les sous-réseaux de votre service et de l'instance de conteneur correspondent. Pour ce faire, recréez le service Amazon ECS dans le sous-réseau où se trouve l'instance de conteneur. Pour plus d'informations, consultez Paramètres de définition de tâche 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 à :
Container Instance Missing Attributes
tes-cluster None
Pour plus d'informations, exécutez la commande suivante :
ecs-cli --help
Informations connexes
Mise en réseau des tâches Amazon ECS
Logique d'accélérateur de service