AWS 3주차-5

Walter Mitty·2022년 4월 27일
0

AWS

목록 보기
11/12

RDS, Python 연동

파일을 저장하고, 그 파일을 밑에 카드에 쭉쭉 뿌려주는걸 해보자.
파일 선택-> 저장-> 파일업로드됨-> S3에 업로드 된 상태
우리가 스파르타라는 스키마 안에, 파일이라는 테이블을 만들었다.
요 파일에 내가 초막골이라는 업로드한 파일명을 저장할것이다. 저장해주면 파일을 에스쓰리에 업로드+데이터베이스에 저장을 하고 밑에 있는 카드에 내가 저장한 파일들을 쭉쭉 뿌려주는 형태로 만들어보자.

일단 처음할 건, 우리 컴퓨터에서 알디에스로 연결이 돼서, 빈스토크에 배포하고, 빈스포크에서 알디에스에 연결을 해야하니까 보안 그룹이 연동이 되도록 설정이 되어있나 봐야한다.
보안그룹: 이씨투면 이씨투, 알디에스면 알디에스 그 들어오고 나오는 포트를 조절해주는 걸 말한다

만약, 내가 빈스토크에 애플리케이션을 올렸는데 빈스토크랑 알디에스랑 연동이 안되는 거 같다? 그럼 잘 캐치해서 보안그룹을 빈스토크에서 알디에스쪽으로 연결이 가능하도록, 즉 인바운드가 가능하도록 보안그룹을 수정해줘야한다.

AWS -> RDS 검색 -> DB인스턴스 -> 클릭 -> 밑에보면 인바운드 규칙

자, 그럼 소스(포트범위옆에있음)는 뭘까?
: 인바운드 규칙에서 소스는 요 범위에 있는 IP만 이 3306 포트로 접근이 가능하다. 그래서 마이 에스큐엘 포트 3306에 접근하는 컴퓨터에 ip로 제어할 수 있게 소스로 막아 놓은 것. 지금 나와있는 건 내 IP 주소라 나밖에 접근이 안됨.
실습중엔 다른사람한테 보여야하니까 규칙 추가!
0.0.0.0/0 추가하고 보면, 원래 있던 내 ip 소스와 추가된 소스를 볼 수 있다

그 다음엔, 백엔드 코드를 추가!
application.py 와 index.html (나홀로 이미지 메모장)
마이에스큐엘과 연동하는 코드를 넣어줄거다.
깃허브 액션을 만들어놔서, 코드만 잘 만들어 푸쉬만 하면 배포는 알아서 된다.
우리는 코드만 바꾸고 푸쉬, 결과물 제대로 나오나 확인하면 끝!

그 다음, 라이브러리 추가!
flaskext.mysql import MySL 이 빨간색 전등이 켜져있다.
파이썬 라이브러리 설치가 안되어있는것임.
파이참 터미널에 가서 pip install install flask-mysql
그다음에 eb 배포용!
eb배포할 때 빈스토크 상에서 소스(코드)가 푸쉬됐을 때 자동적으로 추가된 라이브러리에 대해서 빈스토크가 자동으로 설치해준다 그러기 위해선 로컬을 바탕으로 requirments.txt에 새로운 라이브러리가 추가되어야함. 로컬에 있는 라이브러리를 바탕으로 requirement에 추가해주는 명령어를 실행해줘야함.
(로컬에선 명령으로 했었음)
pip freeze > requirements.txt

그러면 requirement 파란색으로 바뀜.

마지막으로,
eb환경변수를 추가해야한다
왜? eb가보면, 우리가 저번에 access key들을 추가한 것 처럼, 서버 컴퓨터도 똑같이 환경변수를 갖고 있어서 eb에 MTSQL정보(보안이 지켜져야함)를 환경변수에 추가 시켜준다

환경변수 지정시
MYSQL_DATABASE_DB 란 스키마를 말한다. 내가만든 스키마 이름 넣으면 됨
MYSQL_DATABASE_HOST 는 rds 엔드포인트 주소 넣어주자

그리고 나서 소스코드를 푸쉬하면 적용된다.
rds 엔드코드로 접속 -> 파일 저장이 안된다? -> html 소스코드를 보면,

{EB_URL} 부분을 내 eb url로 바꿔줘야함!

rds 엔드코드로 접속했는데 처음엔 됐다가 새로고침하니까 페이지 연결 오래걸린다는 오류가 뜬다.
백엔드 브랜치 re run 해도 오류 똑같음
프론트 브랜치 re run 해도 오류 똑같음

rds 삭제하고 다시함 ^^
음 생각해보면 내가 rds 새로고침을 많이 안해주고 상태를 무시하고 해서 그런건가 싶기도하고...

그리고나서, 파일 저장이 완료되면 내가 업로드한 파일과 내가 스키마에 넣어놓은 파일이 브라우저에 잘 나온다. 여기서 스키마에 다시 들어가보면 내가 아까 테스트로 넣어놓은 파일과 저장한 파일 둘 다 볼 수 있음!
보면,

front 쪽에서는

파일업로드를 하면 데이터가 저장이되고, 파일이 s3에 저장이되고, 데이터베이터에 데이터도 저장이 되고, 페이지를 열면 html 소스 페이지를 저장된 데이터들이 뿌려진다.

테스트 파일은 지워보자.
파이참 백엔드쪽-> 데이터베이스-> 스키마 테이블 file-> 지우려는 파일 선택-> (-) 누르고 -> submit
브라우저 새로고침하면 사라져있다.

이미지 안뜨는 문제 해결:(크롬한정)
캐싱해서 받아온걸 새로고침이 아니라 cmd+shift+r 해서 받아와야함!!!

0개의 댓글