DB엔진을 설정하는 부분이 있다. 해당 부분은 전에 RDS를 만들었을 때 생성했던 버전과 일치시킨다.
파라미터 그룹 생성을 완료한 뒤, 해당 파라미터를 클릭하여 수정
버튼을 누른다.
time_zone
을 검색해서 Asia/Seoul
로 변경한다.
Character Set을 변경한다. 해당 부분은 utf8mb4
로 변경한다.
여기서 utf8mb4와 utf8의 차이는 이모지 저장 가능 여부이다. utf8로 설정하면 에러가 나는 경우가 많으니 미리 utf8mb4로 설정하여 에러가 나지 않게 하자.
설정한 뒤, RDS에 해당 파라미터를 반영해보자. 만들어진 RDS로 들어간다.
RDS를 클릭하고 수정
버튼을 누른다.
DB 파라미터 그룹
에서 방금 만들어둔 파라미터 그룹을 설정한다.
그리고 다음
을 누르면 수정 사항 요약에서 즉시 적용
을 누른다.
예약된 다음 유지 시간
으로 설정하면 새벽 시간대에 수정작업이 이루어진다. 현재 DB가 서비스중이라면 해당 사항으로 해야하지만, 현재는 초기 설정이므로 즉시 적용
으로 한다.
정상 적용을 위해 한 번 더 DB를 재부팅한다. 그러면 파라미터 그룹이 적용이 완료가 된다.
연결 & 보안
에 들어가면 VPC 보안 그룹
이라는게 있다. 여기서 그걸 누르자.인바운드 규칙
이라는게 있다. 해당 버튼을 누르고 Edit Inbounds rules
를 누른다.해당 사항같이 한다면, 모든 IP를 허용하겠다는 뜻이다. 이러면 모든 사용자가 DB에 접근할 수 있다.
이제 DB설정은 끝이났다. 이제 Flask와 DB를 연결해보자.
여기서 연결에서 쓰이는 것은 pymysql
라이브러리를 사용한다. 왜 Maria DB인데 mysql라이브러리를 사용해? 하면서 의문을 가질 수 있다.
Maria DB는 Mysql을 기반으로 만들어졌기 때문에 전반적인 사용법은 mysql과 똑같다. 그래서 해당 라이브러리를 이용해 연동해도 전혀 상관이 없다.
pip3 install pymysql
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
aws_db = {
"user": "{마스터 사용자 이름}",
"password": "{마스터 암호}",
"host": "{DB의 엔드포인트}",
"port": "3306", # Maria DB의 포트
"database": "{DB에 만들어둔 database 이름}",
}
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_DATABASE_URI = f"mysql+pymysql://{aws_db['user']}:{aws_db['password']}@{aws_db['host']}:{aws_db['port']}/{aws_db['database']}?charset=utf8"
from flask import Flask
import config
from db_connect import db
def create_app(test_config=None):
app = Flask(__name__)
# Config 설정
if test_config is None:
app.config.from_object(config)
else:
app.config.update(test_config)
db.init_app(app)
if __name__ == "__main__":
create_app().run()
해당 파일처럼 연동해준다면 이제 flask에서 해당 AWS RDS에 접근가능하게 설정이 된다.