Amazon RDS DB 인스턴스에 액세스할 때 Lambda의 연결 시간 초과 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 4월 19일

Amazon Relational Database Service(Amazon RDS) DB 인스턴스에 액세스하는 동안 AWS Lambda 함수에 연결 제한 시간 오류가 발생합니다. 이 오류를 해결하려면 어떻게 해야 하나요?

해결 방법

간헐적이거나 일시적인 연결 시간 초과 오류 문제 해결

Lambda 함수의 이벤트를 캡처하고 함수의 오류 처리의 일환으로 다시 시도하세요.

자세한 내용은 AWS Lambda에서 오류 처리 및 자동 재시도를 참조하세요.

DNS 오류 확인

DNS(도메인 이름 시스템) 관련 오류가 있는지 확인합니다. DNS 오류가 있으면 해당 오류를 찾으세요. 그런 다음 지수 백오프를 사용하여 DNS 요청을 다시 시도하세요. 자세한 내용은 AWS의 오류 재시도 및 지수 백오프를 참조하세요.

참고: DNS 요청을 다시 시도하기 전에 인바운드 및 아웃바운드 엔드포인트를 확인하세요.

일관된 연결 시간 초과 오류 문제 해결

Lambda 함수의 Amazon CloudWatch Logs 확인

아직 설정하지 않은 경우, CloudWatch 로깅 권한을 Lambda 함수에 부여합니다. 그런 다음, 함수의 로그를 검토하여 특정 연결 시간 초과 오류를 식별합니다.

자세한 내용은, Lambda 애플리케이션 모니터링 및 문제 해결을 참조하세요.

VPC 구성 확인

프라이빗 데이터베이스의 경우 사용 사례에 따라 다음 중 하나를 수행하세요.

Lambda 함수를 데이터베이스와 동일한 Amazon Virtual Private Cloud(Amazon VPC)에 배치합니다.

-또는-

함수가 포함된 Amazon VPC와 데이터베이스가 포함된 Amazon VPC 간에 VPC 피어링 연결을 생성합니다.

퍼블릭 데이터베이스의 경우 다음을 수행합니다.

(Amazon VPC의 기능인 경우) NAT(네트워크 주소 변환) 게이트웨이 또는 NAT 인스턴스를 통해 퍼블릭 트래픽을 라우팅합니다. 자세한 내용은, Amazon VPC에 연결된 Lambda 함수에 대한 인터넷 액세스 권한을 부여하려면 어떻게 합니까?를 참조하세요.

참고: 데이터베이스에 공개적으로 액세스할 수 있고 데이터베이스에 IP 주소 기반 제한이 없는 경우, 자습서: Amazon VPC에서 Amazon RDS에 액세스하도록 Lambda 함수 구성 지침을 따르세요.

보안 그룹 규칙 확인

프라이빗 데이터베이스의 경우 다음을 수행합니다.

VPC 서브넷 또는 보안 그룹의 CIDR 범위에서 트래픽을 허용하는 인바운드 규칙을 DB 보안 그룹에 추가합니다.

퍼블릭 데이터베이스의 경우 다음을 수행합니다.

VPC의 NAT 게이트웨이 또는 NAT 인스턴스로부터의 트래픽을 허용하는 인바운드 규칙을 DB 보안 그룹에 추가합니다.

Lambda 함수 핸들러 업데이트

함수가 함수 핸들러 외부에서 데이터베이스 연결을 열고 연결을 닫지 않도록 Lambda 함수 코드를 업데이트합니다.

참고: Lambda가 컨테이너를 재사용하는 방식으로 인해, Lambda는 컨테이너를 재사용할 때 함수 핸들러 외부에 있는 코드를 다시 초기화하지 않습니다. 핸들러 외부에서 재사용할 연결을 만들어 다음 호출마다 계속 사용할 수 있도록 하는 것이 가장 좋습니다. 연결을 사용하기 전에 유효한 연결이 있는지 확인하세요. 유효한 연결이 없으면 계속하기 전에 새 연결을 만듭니다.

EC2 인스턴스를 사용하여 연결

테스트로, Lambda 함수와 동일한 Amazon VPC 구성으로 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작합니다. 그런 다음, EC2 인스턴스에서 Amazon RDS DB 인스턴스에 연결을 시도합니다.

데이터베이스에 연결할 수 있는 경우, Lambda의 네트워킹 문제 해결의 지침을 따르세요.

-또는-

데이터베이스에 연결할 수 없는 경우, Amazon RDS DB 인스턴스에 연결하는 문제를 해결하려면 어떻게 해야 합니까?의 지침을 따르세요.

Amazon RDS 프록시 사용

RDS 데이터베이스에 대한 Amazon Relational Database Service(Amazon RDS) 프록시 엔드포인트를 생성하여 Lambda 함수로부터의 데이터베이스 트래픽을 처리합니다. 자세한 내용은, AWS Lambda에서 Amazon RDS 프록시 사용을 참조하세요.

참고: MySQL 및 PostgreSQL에 대한 Amazon RDS 프록시 지원이 정식 출시되었습니다.