API Gateway와 Lambda를 연결하는 핵심: event 객체 분석

Sue·2025년 6월 4일
post-thumbnail

AWS Lambda에서 '요청(event)'이란?

AWS Lambda에서 '요청(event)'은 Lambda 함수를 트리거(실행)하는 입력 데이터를 의미합니다. Lambda 함수는 직접 호출되기도 하지만, 대부분의 경우 AWS 서비스나 사용자 지정 애플리케이션에서 발생한 이벤트에 의해 비동기적 또는 동기적으로 실행됩니다.

event 객체는 Lambda 함수가 호출될 때 Lambda 런타임에 의해 함수 핸들러(여기서는 handler 함수)의 첫 번째 인자로 전달되는 JSON 형식의 데이터입니다.

API Gateway 요청에서의 event 개념

특히 API Gateway를 통해 Lambda 함수가 트리거될 때의 event는 클라이언트가 API Gateway 엔드포인트로 보낸 HTTP 요청에 대한 모든 정보가 담겨 있는 거대한 JSON 객체입니다. 이 JSON 객체는 API Gateway가 Lambda 함수에게 넘겨주는 표준화된 형식을 따릅니다.

event 객체 안에는 다음과 같은 정보들이 포함될 수 있습니다:

  1. httpMethod: HTTP 요청 메서드 (예: "GET", "POST", "PUT", "DELETE")
  2. path: 요청된 경로 (예: "/projects", "/users/123")
  3. headers: HTTP 요청 헤더 (예: User-Agent, Content-Type, Authorization 등)
  4. queryStringParameters: 쿼리 스트링 파라미터 (예: ?page=1&limit=10에서 {'page': '1', 'limit': '10'})
  5. pathParameters: 경로 변수 (예: /users/{id}에서 {id}에 해당하는 값)
  6. body: HTTP 요청 본문 (POST, PUT 요청에서 클라이언트가 보낸 데이터, 보통 JSON 문자열)
  7. isBase64Encoded: body가 Base64로 인코딩되었는지 여부
  8. requestContext: 요청을 보낸 클라이언트, API Gateway 단계, 인증 정보(authorizer 데이터 포함) 등 요청 컨텍스트 정보
    • 특히, requestContext.authorizer는 Lambda Authorizer 등을 통해 전달된 인증 및 사용자 정보(예: Cognito 사용자 정보)를 포함합니다. routes/create.py 코드에서 user_claims = event.request_context.authorizer._data.get("user") 이 부분을 통해 사용자 인증 정보를 추출하는 것이 바로 이 requestContext.authorizer를 활용하는 것입니다.
  9. stageVariables: API Gateway Stage 변수 (배포 환경별 설정값)

요약

event는 AWS Lambda 함수가 실행될 때 전달받는 모든 입력 데이터입니다. API Gateway의 경우, 이 event는 클라이언트의 HTTP 요청에 대한 모든 세부 정보를 담은 JSON 페이로드(payload)이며, Lambda 함수는 이 event 객체를 파싱하여 필요한 정보를 추출하고 비즈니스 로직을 수행하게 됩니다.

결국, event는 클라이언트의 "요청"을 Lambda 함수가 "이해"할 수 있는 형태로 포장하여 전달해주는 메신저 역할을 한다고 생각하시면 됩니다.

profile
AI/ML Engineer

0개의 댓글