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:
- 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.
- 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