J'ai essayé d'exécuter la commande execute-command de l’interface de la ligne de commande AWS (AWS CLI) dans Amazon Elastic Container Service (Amazon ECS). Le message d'erreur "An error occurred (TargetNotConnectedException) when calling the ExecuteCommand operation: The execute command failed due to an internal error. Try again later" s’affiche.
Brève description
Le message d’erreur "ExecuteCommand" s’affiche pour les raisons suivantes :
- Le rôle de tâche Amazon ECS ne dispose pas des autorisations requises pour exécuter execute-command.
- Le rôle ou l'utilisateur Gestion des identités et des accès AWS (AWS IAM) qui exécute la commande ne dispose pas des autorisations requises.
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 les erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.
Mettre à jour les autorisations du rôle de tâche Amazon ECS
Procédez comme suit :
- Créez la politique IAM suivante :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssmmessages:CreateControlChannel",
"ssmmessages:CreateDataChannel",
"ssmmessages:OpenControlChannel",
"ssmmessages:OpenDataChannel"
],
"Resource": "*"
}
]
}
Remarque : Assurez-vous que votre configuration ne bloque pas les autorisations précédentes au niveau d'AWS Organizations.
- Attachez la politique au rôle de tâche Amazon ECS.
Des retards peuvent être observés lors de la mise à jour des autorisations du rôle de tâche. Patientez quelques minutes après avoir attaché la politique au rôle de tâche, puis exécutez la commande execute-command.
Vérifier les autorisations de l'utilisateur ou rôle IAM
Pour vérifier l'ID utilisateur et le rôle IAM sous lesquels vous êtes connecté, exécutez la commande suivante :
aws sts get-caller-identity
L'utilisateur ou rôle IAM qui exécute la commande execute-command doit disposer des autorisations suivantes :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ecs:ExecuteCommand",
"Resource": "arn:aws:ecs:example-region:example-arn:cluster/example-cluster/*"
}
]
}
Attachez une nouvelle politique ou mettez à jour la politique existante pour l'utilisateur ou le rôle afin d'inclure les autorisations précédentes.
Vérifier si vous définissez pidMode sur la tâche dans la définition de tâche
Vous ne pouvez avoir qu'une seule session ECS Exec pour chaque espace de noms d’ID de processus (PID). Si vous partagez un espace de noms PID dans une tâche, vous ne pouvez démarrer des sessions ECS Exec que dans un seul conteneur.
Vérifier si vous définissez readonlyRootFilesystem sur true dans la définition de tâche
Pour créer les répertoires et les fichiers requis, SSM Agent requiert un système de fichiers de conteneur accessible en écriture. Vous ne pouvez pas utiliser le paramètre de définition de tâche readonlyRootFilesystem ni aucune autre méthode pour rendre le système de fichiers racine en lecture seule.
Si l'erreur persiste après avoir mis à jour la définition de tâche, exécutez amazon-ecs-exec-checker depuis le site Web de GitHub. Le script amazon-ecs-exec-checker valide votre environnement AWS CLI et le cluster ou la tâche Amazon ECS. Le script vous avertit également si vous ne remplissez pas un prérequis.
Informations connexes
Utilisation d’ECS Exec