본문으로 바로가기


0. ECR 푸시

Fargate로 실행시킬 도커 이미지를 빌드하고 ECR에 푸시해놓은 상태로 진행한다고 가정한다. ECR 푸시 과정은 이전 포스팅에 담겨있다.


1. 클러스터 생성

먼저 ECS콘솔로 들어간 후 클러스터 생성을 누른다.



첫번째가 Fargate용 클러스터이므로 선택하고 다음 단계를 누른다.



나는 기존에 존재하는 VPC를 그대로 사용할 것이므로 VPC 생성은 체크하지 않았다. 원하는 클러스터 이름을 적고 생성을 누른다.



위와 같이 나온다면 성공적으로 클러스터를 생성한 것이다.


2. 작업 정의(Task Definition) 생성

다음으로 작업 정의를 생성해줘야 한다. ECS콘솔 - 작업정의로 들어가서 새 작업 정의 버튼을 클릭한다.



왼쪽에 있는 FARGATE 전용 작업 정의를 선택하고 다음 단계로 넘어간다.



원하는 작업 정의 이름을 정하고 역할에 ecsTaskExecutionRole을 선택한다.



원하는 작업 메모리와 CPU를 정한다. 나는 최소 단위로 설정했다. 다음으로 바로 아래에 있는 컨테이너 추가 버튼을 누른다.



컨테이너 이름을 정하고 기존에 ECR에 푸시해놓은 주소를 입력한다. 따로 외부에 접속하는 작업은 아니므로 포트 매핑은 지정하지 않는다.



참고로 환경변수등은 보통 소스내부에 넣어두지않고 따로 저장소를 두고 해당 저장소에서 받아오는 방식으로 진행하는데, AWS에서는 Parameter Store를 통해 해당 방법을 제공해주고 있다. 필요하다면 환경 변수도 위 부분에 추가해준다. 그리고 작업 정의를 생성한다.


3. 작업 정의(Task Definition) 실행


위에서 생성한 클러스터로 들어가서 작업 탭으로 이동한 후 새 작업 실행 버튼을 누른다.



시작 유형으로 FARGATE를 선택하고 위에서 생성한 작업 정의를 선택한다.



사용할 VPC와 서브넷, 보안 그룹을 정해준다. 참고로 자동 할당 퍼블릭 IP를 ENABLED로 하지 않으면 작업을 실행시킬 때 ECR에서 이미지를 Pull해올 수 없기 때문에 오류가 발생한다. (CannotPullContainerError 오류)


위 내용대로 설정하고 실행을 누르면 알아서 작업이 돌고 죽는다. 여기까지가 기본적으로 Fargate를 통해 작업을 실행시키는 방법이다. 나는 Cronjob처럼 주기적으로 실행되는 하나의 Job을 설정하고 싶었다. 생성한 클러스터 - 예약된 작업으로 들어간다.



생성을 누른다.



가장 위에 원하는 예약 규칙 이름을 적는다. 그리고 예약 규칙 유형을 선택할 수 있는데 나는 고정된 간격으로 실행, 그리고 5분 주기로 실행하도록 설정했다.



대상 ID도 식별자이므로 원하는 ID를 적고 작업 정의에 위에서 생성한 작업 정의를 선택하고 작업을 실행시켜주면 끝이다.


참고로 말하자면 현재 2019. 6. 6 기준으로 Fargate를 예약된 작업으로 돌리는 기능은 아직 서울 리전을 지원하지 않는다.



다른 사람들이 많이 읽은 글

댓글을 달아 주세요