AWS ECS 작업이 프로비저닝 중에서 멈췄습니다.

AWS ECS 작업이 프로비저닝 중에서 멈췄습니다.

용량 공급자와 서비스가 포함된 ECS 클러스터가 있습니다. 용량 공급자는 자동 확장 그룹을 실행하며, 이 그룹의 한 인스턴스가 시작되면 마지막에 사용 가능한 ECS 인스턴스가 있음을 확인할 수 있습니다. 실제로 SSH를 통해 연결할 수 있습니다.

또한 이 서비스는 ERS 저장소의 도커 이미지를 기반으로 하는 새 작업을 생성하므로 잘 실행됩니다. 그러나 작업은 "PROVISIONING"에서 절대 전달되지 않으며 작업을 열면 작업 컨테이너가 비어 있고 로드되는 것을 볼 수 있습니다. 내 인스턴스에 들어가면 docker ps또는 를 수행하면 동일한 도커 인스턴스가 표시됩니다 docker ps -a. 에이전트를 실행하면 다음 docker exec id_docker /agent이 표시됩니다.

level=info time=2022-05-02T21:16:05Z msg="Successfully got ECS instance credentials from provider: EC2RoleProvider" module=instancecreds.go
level=info time=2022-05-02T21:16:05Z msg="Starting Amazon ECS Agent" version="1.61.0" commit="05730614"
level=info time=2022-05-02T21:16:05Z msg="Loading configuration"
level=info time=2022-05-02T21:16:05Z msg="Successfully got ECS instance credentials from provider: EC2RoleProvider" module=instancecreds.go

시도하면 docker exec id_docker bash오류가 발생합니다.

OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "bash": executable file not found in $PATH: unknown

여기서 무슨 일이 일어나고 있는 걸까요? 어떤 단서가 있나요?

답변1

docker psAmazon이 컨테이너를 제어하기 위해 만든 wsa ecs-agent를 수행한 후 얻은 것입니다 . 막히는 부분이었죠. 내 도커는 실제로 실행되지도 않았습니다.

이를 해결하려면 작업 생성 시 컨테이너 옵션에서 호스트로 리디렉션할 컨테이너의 포트를 선택할 때 호스트 값을 0으로 입력하세요. 예를 들어 포트 22를 22로 리디렉션 -> 0을 22로 리디렉션합니다. 이는 ecs의 동적 포트 매핑입니다.

관련 정보