Lambda Extensions API

Lambda Extensions API (AWS Lambda Extensions API)

Lambda Extensions API는 Lambda 실행 환경 내 확장(extensions)과 Lambda 서비스 간의 통신을 위한 HTTP API예요. 확장은 이 API를 사용해 등록하고, 함수의 런타임에 대한 이벤트를 수신하며, 수명주기 이벤트를 처리할 수 있어요.

출처: AWS Lambda 개발자 안내서

본문

Lambda 확장은 Lambda 함수와 병행해 실행되는 프로세스로, 함수의 런타임을 보강하는 도구를 구현해요. 확장은 Lambda가 런타임과 확장에 보내는 수명주기 이벤트를 사용해 사용자 지정 로직을 실행할 수 있어요. 확장은 Extensions API를 통해 Lambda와 통신해요.

확장 및 Extensions API (Extensions and the Extensions API)

확장은 함수의 런타임과 동일한 실행 환경에서 실행되는 프로세스예요. Lambda는 함수의 실행 환경에서 런타임과 모든 등록된 확장을 시작해요. 확장은 등록 후 수명주기 이벤트를 수신해요.

확장이 Lambda와 통신하기 위해 사용하는 Extensions API 엔드포인트는 다음과 같아요.

  • Register – 확장이 Lambda에 등록하여 수명주기 이벤트를 수신할 수 있게 해요.
  • Next – 확장이 다음 이벤트를 검색해요.
  • Init, Invoke, Shutdown – Lambda가 확장에 보내는 수명주기 이벤트예요.

API 엔드포인트 (API endpoints)

확장은 실행 환경 내부의 로컬 HTTP 엔드포인트 http://${AWS_LAMBDA_RUNTIME_API} 에서 Extensions API에 접근해요. Lambda는 AWS_LAMBDA_RUNTIME_API 환경 변수에 이 엔드포인트의 주소를 제공해요.

Register API

확장은 런타임 시작 시 Register API를 호출해 Lambda에 스스로를 등록해요. 등록은 확장의 이름과 등록할 이벤트를 지정해요. 확장은 등록 후 이벤트를 수신하기 시작해요.

Request

POST /2020-01-01/extension/register

Request headers

  • Lambda-Extension-Name – 확장의 이름
  • Lambda-Extension-Identifier – (선택 사항) 확장 식별자

Request body

등록 요청 본문은 확장이 수신할 이벤트 목록을 지정해요. 예를 들어 ["INVOKE", "SHUTDOWN"] 입니다.

Response

등록 성공 시 Lambda는 Lambda-Extension-Identifier 헤더에 등록된 확장의 식별자를 반환해요. 이후 모든 요청에서 확장을 식별하는 데 이 헤더를 사용해야 해요.

Next Invocation API

확장은 Next Invocation API를 호출해 다음 이벤트를 검색해요. 이 호출은 이벤트가 사용 가능할 때까지 대기하며, 확장이 다음 이벤트를 받을 수 있게 해요.

Request

GET /2020-01-01/extension/event/next

Response

  • Invoke 이벤트 – 함수 호출이 시작되었음을 나타내며, 이벤트에 대한 정보를 포함해요.
  • Shutdown 이벤트 – Lambda가 확장을 종료하려고 한다는 것을 나타내며, 종료 이유를 포함해요.

수명주기 이벤트 (Lifecycle events)

Lambda는 확장에 다음 수명주기 이벤트를 보내요.

  • INIT – 초기화 단계에서 확장이 시작된 후 보내져요.
  • INVOKE – 함수가 호출될 때 보내져요.
  • SHUTDOWN – Lambda가 실행 환경을 종료하기 전에 보내져요.

참고 사항 (Considerations)

  • 확장은 실행 환경 내에서 런타임과 리소스를 공유해요.
  • 확장을 사용하면 함수의 콜드 스타트 시간과 실행 환경의 초기화 구조에 영향을 미칠 수 있어요.
  • 확장은 등록된 수명주기 이벤트에 적절히 응답해야 해요.

더 알아보기 (Learn more)