대충이지만 API도 만들어서 연결해보았고, 패키지도 올려봤다. 이제 데이터베이스만 조작할 수 있으면, 로그인 로그아웃 기능을 구현할 수 있다. 그러니 오늘은 RDS를 연동해본다.
하핳 이것부터 하기엔 분량이 넘나 많고 하나씩 스샷을 떠서 올리기가 귀찮다.
당신이 위코더라면 이것을 보고 따라하시오...
https://stackoverflow.com/c/wecode/questions/172
이미 배운거다.
pip install mysql-connector-python -t .
빠르게 설치해준다.
대략적인 플로우는 이러하다
1. post 메서드로 api에 username,password를 인자로넘김
2. RDS의 데이터베이스를 연결
3. CREATE 문으로 받은 id, password를 저장
4. 연결 끊음
5. 200 ok 리턴
import mysql.connector
import mysql.connector
def lambda_handler(event, context) :
data = json.loads(event["body"])
student_name = body["username"]
student_pw = body["password"]
connection = mysql.connector.connect(user = 유저이름,
password = 비밀번호,
host = 호스트,
database = 데이터베이스명)
```
4. 커서를 지정해주고, 쿼리문을 실행한다.
(커넥터를 이용하여 파이썬 코드로 테이블을 만드는 방법도 있지만, 필자는 따로 그렇게 진행하지는 않고, 그냥 id(pk), name, password를 저장하기위한 단순한 users 테이블을 미리 만들어놓았다.)
```python
cursor = connection.cursor()
cursor.execute(f"""INSERT INTO users (name, password) VALUES ({student_name}, {student_pw})""")
connection.commit()
```
5. 커서와 커넥션을 닫아준다.
```python
cursor.close()
connection.close()
```
6. 200 ok 리턴
```python
return {
'statusCode' : 200,
'body' : json.dumps({
'row inserted'
})
```
7. API Gateway에서 포스트 메소드로 엔드포인트를 만들어준 후 Lambda함수와 연동해준다.
8. httpie, post 등으로 테스트해서 200ok메세지를 확인한 후 RDS에 정상적으로 입력되었는지 확인하면 끝
### 마치며
모든 코드는 다음 공식 문서를 활용해 짰다.
https://dev.mysql.com/doc/connector-python/en/
이번에 포스팅한 코드는 단순히 RDS를 연동하여 데이터를 집어넣는데에 중점을 두었기 때문에, 에러핸들링이나 암호화, DB개념에 대해서는 일체 신경쓰지 않았다.
다만 mysql커넥터의 작동 원리나 커서, 커넥션 개념같은 부분은 좀더 공부해야할 필요가 있어보인다.
좋은 글입니다. 사용하신 mysql-connector-python 모듈은 GPL 라이센스인데, 서버쪽 람다에서 이걸 쓰면 오픈소스 이슈는 없을까요?