FastAPI를 사용하여 AWS Lambda에 배포하는 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
Python 및 FastAPI를 사용한 백엔드 개발자, 클라우드 배포에 관심 있는 개발자
핵심 요약
- FastAPI와 AWS Lambda를 결합해 자동 확장 가능한 API를 구축할 수 있음
- Mangum을 사용해 ASGI 앱을 AWS Lambda에 적합한 핸들러로 변환
- Dockerfile을 통해 컨테이너화된 이미지를 생성하고 Amazon ECR에 업로드
- Lambda Function URL을 통해 공개 API 엔드포인트를 생성
섹션별 세부 요약
1. 프로젝트 초기 설정
.venv
가상 환경 생성 후fastapi[standard]
및mangum
설치requirements.txt
파일 생성으로 의존성 관리main.py
파일에서 FastAPI 앱 정의 (예:@app.get("/")
라우트)
2. Dockerfile 구성
public.ecr.aws/lambda/python:3.12
기반 이미지 사용requirements.txt
복사 및pip install
수행app/
폴더 복사 후CMD ["app.main.handler"]
실행 명령 설정
3. ECR 리포지토리 생성 및 이미지 업로드
- AWS ECR에서
fastapi-project
리포지토리 생성 docker push
명령으로 이미지 업로드
4. AWS Lambda 함수 생성
- ECR 이미지 URI를 사용해 Lambda 함수 생성
- Function URL 구성으로 공개 엔드포인트 생성 (인증 유형 선택 가능)
5. 배포 검증 및 테스트
- 생성된 HTTPS URL로 FastAPI 응답 확인 (
"Hello, World from FastAPI on AWS Lambda!"
) - API Gateway 대신 Function URL 사용 시 단순하지만 고급 기능 제한
결론
- Function URL은 빠른 테스트를 위한 간편한 선택이지만, API Gateway를 통한 배포가 보안 및 확장성 측면에서 권장됨
- 환경 변수는 Lambda의 Configuration 탭에서 설정 가능 (예: DB URL, API 키)
- Dockerfile 최적화와 ECR 활용이 배포 과정의 핵심 요소임