개발 일기

DB 인스턴스 연결 / Elastic Beanstalk 배포 실패 - 환경변수 확인 본문

Tech/Others

DB 인스턴스 연결 / Elastic Beanstalk 배포 실패 - 환경변수 확인

flow123 2021. 10. 16. 01:06

팀 프로젝트 - 내일 뭐 먹지 - 1015 중간 회의 & 에러 일기 

 

원래 DB 는 data.py 에서 따로 분류했다.

판다스를 import 해서, data = pd.read_csv('파일명')  으로 불러오고, 

이 파일을 돌릴 로컬 DB 서버를 지정해준 뒤 

client = MongoClient('localhost', 27017)
db = client.team_project

 

data 를 한번 돌리고, localhost 에 쌓이면 그것을 받아와서 웹 사이트에 띄웠다.

 

#

최근 튜터님과의 팀 회의를 끝내고, EC2 를 두 대로 나눠서 돌려보기로 했다.

(1) DB 인스턴스 (2) 실제로 서비스가 배포될 인스턴스 

 

DB 가 생성된 ec2 인스턴스로 app.py 를 돌렸는데, 서버가 기능하지 않았다. (버튼이 넘어가지 않는 걸 보아 데이터를 제대로 안 데려오는 것 같았다) 원인이 가늠되지 않아, 헤매다가 우선 로컬 db 에 돌리고 우리팀 파이썬 마스터인 성우님에게 도움을 청했다. 

 

알고보니 db.이후에 데이터베이스명을 넣은 것이었다. collection 이 아니고 (이전 data.py 의 DB 에서 구조가 바뀌었는데, 그걸 미처 생각 못했다) 음식 인포가 들어가 있는 collection 인 food_info 를 넣는게 맞다. 

 

에러가 떴을 때 (DB 명이 아니라 collection 
collection 을 넣어야 데이터를 읽을 수 있다. 

Robo 3T 로 연결해서 보면, 

사소한 오류지만, DB 가져올 때, collection / table 명을 꼼꼼히 보자 

 

#EB 배포 시 환경 변수 패스 

로컬 환경에서 작업하기 전에, git action을 활성화하고 elastic beanstalk 을 연결해서, 코드만 업데이트하면 바로 배포되게 했다.

 

에러: 로그인 기능 코드를 추가해서 배포하려고 하는데, ajax 통신에서 403 에러가 계속 났다.  ajax call 에 eb url 은 업데이트 된 상황이었다. 

 

 

POST 403 에러가 뜬다. 

알고보니 기존에 eb 에 입력한 환경변수 path 가 제대로 작동하지 않아서, 구성에서 새로운 path 를 입력했다. 

Elastic Beanstalk 의 구성 -> 소프트웨어 -> 편집을 가면, 환경변수를 설정할 수 있다. 

기존 변수를 미처 기록해놓지 못했는데, 바뀐 변수 PATH 는 이렇다. 

 

mongodb://{ID}:{PASSWORD}@{몽고디비 EC2 IP}:27017

 

application.py에는

 

client = MongoClient(os.environ.get("MONGO_DB_PATH"))

 

으로 EC2의 환경변수를 불러온다. 

 

이와 관련해서 다른 조 분도 비슷한 에러를 겪으셨는데,

DB_INFO -> mongodb://아이디:패스워드@EB 인스턴스 ip주소
DB_PORT -> 27017 로 설정 시 EB의 Jquery POST 500에러가 있었다. 

환경변수의 문제도 있겠지만, 인스턴스에 DB 랑 서버 자체가 같이 들어가 있을 때 더 에러의 여지가 많은 것 같다. 

우리 조처럼 DB를 따로 EC2 인스턴스에 빼두었을 때 잘 돌아갔다고 한다.  

Comments