aws s3 static files in django
- aliases
-
No value
- tags
-
No value
- description
-
No value
- created
-
2023-07-01T23:40:57
- updated
-
2024-04-30T09:10:28
- title
-
aws s3 static files in django
- 루트 사용자 말고 IAM 사용자를 하나 만들어서 루트에 연결해야함.
- 루트계정에 MFA 인증을 추가한다.
- IAM 계정으로 로그인 후 인증키를 발급받는다. WHY? 보안 자격증명을 만들어주기 위해
- 버킷
- 정적 웹 사이트 호스팅 할 때 필요한
index.html 파일을 작성하여 업로드 및 활성화
- 버킷 정책 설정 docs.com
- 어떤 유저에게 어떤 리소스에 대한 어떤 접근을 허용/차단할지 등에 대한 정책임.
- ACL (Access Control List) 소유권 활성화 (안해도 돼)
장고 프로젝트로 돌아와서...
from core.env import config
AWS_ACCESS_KEY_ID=config("AWS_ACCESS_KEY_ID", default=None)
AWS_SECRET_ACCESS_KEY=config("AWS_SECRET_ACCESS_KEY", default=None)
AWS_S3_ADDRESSING_STYLE = "virtual"
AWS_STORAGE_BUCKET_NAME=config("AWS_STORAGE_BUCKET_NAME", default="estsoft-ormi-bookstore")
AWS_S3_REGION_NAME="ap-northeast-2"
AWS_S3_URL = f"https://{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com"
AWS_DEFAULT_ACL="public-read"
AWS_S3_USE_SSL=True
DEFAULT_FILE_STORAGE = 'core.storages.backends.MediaStorage'
STATICFILES_STORAGE = 'core.storages.backends.StaticFileStorage'
DEFAULT_FILE_STORAGE, STATICFILES_STORAGE 를 기본 클래스를 확장한 커스텀 클래스인 MediaStorage, StaticFileStorage로 변경한 것을 볼 수 있다. 파일을 들여다보자.
from storages.backends.s3boto3 import S3Boto3Storage, S3StaticStorage
class MediaStorage(S3Boto3Storage):
location = "media"
class StaticFileStorage(S3StaticStorage):
location = "static"
- 장고 템플릿 js 파일 로케이션을
{% static 'js/____.js' %} 식으로 변경
- 그리고
STATIC_URL 자리에 우리 S3 객체들이 담긴 URL을 넣어주었더니 js파일을 127.0.0.1이 아니라 https://allbooks-choi-2.s3.amazonaws.com/static/js/getCookie.js 이런 식으로 위치를 제대로 찾아가는 모습을 볼 수 있다.