AWS EC2에 FastAPI 배포

본 글은 영상 ' How to Deploy FastAPI on AWS EC2: Quick and Easy Steps!'을 참고하여 Cluade 4.6으로 작성 후 수정했다.

AWS EC2 인스턴스를 생성하고, Nginx 리버스 프록시를 설정한 뒤 FastAPI 앱을 배포하는 전체 과정을 정리한다.


1. EC2 인스턴스 생성

AWS 콘솔에서 EC2 서비스로 이동한 뒤 Launch Instance를 클릭한다.

설정 항목은 아래와 같다.

  • Name: 원하는 서버 이름 입력
  • OS: Ubuntu (최신 LTS 버전)
  • Instance type: t2.micro (프리 티어 사용 가능)
  • Key pair: 새 키 페어 생성 후 .pem 파일 다운로드
  • Network settings: Allow SSH, Allow HTTP, Allow HTTPS 모두 체크

2. SSH 접속 및 기본 환경 설정

.pem 파일이 있는 디렉토리에서 아래 명령어를 실행한다.

키 페어 파일 권한을 먼저 변경한다.

chmod 400 <키페어_파일명>.pem

이후 EC2 인스턴스에 접속한다.

ssh -i "<키페어_파일명>.pem" ubuntu@<인스턴스_퍼블릭_IP>

접속 후 패키지를 업데이트하고 필수 소프트웨어를 설치한다.

sudo apt-get update
sudo apt install -y python3-pip nginx

3. Nginx 리버스 프록시 설정

외부에서 들어오는 80포트(HTTP) 요청을 FastAPI가 실행되는 8000포트로 포워딩하는 설정이다.

설정 파일을 생성한다.

sudo nano /etc/nginx/sites-enabled/fastapi_nginx

파일 안에 아래 내용을 작성하고 저장한다.

server {
    listen 80;
    server_name <인스턴스_퍼블릭_IP>;
    location / {
        proxy_pass http://127.0.0.1:8000;
    }
}

Nginx를 재시작한다.

sudo service nginx restart

4. FastAPI 앱 배포 및 실행

GitHub에서 소스 코드를 가져온다.

git clone <GitHub_저장소_URL>
cd <저장소_폴더명>

필요한 패키지를 설치한다.

pip3 install -r requirements.txt

FastAPI 서버를 실행한다.

python3 -m uvicorn main:app

5. 결과 확인 및 인스턴스 종료

브라우저에서 아래 주소로 접속하면 앱이 동작하는 것을 확인할 수 있다.

http://<인스턴스_퍼블릭_IP>

⚠️ 실습이 끝난 후에는 AWS 콘솔에서 인스턴스를 반드시 Terminate(종료) 해야 한다. 종료하지 않으면 프리 티어 한도를 초과하여 요금이 발생할 수 있다.