✨ 문제 요약
Django 5.2.4에서 AWS S3를 정적 파일 저장소(STATICFILES_STORAGE)로 사용하려고 설정했는데, python manage.py collectstatic을 실행할 때마다 계속 이렇게 나왔다.
0 static files copied to '/Users/mj/Documents/my_site/staticfiles', 134 unmodified.
심지어 python manage.py shell에서 확인해도...
from django.contrib.staticfiles.storage import staticfiles_storage
print(staticfiles_storage.__class__)
# 출력: <class 'django.contrib.staticfiles.storage.StaticFilesStorage'>
👉 이건 Django가 여전히 기본 로컬 FileSystemStorage를 쓰고 있다는 뜻.
아무리 STATICFILES_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"를 설정해도 무시되는 상태.
🔍 삽질한 흔적들
- STATICFILES_STORAGE, DEFAULT_FILE_STORAGE 설정을 수십 번 바꿈
- INSTALLED_APPS에 "storages"도 정상 등록
- collectstatic에 --clear, -v 3 다 써봄
- 심지어 Django 5.2 공식문서도 다시 뒤져봄...
- 키, 버킷, 리전 설정도 모두 정상
결론: 코드엔 문제가 없었다. 내 환경이 문제였다.
🧠 원인: Django 4.2부터 바뀐 static/media storage 방식
Django 4.2 이후부터는 STATICFILES_STORAGE와 DEFAULT_FILE_STORAGE를 직접 설정하는 것이 권장되지 않고, 대신 STORAGES 설정 딕셔너리를 써야 한다.
내 코드에서는 STATICFILES_STORAGE를 분명히 설정했지만, Django는 무시하고 있었다.
왜냐하면 5.2에서는 STORAGES 키가 우선순위가 더 높기 때문.
✅ 해결 방법
결국 아래처럼 STORAGES를 명시해주니까 정상적으로 S3로 collectstatic이 작동했다.
STORAGES = {
"default": {
"BACKEND": "storages.backends.s3.S3Storage",
"OPTIONS": {
"access_key": AWS_ACCESS_KEY_ID,
"secret_key": AWS_SECRET_ACCESS_KEY,
"bucket_name": AWS_STORAGE_BUCKET_NAME,
"region_name": AWS_S3_REGION_NAME,
"querystring_auth": False,
},
},
"staticfiles": {
"BACKEND": "storages.backends.s3.S3Storage",
"OPTIONS": {
"access_key": AWS_ACCESS_KEY_ID,
"secret_key": AWS_SECRET_ACCESS_KEY,
"bucket_name": AWS_STORAGE_BUCKET_NAME,
},
},
}
그리고 기존 설정 중 이런 것들은 이제 필요 없어졌다:
# 더 이상 필요 없음
# STATICFILES_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
# DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
🔥 교훈
- Django 버전 바뀌면 공식 문서를 꼭 다시 보자
- STATICFILES_STORAGE만으로는 이제 충분하지 않다
- S3 연동이 잘 안 되면 print(staticfiles_storage.__class__)부터 해보자
- 도움주신 영재님께 무한 감사를...
✅ collectstatic 성공 모습
Uploading 'admin/css/base.css' to s3://django-blog-course-mj/static/admin/css/base.css
Uploading 'blog/post.css' to s3://django-blog-course-mj/static/blog/post.css
...
이제 내 버킷에 정적 파일이 하나둘 업로드되는 걸 보는 기쁨...
이 맛에 Django 한다 😊
🙌 혹시 나처럼 Django 최신 버전 + AWS S3 연동 문제 겪는 분이 있다면
꼭 STORAGES 설정을 확인하세요!

'Programming > Django' 카테고리의 다른 글
| 🧪 Python Mock 완벽 가이드 — 테스트에서 가짜 객체를 쓰는 이유 (5) | 2025.08.05 |
|---|---|
| 🧪 테스트 주도 개발(TDD) 완벽 가이드 (4) | 2025.08.04 |
| Django 프로젝트에 AWS S3 연동하기 (정적/미디어 파일 서빙 완전 정복) (3) | 2025.07.31 |
| 🔍 Django의 wsgi.py와 django.conf – 배포 입문자를 위한 핵심 정리! (2) | 2025.07.30 |
| 💡 getenv란? 환경 변수와 Django 설정의 연결고리 (3) | 2025.07.30 |