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 |