파일 업로드시 s3로 저장 안됨(루트 경로에 저장)

0

django restframework로 프로젝트를 구성했고 boto3와 django-storages를 사용해서 이미지 파일과 다른 파일들을 업로드 하려고 하는데 s3에 저장이 되지 않습니다. default storage 도 변경했고 ec2서버에서 수동으로 업로드 처리를 해보면 저장이 잘 됩니다. admin 페이지에서 업로드를 하면 url도 올바르게 반환되고 저장도 잘되었다고 나오지만 실제로 s3 버킷에서 확인해보면 업로드가 안되어 있습니다.

ec2의 root경로에만 파일이 저장되는데 왜 s3로 저장이 되지 않을까요?

아래와 같이 입력하면 s3버킷으로 잘 옮겨지고 logging으로 확인해도 오류가 뜨지 않습니다. aws s3 cp test_file.txt s3:/버킷이름/media/test_file.txt

권한 설정의 버킷 정책은 현재 모든 s3 action이 가능하게 설정되어 있고, 퍼블릭 엑세스가 가능하게 설정되어 있습니다.

질문됨 2달 전29회 조회
1개 답변
0

이 문제는 Django 설정과 S3 연동에 관련된 것으로 보입니다. 몇 가지 가능한 원인과 해결 방법을 제시해 드리겠습니다:

  1. Django 설정 확인:

    • settings.py 파일에서 AWS 관련 설정이 올바르게 되어 있는지 확인하세요.
    • DEFAULT_FILE_STORAGE가 'storages.backends.s3boto3.S3Boto3Storage'로 설정되어 있는지 확인하세요.
    • AWS_STORAGE_BUCKET_NAME, AWS_S3_REGION_NAME 등의 설정이 정확한지 확인하세요.
  2. 권한 설정:

    • EC2 인스턴스에 연결된 IAM 역할이 S3에 대한 적절한 권한을 가지고 있는지 확인하세요.
    • S3 버킷 정책과 IAM 사용자/역할 정책이 일치하는지 확인하세요.
  3. 환경 변수:

    • AWS_ACCESS_KEY_ID와 AWS_SECRET_ACCESS_KEY가 올바르게 설정되어 있는지 확인하세요.
    • 이 값들이 환경 변수로 설정되어 있다면, Django 애플리케이션이 이를 읽을 수 있는지 확인하세요.
  4. 디버깅:

    • Django의 로깅 레벨을 DEBUG로 설정하고, S3 관련 로그를 확인해보세요.
    • boto3 라이브러리의 디버그 모드를 활성화하여 더 자세한 로그를 확인해보세요.
  5. 파일 권한:

    • EC2 인스턴스에서 생성된 파일의 권한이 Django 애플리케이션에서 읽을 수 있는지 확인하세요.
  6. 네트워크 설정:

    • EC2 인스턴스의 보안 그룹이 S3로의 아웃바운드 트래픽을 허용하는지 확인하세요.
  7. 버전 호환성:

    • 사용 중인 Django, django-storages, boto3 버전들이 서로 호환되는지 확인하세요.

이러한 점들을 체크하고 문제가 지속된다면, 더 자세한 로그와 설정 파일을 검토해야 할 수 있습니다. Django 애플리케이션이 S3와 제대로 통신하고 있지만 파일 저장 과정에서 문제가 발생하는 것으로 보이므로, 파일 저장 로직을 단계별로 디버깅해보는 것도 도움이 될 수 있습니다.

Sources
Community | Amazon Simple Storage Service (Amazon S3)
Code examples for Amazon S3 using AWS SDKs - Amazon Simple Storage Service
S3File - AWS End User Messaging Social

profile picture
답변함 2달 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인

관련 콘텐츠