장고 S3 backend 설정 업데이트

hyuckhoon.ko·2021년 1월 19일
0

What I learned in first year

목록 보기
62/146


1. requirements.txt 파일 수정

Django>=2.1.3,<2.2.0
djangorestframework>=3.9.0,<3.10.0
psycopg2>=2.7.5,<2.8.0
Pillow>=5.3.0,<5.4.0
uwsgi>=2.0.18,<2.1.0

flake8>=3.6.0,<3.7.0

boto3django-storages모듈을 추가한다.

Django>=2.1.3,<2.2.0
djangorestframework>=3.9.0,<3.10.0
psycopg2>=2.7.5,<2.8.0
Pillow>=5.3.0,<5.4.0
uwsgi>=2.0.18,<2.1.0
boto3>=1.12.0,<1.13.0
django-storages>=1.9.1,<1.10.0

flake8>=3.6.0,<3.7.0



2. settings.py 파일 수정

S3_STORAGE_BACKEND = bool(int(os.environ.get('S3_STORAGE_BACKEND', 1)))
if S3_STORAGE_BACKEND is True:
    DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
    
AWS_DEFAULT_ACL = 'public-read'
AWS_STORAGE_BUCKET_NAME = os.environ.get('S3_STORAGE_BUCKET_NAME')
AWS_S3_REGION_NAME = os.environ.get('S3_STORAGE_BUCKET_REGION', 'us-east-1')
AWS_QUERYSTRING_AUTH = False



3. docker-compose.yml 파일 수정

  • 변경 전
version: "3"

services:
  app:
    build:
      context: .
    ports:
      - "8000:8000"
    volumes:
      - ./app:/app
    command: >
      sh -c "python manage.py wait_for_db &&
             python manage.py migrate &&
             python manage.py runserver 0.0.0.0:8000"
    environment:
      - DB_HOST=db
      - DB_NAME=app
      - DB_USER=postgres
      - DB_PASS=supersecretpassword
      - DEBUG=1
    depends_on:
      - db

  db:
    image: postgres:10-alpine
    environment:
      - POSTGRES_DB=app
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=supersecretpassword



- S3_STORAGE_BACKEND=0
위의 코드를 추가하여 다음과 같이 수정한다.
로컬환경에서 도커 컴포즈로 컨테이너들을 실행시킬때(또는 유닛테스트시),
환경변수를 셋팅하는 부분을 수정하는 것이다.
- S3_STORAGE_BACKEND를 disable하는 것이다.


  • 변경 후
version: "3"

services:
  app:
    build:
      context: .
    ports:
      - "8000:8000"
    volumes:
      - ./app:/app
    command: >
      sh -c "python manage.py wait_for_db &&
             python manage.py migrate &&
             python manage.py runserver 0.0.0.0:8000"
    environment:
      - DB_HOST=db
      - DB_NAME=app
      - DB_USER=postgres
      - DB_PASS=supersecretpassword
      - DEBUG=1
      - S3_STORAGE_BACKEND=0
    depends_on:
      - db

  db:
    image: postgres:10-alpine
    environment:
      - POSTGRES_DB=app
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=supersecretpassword



4. 테스트

1. /api/user/create/ 접속 및 회원가입

유저를 생성하였다.

2. /api/user/token/ 접속 및 토큰 발급

토큰을 발급받았다.

크롬 익스텐션 중 하나인 ModHeader에 방금 전에 발급받은 토큰을 헤더에 넣는다.

filter 항목에는 api 엔드포인트/.*를 추가해준다.


3. /api/recipe/recipes

요리법을 포스팅하며 이미지도 함께 업로드해보자.


4. /api/recipe/recipes/1/upload-image/

첨부파일에 이미지를 넣어준다.
구글 이미지에 간장계란밥 이미지를 다운받아 업로드하려고 한다.

업로드 된 이미지는 S3버킷에서도 확인할 수 있다.




0개의 댓글