Meus logs de contêiner do Amazon Elastic Container Service (Amazon ECS) não aparecem no Amazon CloudWatch Logs conforme o esperado.
Resolução
Modifique o driver de log awslogs
Adicione o parâmetro logConfiguration no driver de log awslogs na sua definição de tarefa. Para tarefas do Amazon ECS com vários contêineres, configure o parâmetro logConfiguration para cada contêiner.
Se você tiver um tipo de inicialização do Amazon Elastic Compute Cloud (Amazon EC2), atualize sua instância de contêiner do Amazon ECS para a versão 1.9.0 ou posterior.
Se sua instância de contêiner não usa a imagem de máquina da Amazon (AMI) otimizada para Amazon ECS, execute a seguinte variável de ambiente para iniciar o atendente de contêiner:
ECS_AVAILABLE_LOGGING_DRIVERS='["json-file","awslogs"]'
Observação: Especifique o driver de log awslogs na instância de contêiner.
Para obter mais informações, consulte Instalar o agente de contêiner do Amazon ECS.
Adicione as permissões de perfil do IAM necessárias
Tipos de inicialização do AWS Fargate
Anexe a política AmazonECSTaskExecutionRolePolicy ao seu perfil do AWS Identity and Access Management (AWS IAM) de execução de tarefas do Amazon ECS. A política inclui as permissões logs:CreateLogStream e logs:PutLogEvents necessárias. Ou crie uma política do IAM personalizada e inclua as permissões necessárias.
Tarefas do tipo de lançamento do Amazon EC2 sem perfil do IAM de execução de tarefas
Anexe a política AmazonEC2ContainerServiceForEC2Role ao perfil do IAM da instância de contêiner. A política contém as permissões logs:CreateLogStream e logs:PutLogEvents necessárias. Ou crie uma política do IAM personalizada e inclua as permissões necessárias.
Tarefas do tipo de lançamento do Amazon EC2 com perfil do IAM de execução de tarefas
Para a configuração do atendente de contêiner, atualize o parâmetro ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE para verdadeiro.
Observação: O valor padrão do parâmetro do atendente de contêiner é verdadeiro nas AMIs otimizadas para Amazon ECS com a versão 1.16.0-1 ou posterior e falso no Windows.
Verifique a configuração de rede
Se sua tarefa usa o driver de log awslogs em uma Amazon Virtual Private Cloud (Amazon VPC) sem um gateway da internet, crie um endpoint da VPC de interface para o CloudWatch Logs. Escolha com.amazonaws.Region.logs como o serviço.
Verifique a configuração em nível de log do contêiner
O driver de log awslogs passa os fluxos STDOUT e STDERR I/O do Docker para o CloudWatch Logs.
Para configurar seus logs, atualize sua aplicação para enviar os logs aos fluxos STDOUT e STDERR I/O. Em seguida, durante a criação do contêiner, configure o nível de log da aplicação por meio de uma variável de ambiente ou de um arquivo de configuração.
Informações relacionadas
Ferramentas de monitoramento do Amazon ECS
How do I troubleshoot missing container logs for Amazon ECS or Amazon EKS? [Como soluciono problemas de logs de contêiner ausentes no Amazon ECS ou no Amazon EKS?]
Envio de logs do Amazon ECS para o CloudWatch