Ec2 인스턴스를 Ecs에 연결하기
ECS에 ASG 연결하고 서비스를 띄운다고 해서 ASG의 EC2 인스턴스가 알아서 연결되는 것은 아니다.
ECS cluster
- 컨테이너를 실행할 수 있는 서비스 Elastic Container Service인 ECS는 두 가지 유형으로 실행된다.
- Fargate
- EC2 Instnace (설정)
- EC2 유형을 선택하면 Auto Scaling Group이 세팅되거나 세팅해야하며 사용할 인스턴스의 템플릿을 지정해 동적으로 늘리고 줄일 수 있다.
EC2 - ECS 연결
- ECS와 EC2 인스턴스가 준비됐다면 이 둘을 연결해야한다.
- ECS가 EC2를 인식하기 위해서는 ECS container Agent가 필요하다.
- 마치 K8S의 kubelet처럼 데몬이고 관리하는 대상의 상태(health)나 metric 등을 보고한다.
- 물론 ECS에서 작업을 실행할 때 ECS와 EC2의 항상 연결이 별도로 필요하지는 않다.
- Amazon Linux 계열이나 agent가 이미 설정돼있는 AMI들이 존재하니 이를 사용해도 된다.
- https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/ecs-optimized_AMI.html (Amazon ECS 최적화 Linux AMI)
- 그러나 이 포스팅이 있는 이유는 custom AMI를 만들어 두려할 때 ECS 연결이 안되는 당황스러운 경우를 위함이다.
kubelet과 ECS container agent 비교
| 항목 | kubelet | ECS Container Agent |
|---|---|---|
| 소속 | Kubernetes | AWS ECS |
| 역할 | Pod 실행 | Task 실행 |
| 통신 대상 | API Server | ECS svc |
| runtime | containerd / CRI-O | Docker / containerd |
ECS Agent 설치하고 세팅하기
1
2
curl -O https://s3.ap-northeast-2.amazonaws.com/amazon-ecs-agent-ap-northeast-2/amazon-ecs-init-latest.x86_64.rpm
sudo yum localinstall -y amazon-ecs-init-latest.x86_64.rpm
- 설정 파일 수정
/etc/ecs/ecs.config파일에 ECS 클러스터 이름을 적어준다bash ECS_CLUSTER=test-cluster
- ECS agent 실행
1 2
sudo systemctl start ecs # 지금 시작 sudo systemctl enable ecs # EC2 인스턴스가 재시작 되면 자동 시작
- 확인

ECS Auto Scaling Group
- 위 방법처럼 직접 개별 ec2에서 설치하고 연결하는 방법도 있지만 개인 단위가 아닌 경우 ASG를 설정해 scale in and out 에 따라 자동으로 연결되게 하는 방법을 많이 사용할 것이다.
- 다음 그림처럼 ASG를 구성하는 시작 템플릿의 “고급 세부 정보” 탭에 있는 “사용자 데이터 - 선택 사항“에 명령어들을 기입해서 연결할 수 있다.
- 인스턴스가 시작될 때 수행되는 예약성 코드들이다.
ecs에 ec2가 연결 안될때마다 설정하는 사항이라 포스팅했다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

