Django-storages와 boto3를 활용하여 Elastic Beanstalk에서 사용할 static 파일을 s3에 업로드 하는 방법을 공유합니다.
S3 bucket 생성
Django 앱을 운영하는데에는 static file들이 필요한 경우가 대부분입니다.
이러한 static file들을 서버와 분리 해놓지 않으면, gitIgnore 되어 있는 static file들은 배포 시 마다 삭제 (초기화)될 것이고, 용량이 매우 커짐에 따라 deploy의 부담이 매우 커질 것 입니다.
따라서 이런 static file들을 s3에 보관하고자 하고, 필요 할 때 마다 가져오고자 합니다.
aws bucket을 생성합니다.
위 사진 처럼, 아래 두가지에만 체크를 해 줍니다.
우리는 Django server에서 파일을 업로드 할 수도 있고, 또 Django app에 접속한 사용자가 static file들을 읽을 수 있어야 합니다.
파일 업로드 / 읽기를 위해 django 에서 acl을 통해 파일들을 public으로 지정 할 수 있어야 하기 때문에 위 2가지 경우는 퍼블릭으로 허용 되어야 합니다.
계속 다음을 눌러주시고, s3 bucket 생성을 마무리 해 줍니다.
S3와 Django 연결
생성 된 s3 bucket과 django를 연결 하고, 또 로컬에 있는 static file들을 s3에 업로드 해 주여야 합니다.
s3와 django를 연결하기 위해서는 boto3
와 django-storages
패키지가 필요합니다.
1 |
|
이 두 패키지를 EB에도 설치하기 위해 requirements.txt에도 추가하는것을 잊지 말아 주세요.
설치 한 뒤, upload to s3 using django-storages 문서를 확인하여 settings.py에 필요한 변수들을 설정 해 줍니다.
저 같은 경우는 아래의 변수들이 필요 하여 설정 해 주었습니다.
여기서
AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
는 이전의 글 과정 중에AWS IAM
생성 과정에서 생성 한 유저에 대한 정보입니다.
settings.py에 바로 입력하지 마시고 반드시 환경 변수를 활용하여 입력 해 주세요. AWS_DEFAULT_ACL, AWS_S3_OBJECT_PARAMETERS은 공식 문서를 반드시 참고하여 서비스에 필요한 값을 추가 해 주세요.
1 |
|
EB 명령어에 collect static 추가
collect static 명령어를 EB에 추가해서 EB에 흩뿌려진 static 파일들을 STATIC_ROOT로 모아줍니다.
앞의 글에서 처럼, .ebextension
안의 django.config
속에 아래와 같은 코드를 추가 해 줍니다. ( 반드시 container_commands
의 하위에 넣어야 합니다. )
1 |
|
커밋 후 eb deploy 진행 이후 s3를 확인하시면, 아래와 같이 static file들이 업로드 된 것을 확인 할 수 있습니다.
반드시 eb open을 통해 eb 환경에 들어가서, 제대로 static 파일들이 불려 져 오는것을 확인 해주세요.
"Django" 카테고리의 최근 포스팅
카테고리 모든 글 보기Zappa를 활용하여 Django 배포하기 - S3에 연결하기 | 2020. 10. 11 |
---|---|
Zappa를 활용하여 Django 배포하기 - MySQL RDS에 연결 & Migrate 하기 | 2020. 10. 10 |
Django - django-dotenv 사용하기 | 2020. 10. 09 |
That port is already in use error in macOS | 2020. 10. 08 |
Zappa를 활용하여 Django 배포하기 - not authorized to perform error | 2020. 10. 04 |
Zappa를 활용하여 Django 배포하기 | 2020. 10. 03 |
Elastic Beanstalk - Django AWS S3 연결하기 ( static file ) | 2020. 09. 29 |
Elastic Beanstalk - Django AWS postgresql RDS migration 진행하기 | 2020. 09. 28 |
Elastic Beanstalk "Command 01_migrate failed" Error | 2020. 09. 28 |
Django 서버 에러 받기 - sentry 사용하기 | 2020. 09. 28 |