로컬에서는 전혀 문제가 없었는데 람다로 실제 배포하니 문제가 발생했다.
원인은 람다와 RDS를 연결하기 위해 연결한 VPC로 인한 문제였다.
RDS에 아무 셋팅없이 새로 VPC를 생성하게 되면 VPC 내부의 Subnet은 모두 Public 상태이다.
Public Subnet을 람다에 연결하니 외부 API 호출이 제한되는 것이다.
자세한 문제의 내용은 아래의 링크를 참고하면 좋다.
https://stackoverflow.com/questions/60519065/axios-always-time-out-on-aws-lambda-for-a-particular-api
이 문제를 해결하기 위해서는 RDS의 VPC 생성시 Private Subnet을 생성해야 하고 이를 생성하기 위해서는 두가지 방법이 존재한다.
나는 후자를 선택했고
VPC생성 - Subnet 생성 - 라우팅 테이블 생성 - 인터넷 게이트웨이 생성 - EC2 생성 및 테스트
의 절차를 거쳐 Private Subnet 을 생성 후 RDS에 적용하였다.
(이 두분의 설명이 매우 구체적이어서 적용하는데 큰 문제는 없었다.)
https://blog.kico.co.kr/2022/05/03/hands-on-vpc-iam-%EC%82%AC%EC%9A%A9%EC%9E%90-%EC%83%9D%EC%84%B1/
그리고 Lambda의 Subnet에 Private Subnet만 연결하였고,
배포된 람다에서 RDS 호출, 외부 API 호출이 모두 가능했다.
하지만
(물론 EC2나 다른 방식을 통해서 할 수는 있지만 현상황에서 그런 솔루션을 찾기에는 시간이 너무 많이 걸릴 것 같았다.)
솔루션은 아래 링크에 있었다.
내 DB 인스턴스가 프라이빗 서브넷에 있고, 로컬 컴퓨터에서 연결할 수 없는 경우
https://aws.amazon.com/ko/premiumsupport/knowledge-center/rds-connectivity-instance-subnet-vpc/
물론 퍼블릭 액세스를 완전히 차단하는 것이 가장 좋은 방법이긴 하지만
완전한 솔루션으로 대체하기 전까지는 위 방식으로 개발을 진행해 나갈 것이다.