S3 -> 버킷 -> 버킷 만들기
리전 선택 -> 버킷 이름 지정
객체 소유권 디폴트 값 선택
-> ACL 비활성화를 선택하여 내가 접속한 계정에서만 권한 소유가 되도록 함.
이미지 업로드 활성화를 위해 퍼블릭 액세스 차단 해제
나머지 설정은 비활성화 및 디폴트값으로 선택 후 버킷 만들기 실행
본인 계정 클릭 -> 보안 자격 증명 클릭
좌측 사이드바의 사용자 클릭
사용자 생성 클릭
사용자 이름 지정 -> 다음 -> 권한 옵션(직접 정책 연결) 클릭
S3 검색 -> S3FullAccess 권한 부여 -> 다음 -> 사용자 생성
생성된 사용자 이름 클릭
액세스키 만들기 -> 사용 사례 첫번째 Command 클릭 -> 다음 -> 액세스키 만들기
액세스키 생성 후, Key 메모장에 저장 및 csv 파일 다운로드
# MEDIA_URL = "/media/"
# MEDIA_ROOT = os.path.join(BASE_DIR, "media")
#django-storages 패키지의 S3 저장소 클래스를 임포트
from storages.backends.s3boto3 import S3Boto3Storage
# AWS 설정 추가
AWS_REGION = ' ' #AWS서버의 지역
AWS_ACCESS_KEY_ID = ' '
AWS_SECRET_ACCESS_KEY = ' '
AWS_STORAGE_BUCKET_NAME = ' ' #생성한 버킷 이름
AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.{AWS_REGION}.amazonaws.com'
< ----- 정적 파일 설정은 활성화하지 않음. ---------->
# # 정적 파일 설정
# STATIC_LOCATION = 'static'
# STATIC_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{STATIC_LOCATION}/'
# STATICFILES_STORAGE = 'your_project.storage_backends.StaticStorage'
# S3 스토리지 클래스
# S3에 저장될 때, 미디어 파일들이 media 서브디렉토리 내에 저장되도록 설정
class MediaStorage(S3Boto3Storage):
location = 'media' # 미디어 파일이 저장될 서브디렉토리
# 미디어 파일의 스토리지 설정
DEFAULT_FILE_STORAGE = '내 프로젝트 이름.settings.MediaStorage'
# 미디어 파일의 URL 설정
MEDIA_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/media/'
만들어둔 bucket 이름 클릭 -> 권한 클릭 -> 버킷 정책 편집 -> 정책 생성기 클릭
[정책 생성기 url]
https://awspolicygen.s3.amazonaws.com/policygen.html
모든 과정 이행 후, 권한이 부여되면 media 파일 업로드 및 호출 가능
-> 다음과 같이 "퍼블릭 액세스 가능"이 표시됨
브라우저를 열어 확인하면 s3에 업로드된 이미지 url은 로드되지만 객체 URL을 복사하여 브라우저에서 사용하려면 작동하지 않게 된다.