잡다한 IT 지식

SageMaker Serverless Endpoint와 Lambda 간 통신 불가 트러블슈팅 본문

AWS/트러블슈팅

SageMaker Serverless Endpoint와 Lambda 간 통신 불가 트러블슈팅

가나무마 2025. 7. 9. 00:54

팀프로젝트 중, 백엔드 개발 담당 팀원이 Lambda 함수가 SageMaker와 통신이 안된다는 문제를 겪고 계셔서 트러블 슈팅을 진행했다.

문제 상황


 
Lambda 함수가 SageMaker Endpoint로부터 응답을 받지 못하고 타임아웃 후 종료

원인 추측하기


추측 1. Lambda의 제한 시간이 짧다.
SageMaker serverless 엔드포인트는 Lambda와 동일하게 Cold Start 현상이 존재한다.
첫 호출 시엔 프로비저닝에 수 초 이상 소요될 수 있다.
Lambda의 제한 시간이 짧다면, SageMaker의 프로비저닝 시간을 기다리는 동안 시간 초과가 발생했을 수 있다.
반론:
- Cold Start는 첫 요청에만 발생하며, 이후엔 Hot Start로 빠른 응답이 가능하다.
- 하지만 Lambda의 두 번째 호출에도 동일하게 타임아웃이 발생했다. 즉, Hot Start인데도 응답을 받지 못했다.
 
추측 2. 권한 부족
SameMaker는 IAM 기반 인증을 사용하며 해당 엔트포인트를 호출하기 위해선 sagemaker:InvokeEndpoint 권한이 필요하다.
반론:
- 권한이 부족하면 SageMaker에서 요청을 즉시 거부한다.
- CloudWatch로 SageMaker의 엔드포인트 로그를 확인했을 땐, Lambda로부터 요청 자체가 들어오지 않았다.
 
추측 3. 네트워크 문제
통신 자체가 안됐으므로 네트워크 문제일 가능성이 가장 유력하다.
Lambda의 네트워크 설정을 확인했더니 Lambda가 VPC에 배치되어 있었다. 설계한 내용과 달랐다.
현재 우리 팀프로젝트의 아키텍처는 아래와 같다.

클라우드 운영 비용을 최대한 줄이기 위해 모든 서비스가 Serverless로 구성된 상태

위를 보면 별 문제 없어 보이지만 상세 구성도는 아래와 같다.
 
 

SageMaker와 Lambda가 VPC 외부에 존재한다.

 
SageMaker의 서버리스 엔드포인트는 현재 VPC 구성을 지원하지 않으며 VPC Endpoint도 제공하지 않는다.
따라서, SageMaker의 엔드포인트와 통신하기 위해선 퍼블릭 인터넷을 통해야 한다.
즉, Lambda를 VPC 내부에 배치하고 NAT Gateway를 통하는 방법과 Lambda를 VPC와 연결하지 않는 방법이 있다.
현재 아키텍처는 고가용성을 목표로 하는 만큼 NAT Gateway를 사용한다면 최소 두 대가 필요하다. 그렇게 된다면 운영비에 상당 부분을 차지하게 된다.
따라서, 비용 절약을 위해 Lambda를 VPC 외부에 배치했다.
문제의 원인은 Lambda가 VPC에 연결된 채 배포되어 퍼블릭 인터넷을 통한 SageMaker 엔드포인트 접근이 불가능했던 것이다.

 

참고자료


AWS. SageMaker Serverless Endpoint.
https://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/serverless-endpoints.html?utm_source=chatgpt.com