Passer au contenu

Comment résoudre l'erreur "An error occurred (TargetNotConnectedException) when calling the ExecuteCommand operation" dans Amazon ECS ?

Lecture de 3 minute(s)
0

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 :

  1. 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.
  2. 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

AWS OFFICIELA mis à jour il y a 6 mois