ECS
•
Docker 컨테이너를 지원하는 컨테이너 관리 서비스
•
EC2 인스턴스의 관리형 클러스터에서 애플리케이션을 손쉽게 실행 가능
•
ECS에서 애플리케이션의 가용성을 유지 관리하고 애플리케이션 용량 요구 사항에 따라 컨테이너 규모를 확장하거나 축소
•
CPU 사용량, 메모리 사용량, 로드 밸런서 요청 수, EventBridge 이벤트, SQS Queue와 결합하여 Auto Scaling 수행 가능
•
ALB 및 NLB를 사용하여 트래픽 분산 가능
시작 유형
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 Role은 Task 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은 실행 중인 개별 컨테이너에 대한 권한을 제어한다.











