Amazon CloudWatch Logs에서 Amazon Elastic Container Service(Amazon ECS) 작업의 컨테이너 로그를 찾을 수 없습니다.
간략한 설명
다음 이유 중 하나로 인해 Amazon ECS 컨테이너 로그가 CloudWatch Logs에 전달되지 않을 수 있습니다:
- Amazon ECS 작업 정의에서 awslogs 로그 드라이버가 올바르게 구성되지 않았습니다.
- AWS Identity and Access Management(IAM) 역할에 필요한 권한이 없습니다.
- 네트워크가 올바르게 구성되지 않았습니다.
- 컨테이너의 로그 수준이 올바르게 구성되지 않았습니다.
해결 방법
awslogs 로그 드라이버가 올바르게 구성되지 않았습니다
컨테이너 로그 정보를 CloudWatch Logs로 보내려면 작업에서 컨테이너를 올바르게 구성해야 합니다. 컨테이너에 대한 매개 변수를 정의할 때 logConfiguration 매개 변수를 올바르게 구성했는지 확인하세요. Amazon ECS 작업 정의에 여러 개의 컨테이너가 포함된 경우 각 컨테이너에 대해 이 매개 변수를 구성해야 합니다. 또한 작업 정의의 logConfiguration 매개 변수에 awslogs 로그 드라이버를 추가해야 합니다.
Amazon Elastic Compute Cloud(Amazon EC2) 시작 유형의 경우, 다음 추가 작업을 완료하세요:
자세한 내용은 Amazon ECS 컨테이너 에이전트 설치를 참조하세요.
IAM 역할에는 필요한 권한이 없습니다.
다음 작업을 완료합니다.
- Amazon ECS 컨테이너 인스턴스에 대한 IAM 역할에 logs:CreateLogStream 및 logs:PutLogEvents 권한을 추가합니다.
- AWS Fargate 시작 유형의 경우, logs:CreateLogStream 및 logs:PutLogEvents 권한이 있는 Amazon ECS 작업 실행 IAM 역할을 사용합니다. 자세한 내용은 Amazon ECS 작업 실행 IAM 역할을 참조하십시오.
- 자세한 내용은 Amazon EC2 작업 실행 IAM 역할을 참조하세요.
Amazon ECS 작업 실행 IAM 역할을 사용하지 않는 작업의 경우, 컨테이너 인스턴스 IAM 역할에 logs:CreateLogStream 및 logs:PutLogEvents 권한을 부여합니다.
Amazon ECS 작업 실행 IAM 역할을 사용하는 작업의 경우, 컨테이너 에이전트 매개 변수 ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE의 값을 true로 업데이트합니다.
참고: ecs-init 패키지의 버전 1.16.0 -1 이상과 함께 Amazon ECS에 최적화된 AMI를 사용하는 경우 이 매개 변수의 기본값은 true입니다. Windows에서는 이 매개변수의 기본값이 false입니다. 자세한 내용은 Amazon ECS 컨테이너 에이전트 구성을 참조하세요.
네트워크가 올바르게 구성되지 않았습니다
인터넷 게이트웨이가 없는 Amazon Virtual Private Cloud(Amazon VPC)에서 awslogs 로그 드라이버를 사용하는 작업은 CloudWatch Logs 엔드포인트를 만들어야 합니다. 자세한 내용은 인터페이스 VPC 엔드포인트와 함께 CloudWatch Logs 사용을 참조하세요.
컨테이너의 로그 수준이 올바르게 구성되지 않았습니다.
awslogs 로그 드라이버는 STDOUT 및 STDERR I/O 스트림인 컨테이너 로그를 Docker에서 CloudWatch Logs로 전달합니다. 로그를 STDOUT 및 STDERR I/O 스트림으로 전송하도록 애플리케이션을 업데이트하세요. 컨테이너 빌드 중에 애플리케이션의 올바른 로그 수준을 구성하세요. 애플리케이션에 따라 환경 변수 또는 구성 파일을 통해 로그 수준을 설정할 수 있습니다.
관련 정보
Amazon ECS용 모니터링 도구
Amazon ECS 또는 Amazon Elastic Kubernetes Service(Amazon EKS)의 컨테이너 로그 누락 문제를 해결하려면 어떻게 해야 하나요?