Elastic beanstalk에 배포 되어 있는 Django 서버를 AWS PostgreSQL RDS에 migration 하는 과정을 공유합니다.
Add Migration command to EB config
로컬에서는 Django model 작업을 진행 한 뒤, manage.py를 통해 makemigration 및 migration을 진행 할 수 있습니다.
이 작업을 이전 포스팅에서 yum을 통해 postgresql-devel
을 설치 한 것 처럼, .ebextension
에 명령어를 추가 해 줌으로써 통해 진행 할 수 있습니다.
AWS 공식 문서의 Add a database migration configuration file
부분에서 확인 할 수 있습니다.
위 공식문서 처럼 작업하기 위해, 이전 포스팅에서 만들었던 .ebextension
안의 django.config
속에 아래와 같은 코드를 추가 해 줍니다.
1 |
|
-
container_commands
는 EB에 실행 시킬 command들을 담는 공간입니다. -
n(숫자)_내릴명령어
로 command들을 구분 짓습니다. -
n(숫자)_내릴명령어
의 알파벳 순서대로 command를 실행 시킵니다. -
command
에는 실행 시킬 command를 입력 합니다. -
leader_only
는 Elastic beanstalk에 aws auto scaling에 따라 여러 인스턴스 환경에서 실행 될 때, leader instance만 해당 커멘드를 실행 할 지 말지 결정짓는 값입니다. 해당 값이 True라면, 여러 인스턴스에 배포할 때 한 번만 실행됩니다. -
option_settings
는 Elastic beanstalk를 구성하고 있는 auto scaling, loadbalancer, elasticbeanstalk과 같은 구성 요소들의 셋팅 값을 설정하는 공간입니다. -
aws:elasticbeanstalk:application:environment
는 elasticbeanstalk의 환경 변수를 설정 하겠다는 의미입니다. -
DJANGO_SETTINGS_MODULE: config.settings
는 DJANGO_SETTINGS_MODULE의 값을 config.settings로 설정 하겠다는 의미입니다.
위 코드를 추가 하고, eb deploy를 진행 한 뒤 배포 환경에 접속 해보면, migration이 된 것을 확인 할 수 있습니다.
위 과정 중 ToolError: Command 01_migrate failed
로 실패 한다면, 이 글을 참조 해 주세요
"Django" 카테고리의 최근 포스팅
카테고리 모든 글 보기Zappa를 활용하여 Django 배포하기 - S3에 연결하기 | 2020. 10. 11 |
---|---|
Zappa를 활용하여 Django 배포하기 - MySQL RDS에 연결 & Migrate 하기 | 2020. 10. 10 |
Django - django-dotenv 사용하기 | 2020. 10. 09 |
That port is already in use error in macOS | 2020. 10. 08 |
Zappa를 활용하여 Django 배포하기 - not authorized to perform error | 2020. 10. 04 |
Zappa를 활용하여 Django 배포하기 | 2020. 10. 03 |
Elastic Beanstalk - Django AWS S3 연결하기 ( static file ) | 2020. 09. 29 |
Elastic Beanstalk - Django AWS postgresql RDS migration 진행하기 | 2020. 09. 28 |
Elastic Beanstalk "Command 01_migrate failed" Error | 2020. 09. 28 |
Django 서버 에러 받기 - sentry 사용하기 | 2020. 09. 28 |