| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- 블록체인개론
- Blockmonkey
- 관계형데이터베이스
- nodejs
- javascript 초급
- 컴퓨터공학개론
- 컴퓨터사이언스
- hyperledger fabric
- al
- 깃
- js
- 생활코딩
- vs code
- javascirpt
- 파이썬 알고리즘
- algorithum
- SQL
- 생활코딩 nodejs
- 하이퍼레저
- 자바스크립트
- Javascript
- 블록체인
- 제로초
- mysql
- hyperledger
- Nodejs 프로젝트
- 프로그래밍
- 블록몽키
- javascript 게임
- DataStructure
- Today
- Total
Blockmonkey
ECS 사용기 본문
개요
#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 사용
실습에서 진행하게 될 플로우는 아래와 같다.
- IAM을 생성하는 작업
- ECR을 생성하고 이미지를 올리는 작업
- ECS를 생성
- Github Action을 통한 배포 자동화

IAM 생성
IAM -> 액세스관리 탭에 -> 사용자 -> 사용자 생성 클릭하여 최소 아래 2개 이상의 권한을 부여하고 생성 및 액세스 키 생성.
권한 : AmazonECS_FullAccess, AmazonECSTaskExecutionRolePolicy
발급받은 액세스 키를 통해 AWS CLI 에 로그인한다. $ aws configure 명령어를 통해 터미널에서 할 수 있다.
Create ECR & Push Image
ECR 페이지에 접속하여, 레포 이름 설정 후 생성.


- 생성한 ECR 안에 들어가면, 푸시 명령 보기 로 명령어를 확인할 수 있다.
*맥북 M시리즈의 경우, 아래 명령어를 통해 linux_amd64 형식으로 빌드할 것.
$docker buildx build --platform linux/amd64 -t {이미지명}:latest .


- 이미지를 푸시하고, 생성한 레포 페이지로 돌아가면 로 가면 생성한 이미지를 확인할 수 있다.
Create ECS
위에 생성한 ECR Image로 ECS로 배포해보자. Cluster -> Task Definition -> Service 순으로 생성한다.
Step 1 — Cluster를 생성한다.


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



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




여기까지 진행하면, 잠시 기다렸다가 ALB의 DNS주소로 접속해 배포를 확인할 수 있다.
Github Action Setup
- Github Action에가서 위에 생성한 IAM으로 Secret을 생성한다.

- Github Action ECS Template 을 다운로드 또는 즉시 커밋도 가능하다.


위 내용을 .github/workflow 부분에 포함시켜 Github Action yml 파일을 생성한다.
- 템플릿을 설정한다.
상단에 env부분만 설정하면 되는데,
Task Definition File이 필요하다. Task Definition의 경우 테스크 정의 -> JSON에서 확인이 가능하다. 다운받고 프로젝트 폴더에 포함시켜야 한다.


설정을 마쳤으면, 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 |