Search

ECS (Elastic Container Service)

ECS
Docker 컨테이너를 지원하는 컨테이너 관리 서비스
EC2 인스턴스의 관리형 클러스터에서 애플리케이션을 손쉽게 실행 가능
ECS에서 애플리케이션의 가용성을 유지 관리하고 애플리케이션 용량 요구 사항에 따라 컨테이너 규모를 확장하거나 축소
CPU 사용량, 메모리 사용량, 로드 밸런서 요청 수, EventBridge 이벤트, SQS Queue와 결합하여 Auto Scaling 수행 가능
ALBNLB를 사용하여 트래픽 분산 가능

시작 유형

Fargate 시작유형
서버리스 방식으로 ECS 워크로드를 호스팅
사용자가 EC2 인스턴스를 관리할 필요 없음
EC2 시작유형
ECS 클러스터를 등록하고 사용자가 직접 관리하는 EC2 인스턴스에서 컨테이너화 된 애플리케이션을 실행
ECS Anywhere
ECS 클러스터에 등록하고 원격으로 관리하는 온프레미스 서버나 가상 머신에서 컨테이너화 된 애플리케이션을 실행

ECS 구성 요소

ECS 구성 요소
Task
Task를 실행하기 위해서는 Task definition 라는 것을 만들어야 한다.
Task definition 에는 Task 를 실행하기 위해 설정하는 내용이 있다. (Task 의 컨테이너 이미지, 리소스, 포트 설정들을 한다)
Task에는 컨테이너가 하나 있을 수도 있고, 여러 개가 있을 수도 있다.
(실행 중인 Task 에 에러가 생기면 자동으로 에러 생긴 Task는 지우고 새로운 Task를 생성할수있다)
Container Instance (컨테이너 인스턴스)
ECS를 통해서 Task를 배포하기 위한 컴퓨터(EC2 인스턴스 or Fargate 호스트)를 Container Instance라고 한다.
Container Instance 는 Task를 배포하기 위한 EC2 인스턴스이다.
Service (서비스)
Service 안에 Task 가 있다
Service를 설정 함으로써 Task 를 여러개 배포 가능하다.
Cluster (클러스터)
Cluster 는 Container Instance 들을 논리적인 그룹으로 묶는 단위이다
Task 를 배포하기 위한 instance 는 반드시 Cluster 에 등록되어야 한다.

Task Role

Task Role
Task RoleTask Definition에 정의된 IAM Role이다.
Task Role은 다른 AWS 서비스를 이용할 필요가 있을 때 사용하는 IAM Role이다.
예시
컨테이너의 어플리케이션에서 S3에 있는 파일을 조작해야 할 경우
컨테이너의 어플리케이션에서 DynamoDB에 있는 데이터를 읽어야 할 경우

Task Execution Role

Task Execution Role
Task Execution Role은 ECS Task의 컨테이너를 실행하기 위해서 필요한 IAM Role이다.
예시
ECR에서 container의 image를 pull 할 경우
Secret Manager에 저장된 값(아이디 or 비밀번호)을 가져 오고 싶을 경우

Task Role vs. Execution Role 차이

Task Role은 ECS Task의 컨테이너가 다른 AWS 서비스와 상호 작용하는데 필요한 권한을 제어한다.
Task Execution Role은 실행 중인 개별 컨테이너에 대한 권한을 제어한다.