회고/Error Handling
TypeORM + Postgresql Connection Error
yhjs1211
2023. 8. 17. 10:34
험난했던 에러 핸들링이었다..
먼저 나는 Nest.js 를 활용해서 프로젝트를 시작하기위해 프로젝트 뼈대를 갖춰나가는 중에서 발생한 문제였었다. 기존에는 MySQL을 사용했으나 ORDBMS 를 사용해보자는 의견 합의를 통해 Postgresql로 갈아타는 작업을 진행해야 했다.
AWS에서 새로운 인스턴스 ( RDS ) 를 생성하고, 엔드포인트 설정과 인바운드 규칙 편집을 통해 어느 경로에서 요청이 들어오든 처리가 되게끔 하고 DBeaver로 연결이 잘 되는것까지 확인을 했다.
근데 Nest.js 만 실행하면 Error가 발생했는데
처음에는 125.177.35.249 라는 EndPoint 가 어디서 발생되는지를 짐작을 못했다. AWS RDS의 엔드포인트가 저 경로 일거다 라고 예상을 못했었는데, 여러 시도를 하다보니 저 IP 주소가 해당 아마존 엔드포인트 라는것을 짐작 할수있었고, 네스트 app.module 내에서 설정해둔 typeOrmModule 내부 옵션의 설정값들도 잘 들어가져 있는것을 확인할수있었다.
위 설정 값들을 보면 extra 라는게 있는데 이 부분이 해결 지점이었다.
내부를 살펴보게 되면 rejectUnauthorized 값이 false를 준게 있는데, 이 옵션이 중요 해결부분이었다. 근데 처리 방식을 보아하니 절대 좋은 해결책은 아니라는것을 미리 말하고싶다.
🔥 해결 방식
로컬과 AWS 사이에 통신 방식을 봤을때 먼저 공개 키 ( Public Key ) 를 통해 암호화된 아이디와 패스워드를 주고 받는 과정이 있는데 그 과정속에서 로컬쪽의 문제로 인해 제대로 암호화가 이루어지지 않은 요청을 보내서 AWS에서 복호화 및 개인키를 통한 암호화 과정을 정상처리하지 못했던 것이다.
rejectUnauthorized : false 값을 주게되면, 그러한 복호화 및 암호화 과정을 무시한 채 진행을 한다 라는 의미이다.