Blockmonkey

ECS 사용기 본문

Web Development/Back-end

ECS 사용기

Blockmonkey 2025. 7. 21. 11:11

개요

#1 Docker에 대하여 편에서 도커의 사용법에 대해 알았으니, 본 #2 ECS 편에서는 ECR & ECS를 사용해 Docker Container를 배포하는 법에 대해 알아보고, Github Action을 통해 ECR Image Push, ECS Task Definition생성, ECS Service에 자동 적용하는 과정을 진행한다.

Docker ECS ?

AWS ECS (Elastic Container Service)는 Docker Container의 배포 & 관리 서비스로 컨테이너 생성관리, 모니터링, 스케일링, 무중단 배포 등의 서비스를 지원한다. 즉, 완전관리형 컨테이너 오케스트레이션 서비스.

ECS 구성

ECS는 다음으로 구성된다.

  • Cluster : 서비스의 논리적 그룹으로 여러 서비스가 이 그룹 단위로 실행.
  • Service : Task Definition을 기반으로 만들어진 서비스. 실제 인스턴스라고 보면 된다. Task Definition을 지정하고, Load Balancer 셋팅, AutoScaling 셋팅 등을 한다.
  • Task Definition : 컨테이너 애플리케이션 명세서 (JSON)로 사용할 이미지 지정과, Container의 CPU & Memory 설정 등을 할 수 있다. 여러 컨테이너를 실행할 수 있다.
구성 관계
 

ECS & ECR 사용

실습에서 진행하게 될 플로우는 아래와 같다.

  1. IAM을 생성하는 작업
  2. ECR을 생성하고 이미지를 올리는 작업
  3. ECS를 생성
  4. Github Action을 통한 배포 자동화

IAM 생성

IAM -> 액세스관리 탭에 -> 사용자 -> 사용자 생성 클릭하여 최소 아래 2개 이상의 권한을 부여하고 생성 및 액세스 키 생성.

권한 : AmazonECS_FullAccess, AmazonECSTaskExecutionRolePolicy

발급받은 액세스 키를 통해 AWS CLI 에 로그인한다. $ aws configure 명령어를 통해 터미널에서 할 수 있다.

Create ECR & Push Image

ECR 페이지에 접속하여, 레포 이름 설정 후 생성.

ECR Page
ECR 생성 화면
  • 생성한 ECR 안에 들어가면, 푸시 명령 보기 로 명령어를 확인할 수 있다.

*맥북 M시리즈의 경우, 아래 명령어를 통해 linux_amd64 형식으로 빌드할 것.

$docker buildx build --platform linux/amd64 -t {이미지명}:latest .
ECR Repo Page
my-app ECR Repository Push 명령어
  • 이미지를 푸시하고, 생성한 레포 페이지로 돌아가면 로 가면 생성한 이미지를 확인할 수 있다.

Create ECS

위에 생성한 ECR Image로 ECS로 배포해보자. Cluster -> Task Definition -> Service 순으로 생성한다.

Step 1 — Cluster를 생성한다.

ECS Page
Cluster 생성 페이지
 

Step 2 — Task Definition을 생성한다.

*참고 : build한 이미지의 OS Architecture를 확인하고 맞추어 생성해야하는데, Github Action에서는 Default로 AMD64이미지로 생성하니, Linux/X86_64 로 설정하는 것을 권장함. (M 시리즈 맥북에서는 이미지 빌드할 때 OS Architecture를 ARM으로 빌드하니, AMD64로 빌드하기 위해 별도 옵션 필요 아래서 설명함)

Task Definition 생성 페이지(1) — 기본정보설정
컨테이너 설정
 

Step 3 — Service 생성

생성한 클러스터에 접속해 서비스 부분의 생성 버튼을 눌러 생성하면된다.

Cluster 접속 페이지
Service 생성 (1) — 배포 설정
Service 생성 (2) — VPC 설정
Service 생성 (3) — Load Balancer 설정

여기까지 진행하면, 잠시 기다렸다가 ALB의 DNS주소로 접속해 배포를 확인할 수 있다.

Github Action Setup

  • Github Action에가서 위에 생성한 IAM으로 Secret을 생성한다.
Github Setup (1) — Secret
  • Github Action ECS Template 을 다운로드 또는 즉시 커밋도 가능하다.
Download Template Page

위 내용을 .github/workflow 부분에 포함시켜 Github Action yml 파일을 생성한다.

  • 템플릿을 설정한다.

상단에 env부분만 설정하면 되는데,

Task Definition File이 필요하다. Task Definition의 경우 테스크 정의 -> JSON에서 확인이 가능하다. 다운받고 프로젝트 폴더에 포함시켜야 한다.

Task 정의 페이지 — Task Definition 파일을 다운로드
project folders

설정을 마쳤으면, Github 에 push 하면 정상적으로 배포됨을 확인할 수 있다. 👍

References

- [AWS ECS] https://boostbrothers.github.io/technology/2020/01/29/AWS-ECS-살펴보기/

- [AWS ECS Task Definition] https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/task_definitions.html

- [Docker & ECS & Github Action CICD Flow] https://www.youtube.com/watch?v=JyzVn3iBbHc

- [Github Action] https://velog.io/@tanggu01/AWS-ECS-Fargate로-서버-배포-및-GitHub-Action을-활용한-무중단-CICD-환경-구축하기

'Web Development > Back-end' 카테고리의 다른 글

EKS 사용하기  (3) 2025.07.21
동기 비동기 & 직렬 & 동시성에 대하여  (0) 2025.07.21
Docker 에 대하여 정리  (4) 2025.07.21
HTTP VS Socket  (0) 2023.05.01
Nestjs 한눈에 기본 정리  (0) 2023.05.01