[Django] Serverless 환경에서 S3 활용하기

golony·2022년 9월 14일
0

개발

목록 보기
15/23

배경

zappa 프레임워크를 사용해, Django 프로젝트를 AWS에 배포해 운영하고 있는 상황이다.
정적파일, 미디어 파일은 S3를 저장소로 활용 중이었는데 파일 업로드 기능을 추가하면서 문제가 생겼다.

이슈 1: 'Endpoint request timed out'

파일 업로드를 시도하면 아래의 오류가 Response로 날아온다.

{"message": "Endpoint request timed out"}

시도 1: 이것저것 권한 설정

최소 권한의 원칙에 따라 S3 권한을 줘보다가, AmazonS3FullAccess를 주었는데도 동일한 문제가 발생했다.

-> 권한 문제는 아닌것 같다.

시도 2: 네트워크 관련 설정: VPC, Security Group 등

솔직히 VPC는 봐도 잘 모르겠어서 넘어갔다.
(게다가 VPC가 기본 VPC 하나여서, 문제될 부분이 없다고 생각했다.)

SG는 AllowAll 상태

-> 얘도 아닌 것 같다.

시도 2: VPC Endpoint 작성 (해결)

어디선가 VPC Endpoint를 Gateway 타입으로 만들어보라는 글을 보았고, 적용해보았다.

AWS 문서를 참고해 서울 리전 S3를 위한 VPC 엔드포인트를 Gateway 타입으로 추가했다.
(interface 타입으로는 존재하고 있는 상황: 다음에 이 둘의 차이에 대해 정리해보아야 겠다.)

Endpoint를 추가하면서 Lambda에서 사용하고 있는 라우팅 테이블을 지정해주었고,
그래서인지 라우팅 테이블에 생성한 Endpoint가 추가되어있었다.

깔끔하게 해결

참고자료

profile
더 나은 세상으로 나아가는 서비스를 만들고 싶습니다.

0개의 댓글