Saltar al contenido

¿Cómo soluciono el error "An error occurred (TargetNotConnectedException) when calling the ExecuteCommand operation" en Amazon ECS?

3 minutos de lectura
0

Intenté ejecutar el comando execute-command de la interfaz de la línea de comandos de AWS (AWS CLI) en Amazon Elastic Container Service (Amazon ECS). Pero recibo el mensaje de error "An error occurred (TargetNotConnectedException) when calling the ExecuteCommand operation: The execute command failed due to an internal error. Try again later".

Descripción corta

Aparece el mensaje de error "ExecuteCommand" por los siguientes motivos:

  • El rol de tarea de Amazon ECS no tiene los permisos necesarios para ejecutar el comando execute-command.
  • El rol o el usuario de AWS Identity and Access Management (IAM) que ejecuta el comando no tiene los permisos necesarios.

Resolución

Nota: Si se muestran errores al ejecutar comandos de AWS CLI, consulta Solución de errores de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

Actualización de los permisos del rol de tarea de Amazon ECS

Sigue estos pasos:

  1. Crea la siguiente política de IAM:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "ssmmessages:CreateControlChannel",
            "ssmmessages:CreateDataChannel",
            "ssmmessages:OpenControlChannel",
            "ssmmessages:OpenDataChannel"
          ],
          "Resource": "*"
        }
      ]
    }
    Nota: Asegúrate de que tu configuración no bloquee los permisos anteriores en el nivel de AWS Organizations.
  2. Adjunta la política al rol de tarea de Amazon ECS.

Es posible que se produzcan retrasos al actualizar los permisos del rol de tarea. Espera unos minutos después de adjuntar la política al rol de tarea y, a continuación, ejecuta el comando execute-command.

Comprobación de los permisos de rol o usuario de IAM

Para comprobar el rol y el ID de usuario de IAM con los que has usado para iniciar sesión, ejecuta el siguiente comando:

 aws sts get-caller-identity

El rol o usuario de IAM que ejecuta el comando execute-command debe tener los siguientes permisos:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ecs:ExecuteCommand",
      "Resource": "arn:aws:ecs:example-region:example-arn:cluster/example-cluster/*"
    }
  ]
}

Adjunta una nueva política o actualiza la política existente del usuario o rol para que incluya los permisos anteriores.

Comprobación para saber si has configurado pidMode como tarea en la definición de la tarea

Solo puedes tener una sesión ECS Exec en cada espacio de nombres del ID de proceso (PID). Si compartes un espacio de nombres del PID en una tarea, puedes iniciar sesiones de ECS Exec en un solo contenedor.

Comprobar si se ha establecido readonlyRootFilesystem como true en la definición de la tarea

Para crear los directorios y archivos necesarios, SSM Agent requiere un sistema de archivos de contenedor en el que se pueda escribir. No puede usar el parámetro de definición de tareas readonlyRootFilesystem ni ningún otro método para hacer que el sistema de archivos raíz sea de solo lectura.

Si sigues viendo este error después de actualizar la definición de la tarea, ejecuta amazon-ecs-exec-checker desde el sitio web de GitHub. El script amazon-ecs-exec-checker valida el entorno de AWS CLI y el clúster o tarea de Amazon ECS. El script también te notifica si no cumples con algún requisito previo.

Información relacionada

Uso de ECS Exec