Tempo Di Valse

[AWS] ECS 에 Docker 연동하기 -2- (ECS Task 정의) 본문

개발/AWS

[AWS] ECS 에 Docker 연동하기 -2- (ECS Task 정의)

TempoDiValse 2022. 11. 18. 17:19

이번 포스팅은 ECS - Docker 연동기 두번째 포스팅으로, 첫번째였던 ECR 리포지토리 생성에 이어서 이 리포지토리를 컨테이너에 올리기위한 Task 라는 것을 정의/등록 하는 방법에 대해 적어보려 한다.

 

일단, 이전 포스팅은 다음 링크를 확인한다.

 

[AWS] ECS 에 Docker 연동하기 -1- (ECR 리포지토리 생성)

이번 포스팅 시리즈는 ECS 라는 AWS 의 서비스를 이용하여 로컬에서 작업중이던 Docker 를 AWS 에 띄우는 방법에 대해서 기술해보도록 한다. 먼저 ECS 란, Elastic Container Service 라는 풀네임을 가진 서비

tempodivalse.tistory.com


1. Task 란?

 Task 에 대해서 정확하게 아는 건 아니지만 내가 작업을 하면서 이해한 바 로는, 리포지토리의 이미지를 사용할 수 있도록 준비 해주는 역할이라고 생각이 된다. ECS 콘솔을 처음 진입하게 되면 클러스터 / 태스크 2개의 항목을 정의 해주어야 하는데,  클러스터는 하나의 웹 서비스가 돌아갈 큰 환경이라고 생각하면 될 것 같고, 그 안에 태스크가 띄워져서 웹 서비스를 실행할 수 있도록 만들어 준다고 이해를 했다.

 

자세한 사항은,

 

Amazon ECS 태스크 정의 - Amazon Elastic Container Service

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

역시나 홈페이지 참조.

 

태스크가 하는 일은 다앙하게 있지만 그 중에 대표적으로 뽑아 본다면 다음과 같다.

  • VOLUME 에 대한 연결
    Docker 이미지 내부가 아닌 외부에서 Write 가 이뤄져야 하는 유동적인 파일들이 있는 폴더를 Dockerfile 에서 VOLUME 을 통해 파이프라인 처럼 '이미지-로컬' 환경을 만들어 주는데, 로컬 환경에서는 docker-compose 나 docker run 할 때 경로를 매칭 시켜주었지만, ECS 환경에서는 태스크를 생성할 때 설정 할 수 있도록 되어있다.
  • 태스크 간의 통신
    Docker 에서 여러 이미지를 조합하여 사용할 때 docker-compose 를 통해서 networks 를 정의하여 컨테이너간에 통신을 했다면, 태스크도 마찬가지로 종류별로 다른 리포지토리를 사용하는 경우에 이들끼리 통신 할 수 있도록 설정 할 수 있다.
  • 하나의 태스크의 CPU 와 메모리 사양을 정할 수 있다.
    태스크는 클러스터 안에서 여러개 띄워질 수 도 있다. 그래서 개별적으로 하나의 태스크가 얼마나 리소스를 사용할 수 있을 지정 할 수 있다.

그 외에도 많겠지만 내가 사용하는 기능 외의 일이라서 아직 파악은 다 하지 못했다. 그럼 이제 태스크를 정의해 보자

 

2. Task 정의

태스크는 2개의 계층 단위가 있는데, 상위 계층을 Family 라고 하며 하위에는 Child 식으로 Revision 이 생성이 된다.

태스크가 만들어지면 Revision 1 이 생성된다. 컨테이너는 내가 만든 리포지토리나 여러 리포지토리를 조합할 수 있도록 추가를 할 수 있으며, 각각이 환경변수가 필요한 경우에는 각 컨테이너마다 지정을 해줄 수 있다.

 

1단계 설정이 끝나면 다음 2단계도 설정을 해주어야 한다.

환경에는 AWS Fargate 와 EC2 인스턴스 둘 다 사용하거나 둘 중 하나를 사용하거나 할 수 있는데, 나의 경우에는 아직 EC2 를 사용해본 적이 없어서 Fargate 환경에서 컨테이너를 돌리도록 한다. 그리고 기본적인 물리 사양과 태스크를 돌리기 위해 필요한 IAM 역할/권한 등을 설정할 수 있다. 지금은 새로 만드는 것이기 때문에 기본적으로 어떤 것들이 있는 지만 보고서 빠르게 스킵하도록 하자.

 

생성이 완료되었다면 태스크 정의에도 내가 만든 태스크가 뜰 것이다. 

 

여기까지 태스크를 만들었고 다음 포스팅에는 클러스터를 정의하고 만든 태스크를 올려보는 내용을 만들어 보도록 하겠다.

반응형
Comments