AWS S3에 이미지 및 정적 파일을 업로드하는 방법

5575 단어 S3장고AWS

AWS 콘솔에서 S3 생성


  • AWS 콘솔에 로그인
  • S3 방문
  • バケットを作成 클릭
  • バケット名 를 넣고 나중에는 기본 설정으로 バケットの作成 를 합니다.
  • 생성 된 버킷을 클릭하여 상세 화면으로 이동
  • 사용 권한 탭을 엽니다
  • Cross-Origin Resource Sharing (CORS) 내용을 아래에 편집합니다.
  • [
        {
            "AllowedHeaders": [
                "*"
            ],
            "AllowedMethods": [
                "POST",
                "GET",
                "PUT"
            ],
            "AllowedOrigins": [
                "*"
            ]
        }
    ]
    

    AWS 콘솔에서 IAM 사용자 생성



    다음으로 S3을 조작할 수 있는 권한을 가진 사용자를 만들기 위해 IAM을 사용합니다.


    사용자 이름과 액세스 유형 모두에 ✔ 다음 단계로 이동합니다.



    기존 정책을 직접 연결에서 S3로 검색하여 AmazonS3FulAccess를 선택합니다.
    그런 다음 다음 단계로 계속 진행하여 사용자를 만듭니다.

    그 때 ACCESS_IDSECRET_KEY (중요)가 나오므로 그것을 삼가해 주십시오.
    주의를 기울이지 않으면 새 사용자를 다시 만들어야 합니다.

    필요한 패키지 설치


    $ pip install django-storages
    $ pip install boto3
    

    settings.py 설정



    INSTALLED_APPS에 storages를 추가합니다.

    settings.py
    
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        # My apps
        'blog',
        'searches',
        # aws
        'storages', #追加します。
    ]
    
    
    settings.py 의 맨 아래에서 작성한 S3 버킷의 설정을 작성합니다.

    settings.py
    #S3 BUCKETS CONFIG
    """
    AWS_ACCESS_KEY_ID = '***********' # Iamのuserid
    AWS_SECRET_ACCESS_KEY = '**********' # Iamのuser key
    AWS_STORAGE_BUCKET_NAME = 'renren-django-blog' #S3バケットの名前
    AWS_S3_FILE_OVERWRITE = False #同じ名前のファイルを上書きするか?
    AWS_DEFAULT_ACL = None # 
    DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
    STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
    """
    

    보다 세밀한 설정에 대해서 보고 싶은 분은 공식 문서 를 봐 주세요.

    실제로 S3에 업로드
    표시되지 않는 경우 inspect 모드를 기동(windows이면 F12 ) 해, 파일의 패스를 조사한다
    python manage.py collectstatic으로 자동으로 아마존에 올려줍니다.
    AWS_ACCESS_KEY_ID 이나 AWS_SECRET_ACCESS_KEY 등은 기밀 정보로서 .env 파일에 쓰기 그것을 참조하는 것이 추천됩니다. 아래 사이트를 참고로 설정해 주십시오.
    참고 사이트: 【Django】 환경 변수를 효율적으로 관리하는 「django-environ」의 사용법

    결론만 말하면 settings.py 파일이 다음과 같습니다.

    setting.py
    AWS_ACCESS_KEY_ID = env('AWS_ACCESS_KEY_ID')
    AWS_SECRET_ACCESS_KEY = env('AWS_SECRET_ACCESS_KEY') 
    AWS_STORAGE_BUCKET_NAME = env('AWS_STORAGE_BUCKET_NAME')
    AWS_S3_FILE_OVERWRITE = False
    AWS_DEFAULT_ACL = None
    DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
    STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
    

     .env
    AWS_ACCESS_KEY_ID=***********
    AWS_SECRET_ACCESS_KEY=**********
    AWS_STORAGE_BUCKET_NAME=**************
    

    S3 버킷에 업로드


    python manage.py collectstatic를 실행하면 현재 로컬 정적 폴더의 모든 파일이 S3에 업로드됩니다.
    media 폴더에 이미지가 있는 경우 처음에만 수동으로 업로드해야 합니다.

    참고



    공식 문서
    File Storage with AWS S3 Buckets Upload | Django (3.0) Crash Course Tutorials (pt 22)

    좋은 웹페이지 즐겨찾기