Fargate에 대한 Amazon ECS의 “dockertimeouterror unable transition start timeout after wait 3m0s”오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 12월 17일

AWS Fargate에 대한 Amazon Elastic Container Service(Amazon ECS) 태스크에서 “dockertimeouterror unable transition start timeout after wait 3m0s” 오류가 발생합니다.

간략한 설명

이 오류는 Fargate 태스크에 네트워킹 구성 문제가 있을 때 발생합니다. Fargate의 경우 시작 시간 제한의 기본값은 3분입니다. 태스크가 3분 내에 보류 상태에서 실행 상태로 전환되지 않으면 해당 태스크가 실패하고 중지된 상태로 전환됩니다.

Fargate 태스크가 NAT 인스턴스 또는 게이트웨이가 구성되지 않은 프라이빗 서브넷에서 실행 중인 경우 적절한 Amazon Virtual Private Cloud(Amazon VPC) 엔드포인트를 설정해야 합니다. 여기에는 다음에 대한 엔드포인트가 포함됩니다.

  • Amazon Elastic Container Registry(Amazon ECR): ECR 리포지토리에서 이미지를 가져오는 데 필요합니다.
  • Amazon Simple Storage Service(Amazon S3): Amazon ECR은 Amazon S3를 사용하여 이미지 계층을 저장하는 데 필요합니다. 컨테이너가 Amazon ECR에서 이미지를 다운로드할 때 컨테이너는 Amazon ECR에 액세스하여 이미지 매니페스트를 가져오고 Amazon S3에서 실제 이미지 계층을 다운로드해야 합니다.
  • AWS Secrets Manager 및/또는 AWS Systems Manager: 중요한 데이터를 컨테이너에 삽입하기 위해 태스크 정의에서 Secrets Manager 암호 또는 Systems Manager Parameter Store 파라미터를 참조하는 경우에 필요합니다. Secrets Manager 또는 Systems Manager에 대한 인터페이스 VPC 엔드포인트를 만들어야 해당 태스크가 해당 서비스에 연결됩니다. 중요한 데이터가 호스팅되는 특정 서비스(Secrets Manager 또는 System Manager)에서만 엔드포인트를 만들어야 합니다.
  • Amazon CloudWatch: Fargate 태스크가 awslogs를 로깅 드라이버로 사용할 때 필요합니다. 이는 awslogs를 로깅 드라이버로 사용하는 태스크가 로그를 CloudWatch로 내보내기 때문입니다. awslogs를 사용하고 있고 CloudWatch용 VPC 엔드포인트가 생성되었지만 설정되지 않은 경우 태스크가 엔드포인트에 연결되지 않습니다. 다음과 같은 오류가 나타납니다. “DockerTimeoutError: Could not transition to started; timed out after waiting 3m0s.“

해결 방법

태스크 정의가 awslogs 로깅 드라이버를 사용하는지 확인하세요.

  1. Amazon ECS 콘솔을 엽니다.
  2. 탐색 창에서 [태스크 정의(Task Definitions)]를 선택합니다.
  3. 태스크 또는 서비스에서 사용하는 태스크 정의를 선택한 다음 태스크 정의 이름을 선택합니다.
  4. 태스크 정의의 [컨테이너 정의(Container Definitions)] 섹션에서 [컨테이너 이름(Container Name)] 열에서 컨테이너의 확장 아이콘을 선택합니다.
  5. [로그 구성(Log Configuration)] 하위 섹션에서 [로그 드라이브(Log drive)]가 awslogs로 설정되어 있는지 확인합니다.

중요: 태스크가 NAT 게이트웨이 또는 NAT 인스턴스가 없는 프라이빗 서브넷에서 실행 중인 경우 VPC 엔드포인트를 사용해야 합니다.

Fargate 태스크를 위한 VPC 엔드포인트가 있는지 확인합니다.

  1. Amazon VPC 콘솔을 엽니다.
  2. 탐색 창에서 [엔드포인트(Endpoints)]를 선택합니다.
  3. [서비스 이름(Service name)] 필드에 com.amazonaws.region.logs가 있는지 확인합니다.

엔트포인트가 없으면 새 엔드포인트를 만듭니다.

엔드포인트가 있는 경우 엔드포인트가 Fargate 태스크가 실행 중인 VPC와 동일한지 확인합니다. VPC 콘솔에서 이 작업을 수행하려면 엔드포인트를 선택한 다음 엔드포인트의 [세부 정보(Details)] 탭에서 VPC ID를 찾습니다.

엔드포인트가 Fargate 태스크와 동일한 VPC에서 사용되지 않는 경우 새 엔드포인트를 생성합니다.

Fargate 태스크와 동일한 VPC에서 엔드포인트를 사용하는 경우 VPC와 연결된 보안 그룹에서 다음 사항을 확인합니다.

  • 보안 그룹의 수신 규칙은 Fargate 태스크에서 포트 443에 대한 트래픽을 허용해야 합니다.
  • Fargate 태스크와 연결된 보안 그룹에는 포트 443의 트래픽을 VPC 엔드포인트로 전송하는 송신 규칙이 있어야 합니다.

이제 Fargate 태스크가 생성한 CloudWatch 엔드포인트에 연결되지 않습니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?