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 de AWS Command Line Interface (AWS CLI) “execute-command” en Amazon Elastic Container Service (Amazon ECS). Sin embargo, 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 poner en marcha comandos de AWS CLI, consulte Solución de errores de AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.

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

Siga estos pasos:

  1. Cree 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úrese de que su configuración no bloquee los permisos anteriores en el nivel de AWS Organizations.
  2. Adjunte la política al rol de tarea de Amazon ECS.

Es posible que se produzcan retrasos al actualizar los permisos del rol de tarea. Espere unos minutos después de adjuntar la política al rol de tarea y, a continuación, ejecute 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 ha usado para iniciar sesión, ejecute 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/*"
    }
  ]
}

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

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

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

Compruebe si 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 sigue viendo este error después de actualizar la definición de la tarea, ejecute 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 le notifica si no cumple con algún requisito previo.

Información relacionada

Uso de ECS Exec

OFICIAL DE AWSActualizada hace 6 meses