FastAPI 프로젝트 배포:ECS Fargate 배포

지진우·2023년 12월 16일
0

1. Introduction

이전 포스팅에선 FastAPI 서버의 컨테이너 이미지를 AWS ECR에 업로드했습니다.

이제 서버를 ECS Fargate에 배포해보도록 하겠습니다.

2. ALB(Application Load Balancer) 생성

AWS EC2로 이동해 "로드 밸런싱"의 "로드밸러서"로 이동해 로드밸러스를 생성합니다.

로드 밸런서 유형은 "Application Load Balancer"로 생성합니다.

로드 밸런서의 이름을 설정하고 네트워크 매핑에서 VPC를 선택합니다. 만약 VPC가 없다면 VPC로 이동해서 VPC를 생성해줍니다.

최소 2개의 가용영역과 영역당 하나의 서브넷이 필요합니다.

새로운 창을 열어 AWS EC2 보안그룹에서 HTTP 요청에 80 포트를 허용하는 보안그룹을 생성합니다. 생성한 VPC를 선택하고 인바운드 규칙에서 아래와 같이 설정합니다.

보안그룹에서 새로고침을 눌러 생성한 보안그룹을 적용합니다.

이제 타켓이 되는 그룹을 선택해야합니다. AWS EC2 대상 그룹 으로 이동해 대상 그룹 생성을 합니다.

로드 밸런싱을 지원하는 "IP 주소"를 선택하고 생성한 VPC를 선택 후 다음과 같이 설정합니다.

다시 로드 밸런서로 돌아와 리스너 및 라우팅에서 새로고침을 누르고 생성한 대상 그룹을 선택 후 로드 밸런서를 생성합니다.

3. ECS(Elastic Container Service)

이제 AWS ECS 로 이동해 클러스터를 생성합니다. AWS Fargate로 배포할 예정이니 인프라를 AWS Fargate로 설정합니다.

AWS ECS의 테스크 정의로 이동해 새 테스크 정의 생성을 합니다. 테스크 정의는 포트 매핑, 도커 이미지, CPU, 메모리 사용량 등과 같은 서비스의 동작 및 설정을 정의하는 docker-compose과 유사합니다.

AWS Fargate를 선택하고 각자에 필요에 따라 CPU와 메모리 사용량을 설정하고 테스크 역할을 "ecsTaskExecutionRole"로 선택합니다.

이제 컨테이너 포트를 매핑해야합니다. 이전에 생성했던 컨테이너 이미지의 이름과 URL을 ECR Repogitories에서 가져옵니다.

아래와 같이 이미지의 이름과 URL을 설정합니다. 또한 컨테이너는 8000포트를 수신하기 때문에 컨테이너 포트가 8000임을 나타내는 포트 매핑을 정의합니다.

이후 테스크를 생성하고 다시 클러스터로 이동해 생성한 클러스터에서 서비스를 생성합니다.

컴퓨팅 옵션을 시작 유형으로 선택합니다.

패밀리를 이전에 생성한 테스크 정의를 선택하고 아래와 같이 배포구성을 합니다.

아래로 이동해 네트워킹 설정을 합니다. 생성한 VPC와 서브넷을 선택한 후 아래와 같이 보안그룹을 생성합니다. 이전에 컨테이너를 8000 포트에 매핑했으므로 사용자 지정으로 TCP 8000 포트를 허용하는 보안 그룹을 생성해야합니다.

이제 로드 밸런싱으로 이동해 생성한 로드 밸랜싱을 연결합니다. 기존 로드 밸런서에서 생성한 로드 밸런서를 선택한 후 생성한 대상 그룹을 적용합니다.

서비스 성공적으로 배포되면 아래와 같이 활성화 됩니다.

이제 테스트를 위해 EC2의 로드밸런서로 이동해 DNS 이름으로 브라우저에서 접근합니다.

짠! 제대로 동작하는 것을 확인할 수 있습니다.

업로드중..

profile
높이보다는 멀리, 넓게보다는 깊게

0개의 댓글

관련 채용 정보