Eu tentei executar o comando execute-command AWS Command Line Interface (AWS CLI) no Amazon Elastic Container Service (Amazon ECS). Mas recebo a mensagem de erro "An error occurred (TargetNotConnectedException) when calling the ExecuteCommand operation: The execute command failed due to an internal error. Try again later".
Breve descrição
Você recebe a mensagem de erro "ExecuteCommand" pelos seguintes motivos:
- O perfil de tarefa do Amazon ECS não tem as permissões necessárias para executar o comando execute-command.
- O perfil ou usuário do AWS Identity and Access Management (AWS IAM) que executa o comando não tem as permissões necessárias.
Resolução
Observação: se você receber erros ao executar comandos da AWS CLI, consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Atualize as permissões do perfil de tarefas do Amazon ECS
Conclua as etapas a seguir:
- Crie a seguinte política do IAM:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssmmessages:CreateControlChannel",
"ssmmessages:CreateDataChannel",
"ssmmessages:OpenControlChannel",
"ssmmessages:OpenDataChannel"
],
"Resource": "*"
}
]
}
Observação: Certifique-se de que sua configuração não bloqueia as permissões anteriores no nível do AWS Organizations.
- Anexe a política ao perfil de tarefa do Amazon ECS.
Pode haver atrasos ao atualizar as permissões do perfil de tarefa. Aguarde alguns minutos depois de anexar a política ao perfil de tarefa e, em seguida, execute o comando execute-command.
Verifique as permissões de usuário ou perfil do IAM
Para verificar o ID de usuário e perfil do IAM com os quais você está logado, execute o seguinte comando:
aws sts get-caller-identity
O usuário ou o perfil do IAM que executa o comando execute-command deve ter as seguintes permissões:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ecs:ExecuteCommand",
"Resource": "arn:aws:ecs:example-region:example-arn:cluster/example-cluster/*"
}
]
}
Anexe uma nova política ou atualize a política existente para o usuário ou o perfil para incluir as permissões anteriores.
Verifique se você definiu pidMode como tarefa na definição da tarefa
É possível ter somente uma sessão do ECS Exec para cada namespace de ID de processo (PID). Se você compartilhar um namespace PID em uma tarefa, poderá iniciar sessões do ECS Exec em apenas um contêiner.
Verifique se você definiu readonlyRootFilesystem como verdadeiro na definição da tarefa
Para criar os diretórios e arquivos necessários, o SSM Agent exige um sistema de arquivos de contêiner gravável. Não é possível usar o parâmetro de definição de tarefa readonlyRootFilesystem ou qualquer outro método para tornar o sistema de arquivos raiz como somente leitura.
Se você ainda receber o erro depois de atualizar a definição da tarefa, execute amazon-ecs-exec-chevcker no site do GitHub. O script amazon-ecs-exec-checker valida seu ambiente AWS CLI e o cluster ou tarefa do Amazon ECS. O script também te notifica se você não atender a um pré-requisito.
Informações relacionadas
Usar o ECS Exec