Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
¿Cómo puedo solucionar los errores que recibo cuando uso ECS Exec en mis tareas de Fargate?
Quiero solucionar los errores que recibo al usar Amazon Elastic Container Service (Amazon ECS) Exec en mis tareas de AWS Fargate.
Descripción corta
Cuando usa ECS Exec en las tareas de Fargate, es posible que reciba uno de los siguientes mensajes de error:
- «Se produjo un error (InvalidParameterException) al llamar a la operación ExecuteCommand: El comando de ejecución falló porque no estaba activado cuando se ejecutó la tarea o el agente de comandos de ejecución no se estaba ejecutando. Espere e inténtelo de nuevo o ejecute una nueva tarea con el comando de ejecución activado e inténtelo de nuevo».
- «An error occurred (TargetNotConnectedException) when calling the ExecuteCommand operation: The execute command failed due to an internal error. Try again later».
Resolución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Solución de problemas de AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.
Para resolver los errores comunes que se producen al usar ECS Exec en las tareas de Fargate, se recomienda usar AWS CloudShell. CloudShell viene preinstalado con el agente del Administrador de sesiones de AWS Systems Manager (SSM Agent) y la AWS CLI.
Error InvalidParameterException
Si la opción ExecuteCommand para su tarea de Fargate está desactivada, recibirá el error InvalidParameterException.
Para resolver este problema, siga estos pasos:
- Ejecute el comando describe-tasks para comprobar si el parámetro enableExecuteCommand está establecido en true o false:
Nota: Sustituya example-cluster-name por su clúster y example-task-id por su ID de tarea.aws ecs describe-tasks --cluster example-cluster-name --tasks example-task-id| grep enableExecuteCommand
- Si el parámetro enableExecuteCommand es false, ejecute el siguiente comando update-service para actualizar el parámetro a true:
Nota: Sustituya example-cluster-name por su clúster, example-service por su servicio y example-region por su región de AWS. La opción force-new-deployment crea un nuevo despliegue que inicia nuevas tareas y detiene las tareas antiguas en función de la configuración de despliegue del servicio. Si sus servicios utilizan un despliegue azul-verde a través de AWS CodeDeploy, en lugar de force-new-deployment, inicie un despliegue de CODE_DEPLOY. No puede usar force-new-deployment para el despliegue azul-verde porque esta opción inicia una actualización continua.aws ecs update-service --cluster example-cluster-name --service example-service --region example-region --enable-execute-command --force-new-deployment
- Ejecute el siguiente comando describe-tasks para comprobar el estado de ExecuteCommandAgent:
Nota: Sustituya example-cluster-name por su clúster y example-task-id por su ID de tarea.aws ecs describe-tasks --cluster example-cluster-name --tasks example-task-id | grep -A 6 managedAgents
- Compruebe el resultado del comando para comprobar el estado del agente ExecuteCommand. Si lastStatus de ExecuteCommandAgent no está EN EJECUCIÓN, compruebe los registros del agente de ExecuteCommandAgent para identificar la causa raíz. Continúe con Generar registros para ECS Exec para identificar los pasos de solución de problemas para generar los registros de ExecuteCommandAgent.
Si ExecuteCommandAgent no puede recuperar las credenciales porque ha configurado un proxy en el contenedor, agregue la siguiente opción NO_PROXY a los archivos de configuración de la instancia de contenedor:env no_proxy=169.254.169.254,169.254.170.2
TargetNotConnectedExceptionerror
Para resolver un error de TargetNotConnectionException, tome las siguientes medidas.
Agregue los permisos necesarios y confirme que la configuración de red es correcta
Siga estos pasos:
- Agregue los permisos necesarios al rol de AWS Identity and Access Management (IAM) de la tarea de Amazon ECS. Si el rol de IAM de la tarea ya tiene los permisos necesarios, compruebe si alguna política de control de servicios (SCP) bloquea la conexión de la tarea con SSM Agent.
- Si utiliza puntos de enlace de la interfaz de Amazon Virtual Private Cloud (Amazon VPC) con Amazon ECS, cree los siguientes puntos de enlace:
ec2messages.region.amazonaws.com
ssm.region.amazonaws.com
ssmmessages.region.amazonaws.com
Nota: Sustituya region por su región. - Para confirmar que el entorno de AWS CLI y el clúster o la tarea de Amazon ECS están preparados para ECS Exec, ejecute el script check-ecs-exec.sh. Para obtener información sobre los requisitos previos y el uso, consulte Comprobador de Amazon ECS Exec en el sitio web de GitHub.
El resultado del script check-ecs-exec.sh muestra lo que debe resolver antes de usar ECS Exec. Resultado de ejemplo:
El resultado anterior muestra que ECS Exec está desactivado para la tarea y que el rol de la tarea no tiene los permisos de Systems Manager necesarios. Nota: Debe establecer el parámetro ReadonlyRootFilesystem en false en la definición de la tarea para ejecutar ECS Exec. Si ReadonlyRootFileSystem es true, SSM Agent no puede crear los directorios necesarios.Prerequisites for check-ecs-exec.sh v0.7------------------------------------------------------------- jq | OK (/usr/bin/jq) AWS CLI | OK (/usr/local/bin/aws) ------------------------------------------------------------- Prerequisites for the AWS CLI to use ECS Exec ------------------------------------------------------------- AWS CLI Version | OK (aws-cli/2.11.0 Python/3.11.2 Linux/4.14.255-291-231.527.amzn2.x86_64 exec-env/CloudShell exe/x86_64.amzn.2 prompt/off) Session Manager Plugin | OK (1.2.398.0) ------------------------------------------------------------- Checks on ECS task and other resources ------------------------------------------------------------- Region : us-east-1 Cluster: Fargate-Testing Task : ca27e41ea3f54fd1804ca00feffa178d ------------------------------------------------------------- Cluster Configuration | Audit Logging Not Configured Can I ExecuteCommand? | arn:aws:iam::12345678:role/Admin ecs:ExecuteCommand: allowed ssm:StartSession denied?: allowed Task Status | RUNNING Launch Type | Fargate Platform Version | 1.4.0 Exec Enabled for Task | NO Container-Level Checks | ---------- Managed Agent Status - SKIPPED ---------- ---------- Init Process Enabled (Exec-check:2) ---------- 1. Disabled - "nginx" ---------- Read-Only Root Filesystem (Exec-check:2) ---------- 1. Disabled - "nginx" Task Role Permissions | arn:aws:iam::12345678:role/L3-session ssmmessages:CreateControlChannel: implicitDeny ssmmessages:CreateDataChannel: implicitDeny ssmmessages:OpenControlChannel: implicitDeny ssmmessages:OpenDataChannel: implicitDeny VPC Endpoints | SKIPPED (vpc-abcd - No additional VPC endpoints required) Environment Variables | (Exec-check:2) 1. container "nginx" - AWS_ACCESS_KEY: not defined - AWS_ACCESS_KEY_ID: not defined - AWS_SECRET_ACCESS_KEY: not defined
Compruebe si ha configurado las credenciales de usuario de IAM a nivel de contenedor, por ejemplo, una clave de acceso o una clave de acceso secreta. SSM Agent usa el AWS SDK para Java cuando comprueba la autenticación. Si configura la clave de acceso o la clave de acceso secreta en la instancia de contenedor como variables de entorno, anula los permisos a nivel de tarea. Para usar ECS Exec, las credenciales de IAM a nivel de contenedor deben proporcionar permisos para SSM Agent.
Use ECS Exec para entrar en el contenedor con el shell correcto
Las diferentes imágenes base pueden tener diferentes shells en su interior. Si utiliza el shell incorrecto, se producirán errores. Asegúrese de utilizar el shell correcto según la imagen de la aplicación.
Para usar ECS Exec para entrar en el contenedor, ejecute el comando execute-command:
aws ecs execute-command --region example-region --cluster example-cluster --container example-container --task example-task --command "example_shell" --interactive
Nota: Sustituya example-region por su región, example-cluster por el nombre de su clúster, example-container por el nombre de su instancia de contenedor y example-task por el nombre de su tarea.
Genere registros para que ECS Exec identifique problemas
Para determinar por qué ECS Exec no funciona, ejecute el siguiente comando en la sección del entorno de la definición del contenedor para generar los registros de SSM Agent:
Consola:
bin/bash,-c,sleep 2m && cat /var/log/amazon/ssm/amazon-ssm-agent.log
JSON:
"/bin/bash","-c","sleep 2m && cat /var/log/amazon/ssm/amazon-ssm-agent.log"
Nota: Las diferentes aplicaciones tienen diferentes shells y editores. Modifique los parámetros del comando anterior para adaptarlos a los requisitos de su aplicación.
Si utiliza el controlador de registro awslogs, los comandos anteriores generan los registros de SSM Agent y los transfieren al grupo de registros de Amazon CloudWatch. Si utiliza otros controladores de registro o puntos de enlace de registro, los registros de SSM Agent se transfieren a esas ubicaciones.
Ejemplo de JSON:
"entryPoint": [], "portMappings": [], "command": [ "bin/bash", "-c", "sleep 2m && cat /var/log/amazon/ssm/amazon-ssm-agent.log" ],
Información relacionada

Contenido relevante
- preguntada hace 3 meseslg...
- Como solucionar el error: Supplied Policy document is breaching Cloudwatch Logs policy length limit.Respuesta aceptadapreguntada hace 4 meseslg...
- preguntada hace 5 meseslg...
- preguntada hace un meslg...