AWS Lambda에서 '요청(event)'은 Lambda 함수를 트리거(실행)하는 입력 데이터를 의미합니다. Lambda 함수는 직접 호출되기도 하지만, 대부분의 경우 AWS 서비스나 사용자 지정 애플리케이션에서 발생한 이벤트에 의해 비동기적 또는 동기적으로 실행됩니다.
이 event 객체는 Lambda 함수가 호출될 때 Lambda 런타임에 의해 함수 핸들러(여기서는 handler 함수)의 첫 번째 인자로 전달되는 JSON 형식의 데이터입니다.
event 개념특히 API Gateway를 통해 Lambda 함수가 트리거될 때의 event는 클라이언트가 API Gateway 엔드포인트로 보낸 HTTP 요청에 대한 모든 정보가 담겨 있는 거대한 JSON 객체입니다. 이 JSON 객체는 API Gateway가 Lambda 함수에게 넘겨주는 표준화된 형식을 따릅니다.
이 event 객체 안에는 다음과 같은 정보들이 포함될 수 있습니다:
httpMethod: HTTP 요청 메서드 (예: "GET", "POST", "PUT", "DELETE")path: 요청된 경로 (예: "/projects", "/users/123")headers: HTTP 요청 헤더 (예: User-Agent, Content-Type, Authorization 등)queryStringParameters: 쿼리 스트링 파라미터 (예: ?page=1&limit=10에서 {'page': '1', 'limit': '10'})pathParameters: 경로 변수 (예: /users/{id}에서 {id}에 해당하는 값)body: HTTP 요청 본문 (POST, PUT 요청에서 클라이언트가 보낸 데이터, 보통 JSON 문자열)isBase64Encoded: body가 Base64로 인코딩되었는지 여부requestContext: 요청을 보낸 클라이언트, API Gateway 단계, 인증 정보(authorizer 데이터 포함) 등 요청 컨텍스트 정보requestContext.authorizer는 Lambda Authorizer 등을 통해 전달된 인증 및 사용자 정보(예: Cognito 사용자 정보)를 포함합니다. routes/create.py 코드에서 user_claims = event.request_context.authorizer._data.get("user") 이 부분을 통해 사용자 인증 정보를 추출하는 것이 바로 이 requestContext.authorizer를 활용하는 것입니다.stageVariables: API Gateway Stage 변수 (배포 환경별 설정값)event는 AWS Lambda 함수가 실행될 때 전달받는 모든 입력 데이터입니다. API Gateway의 경우, 이 event는 클라이언트의 HTTP 요청에 대한 모든 세부 정보를 담은 JSON 페이로드(payload)이며, Lambda 함수는 이 event 객체를 파싱하여 필요한 정보를 추출하고 비즈니스 로직을 수행하게 됩니다.
결국, event는 클라이언트의 "요청"을 Lambda 함수가 "이해"할 수 있는 형태로 포장하여 전달해주는 메신저 역할을 한다고 생각하시면 됩니다.