Amazon Elastic Container Service(Amazon ECS)에서 작업을 실행할 때 "ResourceInitializationError: failed to validate logger args" 오류가 발생합니다.
간단한 설명
Amazon ECS 작업이 definitionAmazon 작업에 정의된 Amazon CloudWatch 로그 그룹을 찾을 수 없는 경우, Amazon ECS는 ResourceInitialization 오류를 반환합니다. 다음과 같은 오류가 발생합니다.
"ResourceInitializationError: failed to validate logger args: create stream has been retried 1 times: failed to create CloudWatch log stream: ResourceNotFoundException: The specified log group does not exist. : exit status 1"
오류를 해결하려면, 작업에 대한 새 로그 그룹을 생성하세요.
시작에 실패한 Amazon ECS 작업의 오류를 해결하려면, AWSSupport-TroubleshootECSTaskFailedToStart 런북을 사용하세요. 그런 다음, 사용자의 문제에 대한 관련 문제 해결 단계를 참조하세요.
해결 방법
시작에 실패한 작업 찾기
중요:
- AWSSupport-TroubleshootECSTaskFailedToStart 런북을 사용자의 ECS 클러스터 자원이 위치한 동일한 AWS 리전에서 사용하세요.
- 런북을 사용할 때는 가장 최근에 실패한 작업 ID를 사용해야 합니다. 실패한 작업이 Amazon ECS 서비스의 한 부분인 경우, 해당 서비스에서 가장 최근에 실패한 작업을 사용하세요. 실패한 작업은 자동화 중에 ECS:DescribeTask에 표시되어야 합니다. 기본적으로 중지된 ECS 작업은 중지됨 상태로 전환된 후 1시간 동안 표시됩니다. 가장 최근에 실패한 작업 ID를 사용하면 작업 상태 정리에 의해 자동화 중에 분석이 중단되는 것을 방지할 수 있습니다.
런북을 시작하는 방법에 대한 지침은 AWSSupport-TroubleshootECSTaskFailedToStart를 참조하세요. 자동화 결과에 따라 다음 수동 문제 해결 단계 중 하나를 사용하세요.
오류 문제 해결
ResourceInitialization 오류를 해결하려면, 다음 해결 방법을 검토하여 작업에 대한 새 로그 그룹을 생성하세요.
작업 정의에 어떤 로그 그룹이 정의되어 있는지 모를 때 오류가 반환되는 경우 다음 명령을 실행합니다.
aws ecs describe-task-definition --task-definition nginx-fargate:3 | jq -r .taskDefinition.containerDefinitions[].logConfiguration
출력에는 사용자가 CloudWatch에서 다시 생성해야 하는 로그 그룹이 설명되어 있습니다.
콘솔에서 CloudWatch 로그 그룹 생성
- CloudWatch 콘솔을 여세요.
- 탐색 모음에서 Amazon ECS 클러스터가 있는 리전을 선택합니다.
- 탐색 창에서, Logs를 선택한 다음, Log group을 선택하세요.
- Log 그룹창에서,로그 그룹 생성을 선택하세요.
AWS CLI를 사용하여 CloudWatch 로그 그룹을 생성하세요
create-log-group AWS Command Line Interface(AWS CLI) 명령을 사용하여 CloudWatch 로그 그룹을 생성하세요. 다음 예시 명령은mylogs라는 이름의 로그 그룹을 생성합니다.
참고: AWS CLI 명령을 실행할 때 오류가 발생하면, 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.
aws logs create-log-group --log-group-name mylogs
Amazon ECS 콘솔의 자동 구성 기능 사용
이 auto-configure 옵션은 접두사가 ecs인 작업 정의 패밀리 이름을 사용하여 사용자의 로그 그룹을 생성합니다. 다음 예시에서는 사용자의 작업 정의에 로그 구성을 지정합니다.
{ "containerDefinitions": [
{
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-create-group": "true",
"awslogs-group": "awslogs-wordpress",
"awslogs-region": "us-west-2",
"awslogs-stream-prefix": "awslogs-example"
}
}
}
]
}
다음 단계에 따라 사용자 지정 로그 그룹을 생성할 수도 있습니다.
- 로그 구성 옵션을 지정하세요.
- 값이 true인 awslogs-create-group 키를 추가하세요. 그러면 사용자의 로그 그룹이 생성됩니다.
다음 예시에서는 작업 정의에서 옵션이 설정된 로그 구성을 지정합니다.
{ "containerDefinitions": [
{
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "example_container",
"awslogs-region": "eu-west-1",
"awslogs-create-group": "true",
"awslogs-stream-prefix": "example"
}
}
}
]
}
**참고:**관리형 AWS Identity and Access Management(IAM) 정책 AmazonECSTaskExecutionRolePolicy에는 logs:CreateLogGroup 권한이 포함되어 있지 않습니다. awslogs-create-group 옵션을 사용하려면, logs:CreateLogGroup을 인라인 IAM 정책으로 추가하세요.