AWS ECS 적용 전 준비사항
안녕하세요! 이번 포스팅에서는 ECS를 적용하기 전, 사전에 준비할 항목들을 포스팅해보겠습니다. 준비할 항목들은 아래의 순서로 진행됩니다. 포스팅을 보기 전 실험삼아 배포해볼 애플리케이션 이미지를 준비해주세요!
- ECR 생성
- ECR에 샘플 이미지 푸시
- IAM 역할 생성
- 보안 그룹 설정
1. ECR 생성
AWS 콘솔에서 Elastic Container Registry를 검색 후 들어가줍니다.

그리고 리포지토리 생성을 위해 시작하기를 눌러줍니다.

프라이빗 리파지토리로 설정하고, 리포지토리 이름을 붙인후 밑으로 스크롤하여 생성합니다.


2. ECR에 샘플 이미지 푸시
이제 샘플로 만든 애플리케이션 이미지를 지금 만든 ECR에 푸시해보겠습니다. 생성 직 후 만든 리포지토리에 들어가서 푸시 명령 보기를 눌러줍니다. 그럼 아래와 같이 명령들이 나올텐데요. 순서대로 복사하여 커맨드창에 실행해줍니다.

각 명령들을 순서대로 실행한 결과는 아래 화면과 같습니다.

그리고 방금 우리가 만든 ECR을 새로고침 해보면 이미지가 업로드되어 있습니다.

3. IAM 역할 생성
다음은 역할을 생성하기 위해 IAM 콘솔 > 역할에 접속해줍니다. 그리고 역할 만들기를 클릭합니다.

신뢰할 수 있는 엔터티 유형으로 AWS 서비스를 선택하고 사용 사례는 '다른 AWS 서비스의 사용 사례'에서 'Elastic Container Service Task'를 선택하고 다음으로 넘어갑니다.


그리고 'AmazonECS_FullAccess'를 선택합니다. 현재는 예제라서 Full Access를 선택했지만, 권한 정책은 필요한 만큼만 설정하는 것이 올바르다고 합니다. 선택 후 다음 버튼을 누르고 역할 이름을 작성하여 마무리합니다.



4. 보안 그룹 설정
이제 로드 밸런서와 각 컨테이너를 띄울 EC2 인스턴스에 대한 보안 그룹을 생성해야합니다. AWS 콘솔에서 'EC2 > 보안 그룹'을 들어가서 보안 그룹 생성을 눌러줍니다.

먼저 로드 밸런서를 위한 보안 그룹을 생성해보겠습니다. 보안 그룹 이름과 설명, 인바운드 규칙은 HTTP(80), HTTPS(443)을 각각 추가해주시고 보안 그룹 생성을 눌러줍니다.


그리고 컨테이너가 자리할 EC2 인스턴스의 보안 그룹을 생성해줍니다. 이번에는 인바운드 규칙을 TCP의 모든 포트를 열어줍니다.
주의사항 : 예제 상으로는 TCP의 모든 포트를 열어주었습니다. 저는 현재 AWS에서 제공하는 디폴트 VPC와 서브넷을 이용하여 포스팅을 진행하는데 서브넷 모두 퍼블릭 서브넷이며 이 경우 보안에 취약합니다. 별도의 프라이빗 서브넷을 생성하는 것이 보다 안전합니다.


이렇게 ECS 적용 전 준비할 것들을 모두 마무리했습니다. 다음 포스팅에서는 본격적으로 ECS 클러스터, 작업 정의, 서비스를 생성해 배포해보겠습니다.